/*
 * Code Black Mini App: the look of the BlackHookFinance Telegram app (its tg.css and colours): near-black ground, one
 * amber accent, glass cards, green / red only for money that moved, the amber diamond as the mark, a hold-to-confirm
 * trade button, a tab bar with the trade button in the middle, bottom sheets and a number pad.
 */
@property --p {
  syntax: "<number>";
  inherits: true;
  initial-value: 0;
}
@property --a {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}

/*
 * Code Black, design F (the owner's pick, 2026-11-11: bento tiles + wallet cards): warm black ground, flat tiles, one
 * gold, cream for what is chosen, green and red only for money that moved; no glows. Bricolage Grotesque for the big
 * numbers and headings, Geist for the rest.
 */
:root {
  --bg: #0b0a09;
  --bg-elev: #171513;
  --bg-hover: #201d1a;
  --fg: #f3efe6;
  --muted: #a8a297;
  --border: #26231f;
  --border-strong: #3a3631;
  --accent: #f0b94d;
  --accent-hi: #f7d58f;
  --accent-lo: #b9862c;
  --accent-grad: #f0b94d;
  --accent-fg: #17120a;
  --cream: #efe8da;
  --up: #4fdc8c;
  --down: #ff7468;
  --warn: #ffa94d;
  --glass: #171513;
  --display: "Bricolage Grotesque", "Geist", system-ui, sans-serif;
  --sans: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;
  color-scheme: dark;
}

* {
  box-sizing: border-box;
}
html,
body {
  margin: 0;
  background: var(--bg);
  color: var(--fg);
  font-family: var(--sans);
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
  -webkit-tap-highlight-color: transparent;
}
button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
input,
select {
  font: inherit;
  color: var(--fg);
}
svg {
  flex-shrink: 0;
}
.num {
  font-variant-numeric: tabular-nums;
}
.display {
  font-family: var(--display);
}
.muted {
  color: var(--muted);
}
.up {
  color: var(--up);
}
.down {
  color: var(--down);
}
.warn {
  color: var(--warn);
}
.accent {
  color: var(--accent);
}
.hidden {
  display: none !important;
}

/* ---------- frame ---------- */
.root {
  position: relative;
  max-width: 480px;
  min-height: 100dvh;
  margin: 0 auto;
  padding-bottom: calc(104px + env(safe-area-inset-bottom));
  overscroll-behavior: none;
}
.glow {
  position: fixed;
  inset: 0 0 auto 0;
  height: 360px;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(55% 60% at 50% -18%, rgb(232 176 75 / 0.17), transparent 72%),
    radial-gradient(40% 40% at 100% 0%, rgb(122 162 255 / 0.06), transparent 70%);
}
.topbar {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  background: linear-gradient(to bottom, rgb(10 11 13 / 0.94), rgb(10 11 13 / 0.7));
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgb(31 35 42 / 0.7);
}
#screen {
  position: relative;
  z-index: 1;
}
.brand {
  display: flex;
  align-items: center;
  gap: 9px;
}
.mark {
  width: 15px;
  height: 15px;
  margin: 0 4px;
  background: var(--accent);
  transform: rotate(45deg);
  border-radius: 3px;
  box-shadow: 0 0 14px rgb(232 176 75 / 0.6);
}
.word {
  display: flex;
  flex-direction: column;
  font-family: var(--display);
  line-height: 1;
  text-align: left;
}
.word b {
  font-size: 14px;
  letter-spacing: 0.05em;
  white-space: nowrap;
}
.word small {
  margin-top: 3px;
  font-size: 8.5px;
  font-weight: 600;
  letter-spacing: 0.32em;
  color: #aab1bb;
  white-space: nowrap;
}
.word small.accent {
  color: var(--accent);
}
#tickerText {
  overflow: hidden;
  text-overflow: ellipsis;
}
.ticker {
  margin-left: auto;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: rgb(17 19 23 / 0.7);
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}
.dot {
  position: relative;
  width: 8px;
  height: 8px;
}
.dot i {
  position: absolute;
  inset: 0;
  border-radius: 99px;
  background: var(--accent);
}
.dot.off i {
  background: var(--down);
}
.ping {
  animation: ping 1.9s cubic-bezier(0, 0, 0.2, 1) infinite;
}
.net-pill {
  padding: 5px 9px;
  border-radius: 999px;
  border: 1px solid rgb(232 176 75 / 0.35);
  background: rgb(232 176 75 / 0.08);
  color: var(--accent);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.net-pill:empty {
  display: none;
}

.page {
  padding: 16px 16px 0;
}
.page.anim {
  animation: rise 420ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
}
.hello {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.hello p {
  margin: 0;
  font-family: var(--display);
  font-size: 22px;
  font-weight: 700;
}
h1.title {
  margin: 0 0 14px;
  font-family: var(--display);
  font-size: 26px;
}

/* ---------- cards ---------- */
.card {
  background: var(--glass);
  border: 1px solid var(--border);
  border-radius: 20px;
}
.card-strong {
  position: relative;
  overflow: hidden;
  background:
    linear-gradient(180deg, rgb(232 176 75 / 0.05), transparent 38%),
    rgb(14 16 19 / 0.78);
  border: 1px solid rgb(232 176 75 / 0.16);
  border-radius: 22px;
}
.pad {
  padding: 16px;
}
.eyebrow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}
.section {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin: 24px 2px 10px;
}
.section h2 {
  margin: 0;
  font-family: var(--display);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.live {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--muted);
}
.link {
  display: flex;
  align-items: center;
  gap: 2px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.big-usd {
  font-family: var(--display);
  font-size: 40px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.01em;
}
.big-usd small {
  font-size: 26px;
  color: #aab1bb;
}
.split {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 16px;
}
.split > div {
  padding: 9px 10px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: rgb(10 11 13 / 0.45);
}
.split span {
  display: block;
  font-size: 10.5px;
  color: var(--muted);
}
.split b {
  display: block;
  margin-top: 2px;
  font-family: var(--display);
  font-size: 15px;
}
.kv {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 5px 0;
  font-size: 13px;
}
.kv > span:first-child {
  color: var(--muted);
}
.kv > span:last-child {
  font-weight: 600;
  text-align: right;
}
.box {
  margin-top: 12px;
  padding: 8px 12px;
  border-radius: 16px;
  border: 1px solid var(--border);
  background: rgb(10 11 13 / 0.45);
}
.note {
  margin: 8px 0 0;
  font-size: 11.5px;
  color: var(--muted);
  line-height: 1.45;
}
.note.bad {
  color: var(--down);
}
.circuit {
  position: absolute;
  top: 0;
  right: 0;
  pointer-events: none;
}

/* change chip: green up, red down, grey flat */
.chg {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 7px;
  border-radius: 8px;
  font-size: 11.5px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
  background: rgb(139 147 161 / 0.12);
  white-space: nowrap;
}
.chg.md {
  padding: 4px 9px;
  font-size: 13px;
}
.chg.up {
  color: var(--up);
  background: rgb(34 197 94 / 0.13);
}
.chg.down {
  color: var(--down);
  background: rgb(240 77 77 / 0.13);
}
.chg svg {
  width: 8px;
  height: 8px;
}
.chg.down svg {
  transform: rotate(180deg);
}
.badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 8px;
  border-radius: 8px;
  border: 1px solid var(--border-strong);
  font-size: 10.5px;
  font-weight: 700;
  color: var(--muted);
  white-space: nowrap;
}
.badge.good {
  color: var(--up);
  border-color: rgb(34 197 94 / 0.35);
}
.badge.bad {
  color: var(--down);
  border-color: rgb(240 77 77 / 0.4);
}
.badge.amber {
  color: var(--accent);
  border-color: rgb(232 176 75 / 0.4);
}

/* ---------- touch ---------- */
.press {
  user-select: none;
  -webkit-user-select: none;
  transition:
    transform 140ms cubic-bezier(0.2, 0.8, 0.2, 1),
    background-color 140ms,
    border-color 140ms,
    color 140ms,
    filter 140ms;
}
.press:active:not(:disabled) {
  transform: scale(0.96);
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 50px;
  padding: 0 18px;
  border-radius: 16px;
  font-weight: 700;
  font-size: 15px;
}
.btn.block {
  width: 100%;
}
.btn.sm {
  height: 38px;
  padding: 0 12px;
  border-radius: 12px;
  font-size: 13px;
}
.btn.primary {
  background: var(--accent-grad);
  color: var(--accent-fg);
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 0.38),
    inset 0 -2px 0 rgb(0 0 0 / 0.16),
    0 12px 30px -14px rgb(232 176 75 / 0.85);
}
.btn.ghost {
  background: rgb(23 26 31 / 0.72);
  border: 1px solid var(--border-strong);
}
.btn.danger {
  background: rgb(240 77 77 / 0.12);
  border: 1px solid rgb(240 77 77 / 0.45);
  color: var(--down);
}
.btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.icon-btn {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 12px;
  background: rgb(23 26 31 / 0.7);
  border: 1px solid var(--border);
  color: var(--fg);
}
.actions {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin-top: 20px;
}
.action {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  font-weight: 600;
}
.action .tile {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: 18px;
  background: linear-gradient(160deg, rgb(232 176 75 / 0.16), rgb(232 176 75 / 0.03) 60%), rgb(17 19 23 / 0.8);
  border: 1px solid rgb(232 176 75 / 0.28);
  color: var(--accent);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.06);
}
.action.primary .tile {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-fg);
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 0.38),
    0 10px 26px -12px rgb(232 176 75 / 0.9);
}
.action.danger .tile {
  background: rgb(240 77 77 / 0.08);
  border-color: rgb(240 77 77 / 0.35);
  color: var(--down);
}

/* quick-amount chips: the chosen one gets the accent edge and the diamond in its corner */
.chips {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.chips.four {
  grid-template-columns: repeat(4, 1fr);
}
.chip {
  position: relative;
  padding: 10px 12px;
  border-radius: 15px;
  border: 1px solid var(--border-strong);
  background: rgb(17 19 23 / 0.72);
  text-align: left;
}
.chip.center {
  text-align: center;
}
.chip b {
  display: block;
  font-family: var(--display);
  font-size: 16px;
}
.chip span {
  display: block;
  margin-top: 1px;
  overflow: hidden;
  font-size: 10.5px;
  color: var(--muted);
  white-space: nowrap;
  text-overflow: ellipsis;
}
.chip[data-on="true"] {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 11%, rgb(17 19 23 / 0.9));
  box-shadow:
    inset 0 0 0 1px var(--accent),
    0 10px 24px -14px rgb(232 176 75 / 0.9);
}
.chip[data-on="true"]::after {
  content: "";
  position: absolute;
  top: 8px;
  right: 8px;
  width: 6px;
  height: 6px;
  background: var(--accent);
  transform: rotate(45deg);
  box-shadow: 0 0 8px var(--accent);
}
.pills {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: none;
}
.pills::-webkit-scrollbar {
  display: none;
}
.pill {
  display: inline-flex;
  align-items: center;
  height: 32px;
  padding: 0 13px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: rgb(17 19 23 / 0.6);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--muted);
  white-space: nowrap;
}
.pill[data-on="true"] {
  color: var(--accent-fg);
  background: var(--fg);
  border-color: var(--fg);
}

/* segmented control with a sliding pill */
.seg {
  position: relative;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  padding: 4px;
  border-radius: 15px;
  background: rgb(10 11 13 / 0.7);
  border: 1px solid var(--border);
}
.seg-pill {
  position: absolute;
  top: 4px;
  bottom: 4px;
  left: 4px;
  border-radius: 11px;
  transition:
    transform 300ms cubic-bezier(0.3, 1.35, 0.5, 1),
    background-color 200ms;
}
.seg button {
  position: relative;
  z-index: 1;
  height: 38px;
  font-weight: 700;
  font-size: 14px;
  color: var(--muted);
  transition: color 200ms;
}
.seg.sm button {
  height: 32px;
  font-size: 12.5px;
}
.seg button[data-on="true"] {
  color: var(--accent-fg);
}
.seg button[data-on="true"][data-tone="neutral"] {
  color: var(--fg);
}

.switch {
  position: relative;
  width: 48px;
  height: 28px;
  border-radius: 999px;
  background: var(--border-strong);
  transition: background-color 180ms;
}
.switch::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 22px;
  height: 22px;
  border-radius: 999px;
  background: var(--fg);
  box-shadow: 0 2px 6px rgb(0 0 0 / 0.45);
  transition: transform 240ms cubic-bezier(0.3, 1.35, 0.5, 1);
}
.switch[aria-checked="true"] {
  background: var(--accent);
}
.switch[aria-checked="true"]::after {
  transform: translateX(20px);
}

/* hold to confirm: amber fills it while the finger stays down; a light runs along its edge at rest */
.hold {
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 58px;
  border-radius: 18px;
  background: color-mix(in srgb, var(--accent) 9%, rgb(10 11 13 / 0.9));
  box-shadow:
    inset 0 0 0 1.5px var(--accent),
    0 14px 34px -18px rgb(232 176 75 / 0.9);
  color: var(--accent);
  font-weight: 800;
  font-size: 16px;
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}
.hold.sell {
  --accent: #eceef1;
}
.hold[data-state="idle"] {
  transition: --p 320ms cubic-bezier(0.2, 0.8, 0.2, 1);
}
.hold::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1.5px;
  background: conic-gradient(from var(--a), transparent 0 78%, #ffe2a3 90%, transparent 100%);
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  animation: orbit 3s linear infinite;
  pointer-events: none;
}
.hold[data-state="holding"]::before,
.hold[data-state="done"]::before,
.hold:disabled::before {
  animation: none;
  opacity: 0;
}
.hold-fill {
  position: absolute;
  inset: 0;
  background: var(--accent-grad);
  transform-origin: left center;
  transform: scaleX(var(--p));
}
.hold-label {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 0 12px;
  text-align: center;
}
.hold-label.ink {
  color: var(--accent-fg);
  clip-path: inset(0 calc((1 - var(--p)) * 100%) 0 0);
}
.hold:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  box-shadow: inset 0 0 0 1.5px var(--border-strong);
  color: var(--muted);
}
.diamond {
  display: inline-block;
  width: 8px;
  height: 8px;
  background: currentColor;
  transform: rotate(45deg);
}

/* ---------- lists ---------- */
.rows {
  padding: 4px;
}
.row {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 11px 12px;
  border-radius: 16px;
  text-align: left;
}
.row:active {
  background: rgb(23 26 31 / 0.6);
}
.row + .row {
  border-top: 1px solid rgb(31 35 42 / 0.6);
}
.coin {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 12px;
  font-family: var(--display);
  font-size: 13px;
  font-weight: 700;
  color: var(--accent-fg);
  flex-shrink: 0;
}
.grow {
  min-width: 0;
  flex: 1;
}
.grow b {
  display: block;
  overflow: hidden;
  font-size: 14.5px;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.grow span {
  display: block;
  overflow: hidden;
  font-size: 11.5px;
  color: var(--muted);
  white-space: nowrap;
  text-overflow: ellipsis;
}
.right {
  text-align: right;
}
.right b {
  display: block;
  font-family: var(--display);
  font-size: 15px;
}
.right span {
  display: block;
  margin-top: 3px;
}
.empty {
  padding: 28px 16px;
  text-align: center;
  font-size: 13px;
  color: var(--muted);
}
.feed {
  padding: 4px 14px;
}
.feed-item {
  display: flex;
  gap: 10px;
  padding: 10px 0;
  font-size: 12.5px;
  line-height: 1.4;
}
.feed-item + .feed-item {
  border-top: 1px solid rgb(31 35 42 / 0.6);
}
.feed-item .t {
  flex-shrink: 0;
  width: 38px;
  font-size: 11px;
  color: var(--muted);
}
.feed-item .x {
  min-width: 0;
  white-space: pre-line;
  word-break: break-word;
}

/* position card */
.pos {
  padding: 14px;
}
.pos + .pos {
  margin-top: 10px;
}
.pos-head {
  display: flex;
  align-items: center;
  gap: 12px;
}
.pos-net {
  margin-top: 12px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
}
.pos-net .big {
  font-family: var(--display);
  font-size: 26px;
  font-weight: 700;
  line-height: 1;
}
.pos-actions {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
  margin-top: 12px;
}

/* order card */
.order {
  padding: 14px;
}
.order + .order {
  margin-top: 10px;
}
.order-top {
  display: flex;
  align-items: center;
  gap: 10px;
}
.order-prices {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  margin-top: 12px;
}
.order-prices > div {
  padding: 8px 10px;
  border-radius: 13px;
  border: 1px solid var(--border);
  background: rgb(10 11 13 / 0.45);
}
.order-prices span {
  display: block;
  font-size: 10.5px;
  color: var(--muted);
}
.order-prices b {
  display: block;
  margin-top: 2px;
  font-family: var(--display);
  font-size: 14px;
}
.nudge {
  display: grid;
  grid-template-columns: repeat(4, 1fr) 1.3fr;
  gap: 6px;
  margin-top: 10px;
}
.nudge .btn {
  padding: 0;
}
.bar {
  height: 6px;
  margin-top: 6px;
  border-radius: 99px;
  background: var(--border-strong);
  overflow: hidden;
}
.bar i {
  display: block;
  height: 100%;
  border-radius: 99px;
  background: var(--accent);
}

/* ---------- inputs ---------- */
.field {
  width: 100%;
  height: 48px;
  padding: 0 14px;
  border-radius: 14px;
  border: 1px solid var(--border-strong);
  background: rgb(10 11 13 / 0.7);
  outline: none;
}
.field:focus {
  border-color: var(--accent);
}
.search {
  position: relative;
}
.search svg {
  position: absolute;
  top: 15px;
  left: 14px;
  color: var(--muted);
}
.search .field {
  padding-left: 40px;
}
label.lbl {
  display: block;
  margin: 14px 0 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.amount-line {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 8px 0 12px;
}
.amount-line .n {
  font-family: var(--display);
  font-size: 34px;
  font-weight: 700;
  line-height: 1;
}

/* ---------- tab bar with the diamond trade button ---------- */
.tabbar {
  position: fixed;
  left: 50%;
  bottom: 0;
  z-index: 40;
  width: 100%;
  max-width: 480px;
  transform: translateX(-50%);
  padding: 0 12px calc(10px + env(safe-area-inset-bottom));
  pointer-events: none;
}
.tabbar-inner {
  pointer-events: auto;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  height: 66px;
  border-radius: 24px;
  border: 1px solid var(--border-strong);
  background: rgb(13 14 17 / 0.88);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  box-shadow:
    0 -12px 40px -14px rgb(0 0 0 / 0.9),
    inset 0 1px 0 rgb(255 255 255 / 0.04);
}
.tab {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  font-size: 10.5px;
  font-weight: 600;
  color: var(--muted);
}
.tab[data-on="true"] {
  color: var(--fg);
}
.tab[data-on="true"] svg {
  color: var(--accent);
}
.tab[data-on="true"]::before {
  content: "";
  position: absolute;
  top: -4px;
  width: 7px;
  height: 7px;
  background: var(--accent);
  transform: rotate(45deg);
  box-shadow: 0 0 10px 1px rgb(232 176 75 / 0.8);
}
.fab-slot {
  display: grid;
  place-items: center;
}
.fab {
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  margin-top: -30px;
  border-radius: 17px;
  transform: rotate(45deg);
  background: var(--accent-grad);
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 0.45),
    0 0 0 5px rgb(7 8 10 / 0.96),
    0 14px 30px -6px rgb(232 176 75 / 0.75);
}
.fab:active {
  transform: rotate(45deg) scale(0.92);
}
.fab svg {
  transform: rotate(-45deg);
  color: var(--accent-fg);
}

/* ---------- sheets ---------- */
.backdrop {
  position: fixed;
  inset: 0;
  z-index: 50;
  background: rgb(0 0 0 / 0.6);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
  animation: fade 200ms both;
}
.sheet {
  position: fixed;
  left: 50%;
  bottom: 0;
  z-index: 51;
  width: 100%;
  max-width: 480px;
  max-height: 90dvh;
  overflow-y: auto;
  transform: translateX(-50%);
  padding: 10px 16px calc(18px + env(safe-area-inset-bottom));
  border-radius: 28px 28px 0 0;
  border: 1px solid var(--border-strong);
  border-bottom: 0;
  background: #0e1013;
  box-shadow: 0 -20px 60px -10px rgb(0 0 0 / 0.8);
  animation: sheet-in 340ms cubic-bezier(0.2, 0.9, 0.25, 1) both;
}
.grabber {
  width: 40px;
  height: 4px;
  margin: 0 auto 14px;
  border-radius: 99px;
  background: var(--border-strong);
}
.sheet-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.sheet-head h2 {
  margin: 0;
  font-family: var(--display);
  font-size: 18px;
}
.keypad {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 14px;
}
.key {
  height: 54px;
  border-radius: 15px;
  font-family: var(--display);
  font-size: 23px;
  font-weight: 600;
  background: rgb(23 26 31 / 0.75);
  border: 1px solid var(--border);
}
.key:active {
  background: var(--border-strong);
}
.keypad-value {
  padding: 18px 0 6px;
  text-align: center;
  font-family: var(--display);
  font-size: 40px;
  font-weight: 700;
}

.toast {
  position: fixed;
  left: 50%;
  bottom: calc(92px + env(safe-area-inset-bottom));
  z-index: 60;
  max-width: 440px;
  width: calc(100% - 32px);
  transform: translateX(-50%);
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid var(--border-strong);
  background: #15181d;
  box-shadow: 0 12px 40px -10px rgb(0 0 0 / 0.9);
  font-size: 13px;
  line-height: 1.4;
  animation: rise 260ms both;
}
.skeleton {
  display: block;
  border-radius: 10px;
  background: linear-gradient(90deg, #14171c 25%, #1b1f26 50%, #14171c 75%);
  background-size: 200% 100%;
  animation: shimmer 1.4s infinite;
}

@keyframes orbit {
  to {
    --a: 360deg;
  }
}
@keyframes ping {
  0% {
    transform: scale(1);
    opacity: 0.75;
  }
  80%,
  100% {
    transform: scale(2.8);
    opacity: 0;
  }
}
@keyframes rise {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
}
@keyframes fade {
  from {
    opacity: 0;
  }
}
@keyframes sheet-in {
  from {
    transform: translate(-50%, 100%);
  }
  to {
    transform: translate(-50%, 0);
  }
}
@keyframes shimmer {
  to {
    background-position: -200% 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .ping,
  .page.anim,
  .hold::before,
  .sheet,
  .backdrop,
  .toast {
    animation: none;
  }
}

/* ---------- 2026-11-11: denser screens, text size, the new screens ---------- */
/* Text size (Settings → Display): the whole app scales; Small is the default (owner: more on one screen). */
html[data-size="small"] .root,
html[data-size="small"] .tabbar,
html[data-size="small"] #sheets {
  zoom: 0.86;
}
html[data-size="large"] .root,
html[data-size="large"] .tabbar,
html[data-size="large"] #sheets {
  zoom: 1.12;
}
.topbar { gap: 8px; }
.ticker { min-width: 0; overflow: hidden; }
#tickerText { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.top-btn { width: 34px; height: 34px; flex: none; }
#pausedBadge { flex: none; }
.wtag { margin-left: 6px; font-size: 10px; font-weight: 600; color: var(--muted); border: 1px solid var(--line, #2c323b); border-radius: 6px; padding: 1px 5px; vertical-align: middle; }
.wallet-head { display: flex; align-items: center; gap: 10px; margin: 14px 2px 6px; font-size: 13px; }
.wallet-head b { flex: 1; }
.wallet-row { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-top: 1px solid rgb(255 255 255 / .06); }
.wallet-row:first-of-type { border-top: 0; }
.wallet-row .grow b { display: block; }
.pos-head.press { cursor: pointer; }
.pos-actions.five { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.pos-actions.five .btn { padding-left: 4px; padding-right: 4px; font-size: 12px; }
.fills { display: grid; gap: 2px; font-size: 12px; }
.fill { display: grid; grid-template-columns: 38px 52px 1fr auto auto; gap: 8px; align-items: center; padding: 4px 2px; border-top: 1px solid rgb(255 255 255 / .05); }
.fill .num { text-align: right; }
.chips.five { grid-template-columns: repeat(5, 1fr); }
.chips.six { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; }
.spark-btn { display: block; width: 100%; margin-top: 14px; padding: 0; background: none; border: 0; color: inherit; text-align: left; }
.spark-btn .right { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.chart-box { min-height: 260px; }
.trades { padding: 6px 10px; }
.trow { display: grid; grid-template-columns: 44px 38px 1fr 1fr 1fr; gap: 6px; padding: 6px 0; font-size: 12px; border-top: 1px solid rgb(255 255 255 / .05); }
.trow.head { color: var(--muted); border-top: 0; font-size: 11px; }
.trow span:nth-child(n + 3) { text-align: right; }
.ask { white-space: pre-line; font-size: 15px; line-height: 1.45; margin: 4px 2px; }
.field.mono, .mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

/* the chart's indicators: a chip each, its colour as a dot; the trade list's wallets; the wallet sheet */
.ind-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.ind { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; border: 1px solid var(--border-strong); font-size: 12px; font-weight: 600; color: var(--muted); background: rgb(255 255 255 / .02); }
.ind i { width: 8px; height: 8px; border-radius: 50%; background: var(--c); opacity: .35; }
.ind[data-on="true"] { color: var(--fg); border-color: color-mix(in srgb, var(--c) 55%, transparent); background: color-mix(in srgb, var(--c) 12%, transparent); }
.ind[data-on="true"] i { opacity: 1; box-shadow: 0 0 8px var(--c); }
.chart-card { padding: 4px 2px 2px; }
.rsi-box { height: 92px; border-top: 1px solid rgb(255 255 255 / .05); }
.trow .maker { display: inline-flex; align-items: center; justify-content: flex-end; gap: 2px; font: inherit; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; color: var(--accent); }
.maker-head { display: flex; align-items: center; gap: 8px; }
.maker-head .mono { flex: 1; font-size: 13px; }
.mtiles { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; }
.mtile { display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; border-radius: 14px; border: 1px solid var(--border); background: rgb(255 255 255 / .025); }
.mtile span { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .08em; }
.mtile b { font-size: 17px; }
.mtile small { font-size: 11px; color: var(--muted); }

/* ---------- the mark and the name (2026-11-11) ---------- */
.mark { display: none; }
.logo { display: block; filter: drop-shadow(0 0 10px rgb(232 176 75 / 0.35)); }
.brand .logo { width: 26px; height: 26px; }
.word b { font-weight: 700; letter-spacing: 0.14em; font-size: 13.5px; }
.word small { color: var(--accent); letter-spacing: 0.34em; font-size: 8px; }
.word small.accent { color: #ff9f43; }
/* the login: the mark big, the name, one line */
.hero { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 26px 0 8px; }
.hero .logo { width: 84px; height: 84px; filter: drop-shadow(0 0 26px rgb(232 176 75 / 0.45)); }
.hero h1 { font-family: var(--display); font-weight: 700; letter-spacing: 0.22em; font-size: 22px; margin: 18px 0 4px; }
.hero p { margin: 0; color: var(--muted); font-size: 13px; letter-spacing: 0.04em; }
.gold-line { height: 1px; margin: 18px auto 4px; width: 64%; background: linear-gradient(90deg, transparent, rgb(232 176 75 / 0.65), transparent); }
.big-usd, .display { letter-spacing: -0.01em; }

a.btn { color: inherit; text-decoration: none; display: inline-flex; align-items: center; }

/* `hidden` always hides (a class with its own display, like .badge or .icon-btn, used to win: the PAUSED badge showed
   while the vault was not paused, and the Activity / Settings buttons on the login screen). */
[hidden] {
  display: none !important;
}

/* ---------- design F (2026-11-11): flat tiles, one gold, cream for the chosen; compact ---------- */
/* Compact on purpose (owner, 2026-11-11: smaller cards and tiles, more data on one screen, less scrolling). */
.glow,
.circuit {
  display: none;
}
.root {
  padding-bottom: calc(84px + env(safe-area-inset-bottom));
}
.topbar {
  gap: 7px;
  padding: 8px 12px;
  background: rgb(11 10 9 / 0.95);
  border-bottom: 1px solid var(--border);
}
.brand {
  gap: 7px;
}
.logo,
.hero .logo {
  filter: none;
}
.brand .logo {
  width: 24px;
  height: 24px;
}
.word b {
  font-family: var(--display);
  font-size: 18px;
  font-weight: 800;
  letter-spacing: -0.04em;
}
.word b i {
  font-style: normal;
  color: var(--accent);
}
.word small {
  margin-top: 2px;
  font-family: var(--sans);
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: 0.16em;
  color: var(--muted);
}
.word small:empty {
  display: none;
}
.word small.accent {
  color: var(--warn);
}
.ticker {
  padding: 5px 10px;
  background: var(--bg-elev);
  border-color: var(--border);
}
.dot i {
  background: var(--up);
}
.top-btn,
.icon-btn {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--bg-hover);
  border-color: var(--border);
}
.page {
  padding: 10px 12px 0;
}
h1.title {
  margin: 2px 2px 10px;
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -0.03em;
}
.card,
.card-strong {
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 18px;
  box-shadow: none;
}
.pad {
  padding: 12px;
}
.section {
  margin: 14px 2px 6px;
}
.section h2 {
  font-size: 14px;
  letter-spacing: -0.01em;
}
.rows {
  padding: 2px 4px;
}
.row {
  gap: 10px;
  padding: 8px;
  border-radius: 12px;
}
.row + .row {
  border-top-color: var(--border);
}
.row:active {
  background: var(--bg-hover);
}
.grow b {
  font-size: 13.5px;
}
.grow span {
  font-size: 11px;
}
.right b {
  font-family: var(--sans);
  font-size: 13.5px;
  font-weight: 600;
}
.right span {
  margin-top: 2px;
}
.empty {
  padding: 16px 12px;
  font-size: 12.5px;
}
.big-usd {
  font-weight: 800;
  letter-spacing: -0.05em;
}
.big-usd small {
  color: inherit;
  opacity: 0.7;
}
.split {
  gap: 6px;
  margin-top: 10px;
}
.split > div {
  padding: 7px 8px;
  border-radius: 12px;
  background: var(--bg);
}
.split b {
  font-size: 14px;
}
.box {
  margin-top: 10px;
  padding: 6px 10px;
  border-radius: 13px;
  background: var(--bg);
}
.kv {
  padding: 4px 0;
  font-size: 12.5px;
}
.feed {
  padding: 2px 12px;
}
/* a coin: its DexScreener logo when it has one, else its first letters on a colour from the symbol */
.coin {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  overflow: hidden;
  font-size: 11px;
  color: var(--accent-fg);
}
.coin img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.chg {
  padding: 2px 6px;
  border-radius: 7px;
  font-size: 11px;
}
.chg.up {
  background: color-mix(in srgb, var(--up) 14%, transparent);
}
.chg.down {
  background: color-mix(in srgb, var(--down) 14%, transparent);
}
.badge.good {
  border-color: color-mix(in srgb, var(--up) 40%, transparent);
}
.badge.bad {
  border-color: color-mix(in srgb, var(--down) 45%, transparent);
}
.badge.amber {
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
}
.btn {
  height: 44px;
  border-radius: 14px;
  font-size: 14px;
}
.btn.sm {
  height: 34px;
  border-radius: 11px;
  font-size: 12.5px;
}
.btn.primary {
  background: var(--accent);
  box-shadow: none;
}
.btn.ghost {
  background: var(--bg-hover);
  border-color: var(--border-strong);
}
.chip {
  padding: 8px 10px;
  border-radius: 13px;
  background: var(--bg-hover);
}
.chip b {
  font-size: 14.5px;
}
.chip[data-on="true"] {
  border-color: var(--cream);
  background: var(--cream);
  color: #17120a;
  box-shadow: none;
}
.chip[data-on="true"] span {
  color: #4a443a;
}
.chip[data-on="true"]::after {
  display: none;
}
.pill {
  height: 30px;
  padding: 0 12px;
  background: var(--bg-hover);
}
.pill[data-on="true"] {
  border-color: var(--cream);
  background: var(--cream);
  color: #17120a;
}
.seg {
  border-radius: 13px;
  background: var(--bg);
}
.seg-pill {
  border-radius: 10px;
}
.seg button {
  height: 34px;
  font-size: 13.5px;
}
.seg.sm button {
  height: 28px;
  font-size: 12px;
}
.field {
  height: 44px;
  border-radius: 13px;
  background: var(--bg);
}
.amount-line .n {
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -0.04em;
}
.sheet {
  background: var(--bg-elev);
  border-color: var(--border-strong);
}
.key {
  height: 48px;
  border-radius: 14px;
  background: var(--bg-hover);
}
.keypad-value {
  padding: 12px 0 4px;
  font-size: 36px;
  font-weight: 800;
  letter-spacing: -0.04em;
}
.toast {
  bottom: calc(80px + env(safe-area-inset-bottom));
  background: #201d1a;
}

/* the tab bar: flat, the active tab in cream, the trade button a gold circle */
.tabbar {
  padding: 0 10px calc(8px + env(safe-area-inset-bottom));
}
.tabbar-inner {
  height: 58px;
  border-radius: 22px;
  border-color: #2c2925;
  background: rgb(23 21 19 / 0.97);
  box-shadow: 0 -10px 30px -12px rgb(0 0 0 / 0.9);
}
.tab {
  font-size: 10px;
}
.tab[data-on="true"],
.tab[data-on="true"] svg {
  color: var(--cream);
}
.tab[data-on="true"]::before {
  display: none;
}
.fab {
  width: 48px;
  height: 48px;
  margin-top: 0;
  border-radius: 50%;
  transform: none;
  background: var(--accent);
  box-shadow: none;
}
.fab:active {
  transform: scale(0.92);
}
.fab svg {
  transform: none;
}

/* Home: the wallet cards behind the vault card */
.wallet-stack {
  display: flex;
  flex-direction: column;
}
.wpeek {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  height: 58px;
  margin: 0 10px -24px;
  padding: 9px 14px 0;
  border-radius: 18px;
  background: var(--cream);
  color: #17120a;
  font-size: 12px;
  font-weight: 700;
  text-align: left;
}
.wpeek.back {
  margin: 0 20px -24px;
  background: #2c2925;
  color: #d6cfc2;
  font-weight: 600;
}
.wpeek .grow {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.vault-card {
  position: relative;
  padding: 12px 14px;
  border-radius: 20px;
  background: var(--accent);
  color: #17120a;
}
.vault-top {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 24px;
}
.vault-top .eyebrow {
  color: #17120a;
  font-size: 10.5px;
  letter-spacing: 0.14em;
}
.vault-top .eye {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  margin: -4px 0;
  color: #17120a;
}
.vault-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 22px;
  margin-left: auto;
  padding: 0 9px;
  border-radius: 999px;
  background: #17120a;
  color: var(--accent);
  font-size: 11px;
  font-weight: 700;
}
.vault-pill.bad {
  color: #ffb4ab;
}
.vault-card .big-usd {
  display: block;
  margin-top: 6px;
  font-size: 34px;
}
.vault-card .big-usd small {
  font-size: 20px;
}
.vault-line {
  margin-top: 4px;
  font-size: 12px;
  font-weight: 600;
}
.alloc {
  display: flex;
  gap: 3px;
  height: 6px;
  margin-top: 10px;
}
.alloc i {
  min-width: 3px;
  border-radius: 3px;
}
.alloc-legend {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  margin-top: 6px;
  font-size: 10.5px;
  font-weight: 500;
}
.alloc-legend b {
  display: block;
  font-size: 12.5px;
  font-weight: 700;
}
/* Home: tiles */
.tile-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px 4px;
}
.tile-head h2 {
  margin: 0;
  flex: 1;
  font-family: var(--display);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.tile-head h2 small {
  margin-left: 6px;
  font-family: var(--sans);
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
}
.tile-head .add {
  height: 30px;
  margin: -4px -4px -4px 0;
  padding: 0 6px;
  color: var(--accent);
  font-size: 12px;
  font-weight: 600;
}
.home-gap {
  height: 8px;
}
.duo {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  margin-top: 8px;
}
.mini {
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 9px 12px;
  border-radius: 16px;
  border: 1px solid var(--border);
  background: var(--bg-elev);
  text-align: left;
}
.mini > span {
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
}
.mini > b {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--display);
  font-size: 19px;
  font-weight: 800;
  letter-spacing: -0.03em;
}
.mini > b i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
}
.mini > small {
  overflow: hidden;
  font-size: 10.5px;
  color: var(--muted);
  white-space: nowrap;
  text-overflow: ellipsis;
}
/* the watchlist as a table */
.wl {
  padding-bottom: 4px;
}
.wl-head,
.wl-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 68px 48px 52px 54px;
  align-items: center;
  gap: 5px;
  padding: 0 12px;
}
.wl-head {
  height: 18px;
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--muted);
}
.wl-head span:nth-child(n + 2),
.wl-row > b,
.wl-row > .wl-n,
.wl-row > .chgc {
  text-align: right;
  white-space: nowrap;
}
.wl-row > .wl-n {
  font-size: 11.5px;
  color: var(--muted);
}
.wl-row {
  width: 100%;
  height: 42px;
  border-top: 1px solid var(--border);
  text-align: left;
}
.wl-row:active {
  background: var(--bg-hover);
}
.wl-coin {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.wl-coin .coin {
  width: 26px;
  height: 26px;
  font-size: 9.5px;
}
.wl-coin .grow b {
  font-size: 13px;
}
.wl-coin .grow span {
  font-size: 10.5px;
}
.wl-row > b {
  font-size: 13px;
  font-weight: 600;
}
.wl-row > .chgc {
  font-size: 12px;
  font-weight: 600;
}

/* the trade ticket: cream, the same controls drawn dark on it */
.ticket {
  margin-top: 10px;
  padding: 12px;
  border-radius: 20px;
  background: var(--cream);
  color: #17120a;
  --fg: #17120a;
  --muted: #5d564a;
  --border: #d8cdb8;
  --border-strong: #c7bba4;
  --bg: #e2d9c6;
  --bg-elev: #f6f1e7;
  --bg-hover: #fbf8f2;
  --glass: #f6f1e7;
  --up: #0a7a3d;
  --down: #b42318;
  --warn: #9a5800;
  color-scheme: light;
}
.ticket .chip {
  background: var(--bg-elev);
}
.ticket .chip[data-on="true"] {
  border-color: #17120a;
  background: #17120a;
  color: var(--cream);
}
.ticket .chip[data-on="true"] span {
  color: #c9c2b5;
}
.ticket .seg button[data-on="true"][data-tone="ink"] {
  color: var(--cream);
}
.ticket .field {
  background: var(--bg-elev);
  color: #17120a;
}
.ticket .badge {
  border-color: var(--border-strong);
}

/* slide to confirm: drag the gold knob to the end of the track */
.slide {
  position: relative;
  height: 52px;
  overflow: hidden;
  border-radius: 999px;
  background: #17120a;
  box-shadow: inset 0 0 0 1px #3a3631;
  color: var(--cream);
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
  --x: 0px;
}
.slide-fill {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: calc(var(--x) + 52px);
  border-radius: inherit;
  background: rgb(240 185 77 / 0.22);
}
.slide-label {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 14px 0 58px;
  overflow: hidden;
  font-size: 14px;
  font-weight: 700;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.slide-knob {
  position: absolute;
  top: 4px;
  left: 4px;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--accent);
  color: #17120a;
  transform: translateX(var(--x));
  touch-action: none;
}
.slide.sell .slide-knob {
  background: var(--cream);
}
.slide[data-state="idle"] .slide-knob,
.slide[data-state="idle"] .slide-fill {
  transition:
    transform 260ms cubic-bezier(0.2, 0.8, 0.2, 1),
    width 260ms cubic-bezier(0.2, 0.8, 0.2, 1);
}
.slide[data-disabled="true"] {
  opacity: 0.5;
}
.slide[data-disabled="true"] .slide-knob {
  cursor: not-allowed;
}
@media (prefers-reduced-motion: reduce) {
  .slide[data-state="idle"] .slide-knob,
  .slide[data-state="idle"] .slide-fill {
    transition: none;
  }
}
/* the login: the mark and the wordmark */
.hero {
  padding: 22px 0 14px;
}
.hero .logo {
  width: 72px;
  height: 72px;
}
.hero h1 {
  margin: 14px 0 2px;
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -0.045em;
}
.hero h1 i {
  font-style: normal;
  color: var(--accent);
}
/* positions and orders, compact (owner, 2026-11-11) */
.pos,
.order {
  padding: 10px 12px;
}
.pos + .pos,
.order + .order {
  margin-top: 8px;
}
.pos-net {
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}
.pos-net .eyebrow {
  flex: 1;
  font-size: 10px;
}
.pos-net .big {
  font-size: 20px;
  font-weight: 800;
  letter-spacing: -0.03em;
}
.pos-actions {
  margin-top: 8px;
}
.pos-actions .btn {
  height: 34px;
  border-radius: 11px;
}
.order-prices {
  gap: 6px;
  margin-top: 8px;
}
.order-prices > div {
  padding: 6px 8px;
  border-radius: 11px;
  background: var(--bg);
}
.nudge {
  margin-top: 8px;
}
.nudge .btn {
  height: 34px;
}
/* the Vault admin screen (admin.js): long addresses wrap inside the cream check */
.admin-sum {
  display: block;
  margin-bottom: 8px;
  font-size: 14px;
  line-height: 1.4;
}
.admin-val {
  word-break: break-all;
  font-size: 11.5px;
}

/* ---------- layout A · Bento (owner, 2026-11-12: "round 2 layout A Bento"; replaces design F's look) ----------
   The design board: brand-canvas BentoHome / BentoCoin. Near-black ground, slate tiles with a hairline border, one gold,
   off-white text, green and red only for money; Geist everywhere (Geist Mono for the ticker's price). The colours are
   tokens, so Settings → Display can change them (theme.js-like code in app.js: applyTheme); these are the defaults. */
:root {
  --bg: #0a0a0b;
  --bg-elev: #141416;
  --bg-hover: #1f1f23;
  --fg: #f4f2ee;
  --muted: #9a9aa2;
  --dim: #77777f;
  --border: #222226;
  --border-strong: #2e2e34;
  --accent: #f2b84b;
  --accent-hi: #ffd88a;
  --accent-lo: #b9862c;
  --accent-grad: #f2b84b;
  --accent-fg: #17120a;
  --cream: #e9e4da;
  --coins: #6b6458;
  --up: #3ddc84;
  --down: #ff6b6b;
  --glass: #141416;
  --display: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;
  --sans: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: "Geist Mono", ui-monospace, "SFMono-Regular", monospace;
}
.topbar {
  background: color-mix(in srgb, var(--bg) 95%, transparent);
}
.logo {
  color: var(--accent);
}
.word b {
  font-weight: 700;
  font-size: 17px;
  letter-spacing: -0.03em;
}
.ticker {
  border-radius: 12px;
  background: var(--bg-elev);
  border: 1px solid var(--border);
}
#tickerText {
  font-family: var(--mono);
  font-weight: 600;
}
.top-btn,
.icon-btn {
  border-radius: 12px;
  background: var(--bg-elev);
  border: 1px solid var(--border);
}
/* Home: the net worth card is a tile now (no gold card, no wallet cards behind it: those are the Wallets section). */
.vault-card {
  padding: 14px 16px;
  border-radius: 22px;
  background: var(--bg-elev);
  border: 1px solid var(--border);
  color: var(--fg);
}
.vault-top .eyebrow {
  color: var(--muted);
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}
.vault-top .eye {
  color: var(--muted);
}
.vault-pill {
  background: color-mix(in srgb, var(--up) 12%, transparent);
  color: var(--up);
  font-weight: 600;
}
.vault-pill .live-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}
.vault-pill.bad {
  background: color-mix(in srgb, var(--down) 12%, transparent);
  color: var(--down);
}
.vault-card .big-usd {
  margin-top: 8px;
  font-size: 40px;
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 1;
}
.vault-card .big-usd small {
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--dim);
}
.vault-line {
  margin-top: 8px;
  color: var(--muted);
  font-size: 12.5px;
}
.vault-line .up,
.vault-line .down {
  font-weight: 600;
}
.alloc {
  height: 8px;
  margin-top: 12px;
}
.alloc i {
  border-radius: 4px;
}
.alloc-legend span {
  color: var(--muted);
}
.alloc-legend b {
  color: var(--fg);
}
.alloc-legend span::before {
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-right: 5px;
  border-radius: 2px;
  background: var(--swatch, var(--accent));
  vertical-align: -0.5px;
}
.card,
.mini {
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: 20px;
}
.mini > b {
  font-weight: 700;
}
.fab {
  background: var(--accent);
  color: var(--accent-fg);
}

/* the chart's timeframe button (it opens every frame in a sheet), first in the indicator row */
.frame-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 10px 6px 12px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--accent) 55%, transparent);
  background: color-mix(in srgb, var(--accent) 12%, transparent);
  color: var(--fg);
  font-size: 12px;
}
.frame-btn b {
  font-family: var(--mono);
  font-weight: 600;
}
.frame-btn svg {
  color: var(--accent);
}
