:root {
  color-scheme: dark;
  --bg: #07070b;
  --surface: #0b0c14;
  --surface-2: #11121d;
  --surface-3: #171824;
  --line: #262a43;
  --line-strong: #3b4064;
  --text: #f5f5f9;
  --muted: #858bb1;
  --green: #b6ee58;
  --green-soft: #1b2a10;
  --accent-fill: #b6ee58;
  --amber: #ffb800;
  --amber-soft: #2b2206;
  --red: #ff6259;
  /* Freehand chart annotations keep their own ink so a stroke stays readable
     over green candles, red candles and both panel themes. */
  --draw-stroke: #ffb800;
  /* Buy is green and sell is red wherever a side is shown. The paired ink is
     what stays readable on the filled form of each, so the text does not have
     to be guessed per rule. */
  --buy-fill: #b6ee58;
  --buy-ink: #041009;
  --sell-fill: #ff6259;
  --sell-ink: #1a0605;
  --brand: #6f8cff;
  --brand-violet: #9b6bff;
  --brand-soft: #151b3d;
  --grid-rgb: 111, 140, 255;
  --mono: "Courier New", Courier, monospace;
  --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

:root[data-theme="light"] {
  color-scheme: light;
  --bg: #f6f6f9;
  --surface: #ffffff;
  --surface-2: #eff0f6;
  --surface-3: #e7e8f1;
  --line: #d6d8e5;
  --line-strong: #aeb2cb;
  --text: #1e202f;
  --muted: #595f8a;
  --green: #668a24;
  --green-soft: #eef5dc;
  --amber: #906000;
  --amber-soft: #fff3d3;
  --red: #b52c28;
  --draw-stroke: #b85f00;
  --accent-fill: #b6ee58;
  /* On a light surface the red fills darken, so their ink flips to white. */
  --buy-fill: #b6ee58;
  --buy-ink: #041009;
  --sell-fill: #b52c28;
  --sell-ink: #ffffff;
  --brand: #3b56d4;
  --brand-violet: #6d3fd4;
  --brand-soft: #e7ebff;
  --grid-rgb: 59, 86, 212;
  --light-surface: #ffffff;
  --light-border: #c9cbdc;
  --light-ink: #3c405e;
}
.theme-toggle {
  flex: 0 0 auto;
  min-width: 64px;
  width: auto;
  height: 38px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line-strong);
  border-radius: 9px;
  color: var(--text);
  background: var(--surface-2);
  padding: 0 12px;
  font: 800 10px var(--mono);
  cursor: pointer;
}
.theme-toggle:hover { border-color: var(--green); }
.docs-topbar .theme-toggle { justify-self: end; }
.docs-topbar:has(.theme-toggle) { grid-template-columns: auto 1fr auto auto; }
:root[data-theme="light"] .topbar,
:root[data-theme="light"] .signal-caption { background: var(--surface); }
:root[data-theme="light"] .brand img { background: #0b0c14; }
:root[data-theme="light"] .notice.error,
:root[data-theme="light"] .trade-notice.error { color: var(--red); background: #fff0ed; }
:root[data-theme="light"] .primary-button,
:root[data-theme="light"] #request-button,
:root[data-theme="light"] #creator-chat-connect,
:root[data-theme="light"] #creator-chat-send { background: #b6ee58; color: #191c36; }

.launch-studio, .origination-policy { margin: 28px 0; padding: 28px; border: 1px solid var(--line); background: var(--surface); border-radius: 12px; }
.launch-studio header > span, .studio-brief aside > span, .origination-policy > span { color: var(--green); font: 11px var(--mono); letter-spacing: .1em; }
.launch-studio h2, .origination-policy h2 { font-size: 28px; margin: 12px 0; }
.launch-studio p, .origination-policy p { color: var(--muted); line-height: 1.65; }
.studio-paths { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 24px 0; }
/* The launch door is one row of choices, the way the network's own door is: a
   token first, then every kind of work an Agent can be paid to do. */
.launch-kinds { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 20px; }
.launch-kind { padding: 8px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface-2); color: var(--muted); font: 11px/1 var(--mono); text-decoration: none; }
.launch-kind:hover { border-color: var(--green); color: var(--text); }
.launch-kind.is-active { border-color: var(--green); background: var(--green-soft); color: var(--text); }
/* The other ways in are links, not cards: the form is the page, and the rest
   are one click away. */
.launch-alt { display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline; margin: 0 0 18px; }
.launch-alt a { color: var(--muted); font: 11px/1 var(--mono); text-decoration: none; border-bottom: 1px solid var(--line); padding-bottom: 3px; }
.launch-alt a:hover { color: var(--green); border-color: var(--green); }
.studio-paths button { display: flex; flex-direction: column; gap: 12px; text-align: left; padding: 22px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); cursor: pointer; }
.studio-paths button[aria-pressed="true"] { border-color: var(--green); background: var(--green-soft); }
.studio-paths b { color: var(--green); font: 10px var(--mono); }
.studio-paths strong { font-size: 21px; }
.studio-paths span { color: var(--muted); line-height: 1.6; }
.studio-brief { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 28px; }
.studio-brief label { display: grid; gap: 8px; margin-bottom: 16px; }
.studio-brief input, .studio-brief textarea { width: 100%; padding: 12px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--bg); color: var(--text); font: inherit; }
.studio-brief textarea { resize: vertical; }
.studio-brief aside { padding: 24px; border-left: 1px solid var(--line); }
.studio-brief h3 { font-size: 25px; }
.studio-brief em { display: inline-block; color: var(--green); font: 12px var(--mono); }
.studio-brief a { color: var(--green); }
.brief-review { margin-top: 24px; border-top: 1px solid var(--line); padding-top: 20px; }
.brief-review li { margin: 10px 0; color: var(--muted); }
.origination-policy dl { display: flex; gap: 40px; flex-wrap: wrap; }
.origination-policy dt { color: var(--muted); }
.table-wrap { position: relative; }
.origination-policy dd { margin: 8px 0; color: var(--green); font-size: 28px; }
@media (max-width: 760px) { .studio-paths, .studio-brief { grid-template-columns: 1fr; } .launch-studio, .origination-policy { padding: 18px; } .studio-brief aside { padding: 20px 0; border-left: 0; border-top: 1px solid var(--line); } }

* { box-sizing: border-box; }
html, body { min-width: 320px; min-height: 100%; }
body { margin: 0; color: var(--text); background: var(--bg); font-family: var(--sans); font-size: 13px; }
body::before { content: ""; position: fixed; inset: 0; pointer-events: none; opacity: .27; background-image: linear-gradient(rgba(var(--grid-rgb),.05) 1px, transparent 1px), linear-gradient(90deg,rgba(var(--grid-rgb),.05) 1px,transparent 1px); background-size: 28px 28px; }
button, input { color: inherit; font: inherit; }
button, a { touch-action: manipulation; }
button:focus-visible, a:focus-visible, input:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
button:disabled { opacity: .42; cursor: not-allowed; }
[hidden] { display: none !important; }
.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; }

.topbar { position: sticky; z-index: 30; top: 0; height: 62px; display: grid; grid-template-columns: 240px minmax(260px, 560px) 1fr; align-items: center; gap: 18px; padding: 0 14px; border-bottom: 1px solid var(--line); background: rgba(6,10,8,.96); backdrop-filter: blur(16px); }
.brand { display: flex; align-items: center; gap: 9px; color: var(--text); font: 900 14px var(--mono); letter-spacing: -.05em; text-decoration: none; }
.brand img { border: 1px solid var(--line-strong); background: var(--surface-2); }
.brand em { margin-left: 5px; color: var(--amber); font-style: normal; }
.global-search { height: 36px; display: flex; align-items: center; gap: 9px; padding: 0 10px; border: 1px solid var(--line); background: var(--light-surface, #050509); }
.global-search:focus-within { border-color: var(--line-strong); box-shadow: 0 0 0 1px rgba(var(--grid-rgb),.35); }
.global-search b { color: var(--muted); font-size: 18px; }
.global-search input { min-width: 0; flex: 1; border: 0; outline: 0; color: var(--text); background: transparent; font: 12px var(--mono); }
.global-search kbd { padding: 2px 6px; border: 1px solid var(--line); color: var(--muted); background: var(--surface); font: 10px var(--mono); }
.top-actions { display: flex; justify-content: flex-end; align-items: center; gap: 8px; }
.network-pill { height: 34px; display: flex; align-items: center; gap: 7px; padding: 0 10px; border: 1px solid var(--line); color: var(--muted); font: 10px var(--mono); text-transform: uppercase; }
.independence-disclosure { position: relative; }
.independence-disclosure > summary { min-height: 34px; display: flex; align-items: center; padding: 0 10px; border: 1px solid var(--line); color: var(--muted); background: var(--surface); cursor: pointer; list-style: none; font: 800 9px var(--mono); text-transform: uppercase; }
.independence-disclosure > summary::-webkit-details-marker { display: none; }
.independence-disclosure[open] > summary { border-color: var(--line-strong); color: var(--text); }
.independence-disclosure > p { position: absolute; z-index: 80; top: 40px; right: 0; width: 350px; margin: 0; padding: 14px 16px; border: 1px solid var(--line-strong); border-radius: 8px; color: var(--text); background: var(--surface); box-shadow: 0 18px 48px rgba(0,0,0,.2); font: 11px/1.65 var(--sans); text-transform: none; }
.network-pill i, .sidebar-proof i, .operator-chip i, .status-strip i { width: 7px; height: 7px; display: inline-block; background: var(--amber); box-shadow: 0 0 10px rgba(255,184,0,.5); }
.network-pill.live i, .sidebar-proof i, .operator-chip i, .status-strip i { background: var(--accent-fill, var(--green)); box-shadow: 0 0 10px rgba(182,238,88,.55); }
.create-button, .wallet-button, .wallet-disconnect, .quiet-button, .primary-action, .pending-card button { min-height: 36px; padding: 0 14px; border: 1px solid var(--line-strong); cursor: pointer; font: 800 11px var(--mono); }
.create-button, .primary-action { border-color: var(--amber); color: #151004; background: var(--amber); box-shadow: 3px 3px 0 #000; }
.create-button:hover, .primary-action:hover { filter: brightness(1.08); transform: translateY(-1px); }
.wallet-button, .quiet-button { color: var(--text); background: var(--surface-2); }
.wallet-button.connected { border-color: var(--green); color: var(--green); }
.wallet-disconnect { color: var(--muted); background: transparent; border-color: var(--line); }
.wallet-disconnect:hover, .wallet-disconnect:focus-visible { color: var(--red); border-color: var(--red); }
.wallet-menu { position: relative; display: inline-block; }
.wallet-menu > summary { list-style: none; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.wallet-menu > summary::-webkit-details-marker { display: none; }
.wallet-button.connected::after { content: "▾"; font-size: 9px; opacity: .7; }
.wallet-menu[open] > summary::after { transform: rotate(180deg); }
.wallet-menu-panel { position: absolute; right: 0; top: calc(100% + 8px); z-index: 60; display: flex; flex-direction: column; gap: 5px; min-width: 178px; padding: 7px; background: var(--surface-2); border: 1px solid var(--line-strong); border-radius: 10px; box-shadow: 0 14px 34px rgba(0, 0, 0, .4); }
.wallet-menu-panel > button { min-height: 34px; padding: 0 12px; border: 1px solid var(--line); border-radius: 7px; background: transparent; color: var(--text); font: 800 11px var(--mono); cursor: pointer; text-align: left; }
#wallet-profile:hover, #wallet-profile:focus-visible { border-color: var(--green); color: var(--green); }

.product-shell { position: relative; min-height: calc(100vh - 90px); display: grid; grid-template-columns: 220px minmax(0,1fr); }
.sidebar { position: sticky; top: 62px; height: calc(100vh - 90px); display: flex; flex-direction: column; padding: 12px 10px; border-right: 1px solid var(--line); background: rgba(6,11,8,.96); }
.protocol-identity { min-height: 62px; display: flex; align-items: center; gap: 10px; padding: 9px; border: 1px solid var(--line); background: var(--surface); }
.protocol-identity img { border: 1px solid var(--line-strong); }
.protocol-identity strong, .protocol-identity span { display: block; }
.protocol-identity strong { font-size: 12px; }
.protocol-identity span { margin-top: 4px; color: var(--muted); font: 9px var(--mono); }
.side-nav { margin-top: 18px; }
.side-nav small { display: block; margin: 0 8px 7px; color: #575d88; font: 800 9px var(--mono); letter-spacing: .08em; }
.side-nav button,.side-nav a { width: 100%; min-height: 42px; display: grid; grid-template-columns: 25px 1fr auto; align-items: center; border: 1px solid transparent; padding: 0 10px; color: var(--light-ink, #979cbc); background: transparent; cursor: pointer; text-align: left; text-decoration: none; font-weight: 650; }
.side-nav button span,.side-nav a span { color: #565d87; font: 9px var(--mono); }
.side-nav button b { min-width: 22px; padding: 3px 5px; border: 1px solid var(--line); color: var(--muted); font: 9px var(--mono); text-align: center; }
.side-nav button:hover,.side-nav a:hover { color: var(--text); background: var(--surface); }
.side-nav button.active { border-color: var(--line-strong); color: var(--green); background: var(--green-soft); box-shadow: inset 3px 0 var(--green); }
.sidebar-proof { margin-top: auto; padding: 14px 9px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.sidebar-proof span { display: flex; align-items: center; gap: 8px; font: 800 10px var(--mono); }
.sidebar-proof p { margin: 7px 0 0 15px; color: var(--muted); font: 9px/1.55 var(--mono); }
.command-link { padding: 14px 9px; color: var(--muted); text-decoration: none; font: 9px var(--mono); }
.command-link:hover { color: var(--amber); }

.workspace { min-width: 0; padding: 24px clamp(18px,2.5vw,42px) 48px; }
.view { animation: reveal .18s ease-out; }
@keyframes reveal { from { opacity: 0; transform: translateY(4px); } }
.workspace-head { display: flex; align-items: end; justify-content: space-between; gap: 30px; margin-bottom: 20px; }
.workspace-head span { color: var(--green); font: 800 9px var(--mono); letter-spacing: .09em; }
.workspace-head h1 { margin: 5px 0 2px; font-size: clamp(28px,3vw,44px); line-height: 1; letter-spacing: -.045em; }
.workspace-head p { margin: 7px 0 0; color: var(--muted); }

.ecosystem-hero { position: relative; min-height: 440px; display: grid; grid-template-columns: minmax(0,1.15fr) minmax(330px,.85fr); overflow: hidden; margin-bottom: 12px; border: 1px solid var(--light-border, #303a80); background: radial-gradient(circle at 78% 42%,rgba(var(--grid-rgb),.22),transparent 28%),linear-gradient(135deg,var(--light-surface, #0e0f16) 0%,var(--light-surface, #060609) 64%); }
.ecosystem-hero::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .25; background-image: linear-gradient(rgba(var(--grid-rgb),.10) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--grid-rgb),.10) 1px,transparent 1px); background-size: 32px 32px; mask-image: linear-gradient(90deg,#000,transparent 72%); }
.ecosystem-copy { position: relative; z-index: 2; min-width: 0; display: flex; flex-direction: column; justify-content: center; padding: clamp(30px,5vw,72px); }
.ecosystem-copy > span { color: var(--green); font: 900 10px var(--mono); letter-spacing: .14em; }
.ecosystem-copy h2 { margin: 12px 0 18px; font: 950 clamp(55px,7vw,104px)/.78 var(--sans); letter-spacing: -.085em; }
.ecosystem-copy h2 em { color: var(--green); font-style: normal; }
.ecosystem-copy > p { max-width: 650px; margin: 0; color: var(--light-ink, #aaaec9); font-size: clamp(13px,1.2vw,16px); line-height: 1.65; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 28px; }
.hero-actions button,.product-card button { min-height: 43px; padding: 0 17px; border: 1px solid var(--light-border, #4756b4); cursor: pointer; font: 900 10px var(--mono); text-transform: uppercase; }
.hero-primary { color: #080915; background: var(--accent-fill, var(--green)); box-shadow: 4px 4px 0 #000; }
.hero-secondary { color: var(--text); background: var(--light-surface, #121421); }
.hero-actions button:hover,.product-card button:hover { filter: brightness(1.12); transform: translateY(-1px); }
.hero-proof { display: flex; flex-wrap: wrap; gap: 16px; padding: 0; margin: 25px 0 0; color: var(--light-ink, #7f85ad); list-style: none; font: 9px var(--mono); text-transform: uppercase; }
.hero-proof li::before { content: "■"; margin-right: 7px; color: var(--green); font-size: 7px; }
.agent-signal { position: relative; min-width: 0; min-height: 440px; display: grid; place-items: center; padding: 34px; border-left: 1px solid var(--light-border, #292e53); background: linear-gradient(150deg,rgba(var(--grid-rgb),.12),transparent 48%); }
.signal-orbit { position: absolute; width: min(34vw,430px); aspect-ratio: 1; border: 1px solid rgba(var(--grid-rgb),.30); border-radius: 50%; box-shadow: 0 0 0 45px rgba(var(--grid-rgb),.05),0 0 0 90px rgba(var(--grid-rgb),.03); }
.signal-orbit::before,.signal-orbit::after { content: ""; position: absolute; inset: 18%; border: 1px dashed rgba(var(--grid-rgb),.30); border-radius: 50%; transform: rotate(23deg); }
.signal-orbit::after { inset: 38%; background: rgba(var(--grid-rgb),.14); }
.hero-agent-grid { position: relative; z-index: 2; width: min(100%,390px); min-height: 275px; }
.hero-agent-card { position: absolute; width: 150px; overflow: hidden; border: 1px solid var(--light-border, #4756b4); background: var(--light-surface, #0a0b13); box-shadow: 12px 16px 35px rgba(0,0,0,.55); }
.hero-agent-card img { width: 100%; aspect-ratio: 1; display: block; object-fit: cover; image-rendering: pixelated; background: var(--light-surface, #111429); }
.hero-agent-card div { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px; border-top: 1px solid var(--light-border, #2f3b89); font: 8px var(--mono); }
.hero-agent-card span { color: var(--green); font-size: 7px; }
.hero-agent-card.agent-1 { z-index: 3; top: 44px; left: calc(50% - 75px); transform: scale(1.12); }
.hero-agent-card.agent-2 { top: 95px; left: 0; transform: rotate(-5deg); }
.hero-agent-card.agent-3 { top: 95px; right: 0; transform: rotate(5deg); }
.hero-agent-empty { min-height: 260px; display: grid; place-items: center; align-content: center; text-align: center; }
.hero-agent-empty img { width: 78px; height: 78px; padding: 10px; border: 1px solid var(--light-border, #4756b4); background: var(--light-surface, #0f1228); }
.hero-agent-empty strong,.hero-agent-empty span { display: block; margin-top: 12px; }
.hero-agent-empty span { color: var(--muted); font: 9px var(--mono); }
.signal-caption { position: absolute; z-index: 4; right: 22px; bottom: 20px; left: 22px; display: flex; align-items: center; justify-content: space-between; padding-top: 10px; border-top: 1px solid var(--light-border, #2c3574); font: 9px var(--mono); }
.signal-caption span { color: var(--green); }
.signal-caption i { width: 6px; height: 6px; display: inline-block; margin-right: 7px; background: var(--accent-fill, var(--green)); box-shadow: 0 0 12px var(--green); }
.signal-caption b { color: var(--light-ink, #888eb3); font-size: 8px; }
.ecosystem-products { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); margin-bottom: 24px; border: 1px solid var(--line); border-right: 0; }
.product-card { min-height: 210px; display: flex; flex-direction: column; padding: 18px; border-right: 1px solid var(--line); background: var(--light-surface, #0a0b10); }
.product-card.featured { background: linear-gradient(145deg,var(--light-surface, #121e6c),var(--light-surface, #0d0f1b)); }
.product-card > span { color: var(--green); font: 900 8px var(--mono); letter-spacing: .1em; }
.product-card > strong { margin-top: 25px; font-size: 16px; line-height: 1.2; }
.product-card > p { margin: 8px 0 18px; color: var(--muted); font-size: 10px; line-height: 1.55; }
.product-card button { width: 100%; margin-top: auto; color: var(--text); background: transparent; }
.product-card.featured button { color: #080915; background: var(--accent-fill, var(--green)); }
.profile-agent-registration { margin-top: 14px; }

@media (max-width: 1180px) {
  .ecosystem-hero { grid-template-columns: minmax(0,1fr) 360px; }
  .ecosystem-products { grid-template-columns: 1fr 1fr; }
  .product-card:nth-child(2) { border-bottom: 1px solid var(--line); }
  .product-card:first-child { border-bottom: 1px solid var(--line); }
}

@media (max-width: 820px) {
  .ecosystem-hero { grid-template-columns: 1fr; }
  .ecosystem-copy { padding: 38px 25px; }
  .ecosystem-copy h2 { font-size: clamp(52px,15vw,82px); }
  .agent-signal { min-height: 360px; border-top: 1px solid var(--light-border, #292e53); border-left: 0; }
  .signal-orbit { width: 310px; }
}

@media (max-width: 560px) {
  body { overflow-x: hidden; }
  .topbar,.workspace,.ecosystem-hero,.ecosystem-products { width: 100%; max-width: 100%; }
  .topbar { overflow: hidden; }
  .brand { min-width: 0; font-size: 11px; }
  .wallet-button { max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ecosystem-copy { width: 100%; padding: 36px 24px; overflow: hidden; }
  .ecosystem-copy h2 { max-width: 100%; font-size: 10vw; letter-spacing: -.055em; }
  .ecosystem-copy > p { max-width: 100%; overflow-wrap: anywhere; }
  .ecosystem-products { grid-template-columns: 1fr; border-bottom: 0; }
  .product-card { min-height: 175px; border-bottom: 1px solid var(--line); }
  .hero-agent-card { width: 122px; }
  .hero-agent-card.agent-1 { left: calc(50% - 61px); }
  .hero-agent-grid { min-height: 235px; }
  .agent-signal { min-height: 320px; padding: 24px 14px; }
}
.sync-state { min-width: 190px; padding: 10px 12px; border: 1px solid var(--line); background: var(--surface); }
.sync-state small, .sync-state strong { display: block; }
.sync-state small { color: var(--muted); font: 8px var(--mono); }
.sync-state strong { margin-top: 5px; color: var(--green); font: 10px var(--mono); }
.market-overview { display: grid; grid-template-columns: minmax(250px,.8fr) 2fr; margin-bottom: 14px; border: 1px solid var(--line-strong); background: linear-gradient(120deg,var(--light-surface, #141627),var(--light-surface, #0b0c14)); }
.overview-title { padding: 18px; border-right: 1px solid var(--line); }
.overview-title > span { color: var(--amber); font: 800 9px var(--mono); }
.overview-title > strong { display: block; max-width: 330px; margin-top: 8px; font-size: 18px; }
.overview-title p { max-width: 420px; margin: 7px 0 0; color: var(--muted); font-size: 11px; line-height: 1.5; }
.market-overview dl { display: grid; grid-template-columns: repeat(4,1fr); margin: 0; }
.market-overview dl > div { min-width: 0; padding: 17px; border-right: 1px solid var(--line); }
.market-overview dl > div:last-child { border: 0; }
.market-overview dt { color: var(--muted); font: 8px var(--mono); text-transform: uppercase; }
.market-overview dd { margin: 9px 0 5px; overflow: hidden; color: var(--text); font: 800 clamp(17px,2vw,25px) var(--mono); text-overflow: ellipsis; }
.market-overview dl small { color: var(--green); font: 8px var(--mono); }

/* The automation panel mirrors the protocol overview above it: what runs on a
   clock, how often the worker that runs it says it runs, and nothing that was
   not read from that worker. */
.automation-panel { display: grid; grid-template-columns: minmax(250px,.8fr) 2fr; margin-bottom: 14px; border: 1px solid var(--line-strong); background: var(--surface); }
.automation-panel dl { display: grid; grid-template-columns: repeat(3,1fr); margin: 0; }
.automation-panel dl > div { min-width: 0; padding: 15px 17px; border-right: 1px solid var(--line); }
.automation-panel dl > div:last-child { border: 0; }
.automation-panel dt { color: var(--muted); font: 8px var(--mono); text-transform: uppercase; }
.automation-panel dd { margin: 8px 0 5px; color: var(--text); font: 800 clamp(15px,1.6vw,20px) var(--mono); }
.automation-panel dl small { display: block; color: var(--muted); font: 10px/1.45 var(--mono); }
.automation-panel .overview-title > span b { color: var(--green); }
.automation-panel[data-state="error"] { border-color: var(--amber); }
.automation-panel[data-state="error"] .overview-title > span b { color: var(--amber); }
.work-queue { display: block; margin-bottom: 14px; border: 1px solid var(--line-strong); background: var(--surface); }
.work-queue-body { display: grid; grid-template-columns: minmax(250px,.8fr) 2fr; }
/* The agent-launch market is a second market on the same page, so it opens with
   one click instead of taking the first screen away from the work market. */
.launch-jobs-section { margin: 26px 0 0; border-top: 1px solid var(--line); padding-top: 18px; }
.launch-jobs-section > summary { cursor: pointer; list-style: none; display: grid; gap: 4px; padding: 6px 0 10px; }
.launch-jobs-section > summary::-webkit-details-marker { display: none; }
.launch-jobs-section > summary > span { color: var(--green); font: 10px var(--mono); letter-spacing: .12em; }
.launch-jobs-section > summary > b { font-size: 17px; }
.launch-jobs-section > summary > i { color: var(--muted); font-style: normal; font-size: 12px; line-height: 1.5; max-width: 70ch; }
.launch-jobs-section[open] > summary { border-bottom: 1px solid var(--line); margin-bottom: 14px; }
.launch-jobs-section .section-heading { margin-top: 0; }
/* The worker's heartbeat is operational, not for the buyer: it opens with one
   click and stays out of the way. */
.work-queue > summary { padding: 12px 16px; cursor: pointer; color: var(--muted); font: 10px var(--mono); letter-spacing: .08em; list-style: none; }
.work-queue > summary::-webkit-details-marker { display: none; }
.work-queue > summary::before { content: "+ "; color: var(--green); }
.work-queue[open] > summary::before { content: "− "; }
.work-queue[open] > summary { border-bottom: 1px solid var(--line); }
.work-queue dl { display: grid; grid-template-columns: repeat(6,1fr); margin: 0; }
.work-queue dl > div { min-width: 0; padding: 15px 17px; border-right: 1px solid var(--line); }
.work-queue dl > div:last-child { border: 0; }
.work-queue dt { color: var(--muted); font: 8px var(--mono); text-transform: uppercase; }
.work-queue dd { margin: 8px 0 0; color: var(--text); font: 800 clamp(15px,1.6vw,20px) var(--mono); }
.work-queue .overview-title > span b { color: var(--green); }
.work-queue[data-state="error"] { border-color: var(--amber); }
.work-queue[data-state="error"] .overview-title > span b { color: var(--amber); }

.market-board { border: 1px solid var(--line); background: rgba(7,12,9,.92); }
/* The directory's controls are two dropdowns on one row: a lifecycle filter and
   an ordering menu, each wearing its current choice, with the verification
   badge pinned right. The toolbar costs one row whatever the viewport; the
   options only exist while a menu is open. */
.board-toolbar { min-height: 46px; display: flex; align-items: center; flex-wrap: wrap; gap: 10px 12px; padding: 8px 12px; border-bottom: 1px solid var(--line); }
/* Native <details> carries the open state, the keyboard toggle and the marker
   suppression, so the script only has to close siblings and pick up a choice. */
.filter-menu { position: relative; }
.filter-menu > summary { display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 0 11px; border: 1px solid var(--line); border-radius: 9px; color: var(--text); background: transparent; cursor: pointer; list-style: none; font: 800 9px var(--mono); }
.filter-menu > summary::-webkit-details-marker { display: none; }
.filter-menu > summary:hover { border-color: var(--line-strong); }
.filter-menu[open] > summary { border-color: var(--green); color: var(--green); background: var(--green-soft); }
.filter-menu > summary small { color: var(--muted); font: 800 8px var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.filter-menu > summary b { color: var(--green); font: 800 11px var(--mono); }
.filter-menu[open] > summary small, .filter-menu[open] > summary b { color: inherit; }
.filter-caret { width: 0; height: 0; border: 4px solid transparent; border-top-color: currentColor; transition: transform .16s ease; }
.filter-menu[open] .filter-caret { transform: rotate(180deg); }
.filter-pop { position: absolute; z-index: 40; top: calc(100% + 8px); left: 0; min-width: 232px; max-width: calc(100vw - 44px); padding: 6px; border: 1px solid var(--line-strong); border-radius: 11px; background: var(--surface); box-shadow: 0 22px 48px rgba(0,0,0,.5); }
.filter-menu[open] .filter-pop { animation: filter-pop-in .15s ease-out; }
@keyframes filter-pop-in { from { opacity: 0; transform: translateY(-6px); } }
/* Both menus are the same list: one option per row, count or tick right-aligned
   and the current choice filled — no boxed counts, no second row of pills. */
.filters, .board-sort { display: flex; flex-direction: column; gap: 2px; }
.filters button, .board-sort button { display: flex; align-items: center; min-height: 34px; padding: 0 11px; border: 0; border-radius: 7px; color: var(--muted); background: transparent; cursor: pointer; font: 800 9px var(--mono); text-align: left; }
.filters button:hover:not(.active), .board-sort button:hover:not(.active) { color: var(--text); background: var(--surface-2); }
.filters button.active, .board-sort button.active { color: var(--green); background: var(--green-soft); }
.filters button b { margin-left: auto; padding-left: 14px; border: 0; color: inherit; opacity: .7; }
.filters button.active::after { content: "✓"; margin-left: 6px; }
.board-sort button.active::after { content: "✓"; margin-left: auto; }
/* "Verified chain reads" is a status, not a control: badge chrome with a lit
   dot, pinned to the right edge of its row. */
.board-state { margin-left: auto; display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px; border: 1px solid var(--line); border-radius: 999px; color: var(--green); font: 800 10px var(--mono); letter-spacing: .06em; white-space: nowrap; }
.board-state::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--green); box-shadow: 0 0 7px var(--green); }
/* Every launch is on the board and one window of it is on screen, so the
   pager carries the page numbers and the range that proves nothing was
   dropped. It has to repeat `display` for the hidden attribute — a flex box
   ignores the UA rule for `[hidden]`. */
.board-pager { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 6px; padding: 16px 4px 4px; }
.board-pager[hidden] { display: none; }
.board-pager button { min-width: 32px; min-height: 32px; padding: 0 10px; border: 1px solid var(--line); border-radius: 9px; color: var(--muted); background: var(--surface); cursor: pointer; font: 800 10px var(--mono); }
.board-pager button:hover:not(:disabled) { color: var(--text); border-color: var(--line-strong); }
.board-pager button.active { border-color: var(--line-strong); color: var(--green); background: var(--green-soft); }
.board-pager button:disabled { opacity: .38; cursor: default; }
.board-pager .pager-gap { color: var(--muted); font: 800 10px var(--mono); padding: 0 2px; }
.board-pager em { margin-left: 6px; color: var(--muted); font: normal 800 9px var(--mono); letter-spacing: .06em; text-transform: uppercase; }
.quiet-button { min-height: 32px; font-size: 9px; }
.table-wrap { overflow-x: auto; }
table { width: 100%; min-width: 1120px; border-collapse: collapse; font-variant-numeric: tabular-nums; }
th { height: 35px; padding: 0 10px; border-bottom: 1px solid var(--line); color: #646c9c; font: 800 8px var(--mono); text-align: left; text-transform: uppercase; }
td { height: 61px; padding: 8px 10px; border-bottom: 1px solid var(--light-border, #1c1f34); color: var(--light-ink, #bec1d5); font-size: 11px; }
tbody tr:hover { background: var(--light-surface, #121421); }
tbody tr:last-child td { border-bottom: 0; }
.rank { color: #585f8a; font: 10px var(--mono); }
.token-cell { display: flex; align-items: center; gap: 9px; }
.market-open { width: 100%; padding: 0; border: 0; color: inherit; background: transparent; cursor: pointer; text-align: left; }
.market-open:hover strong { color: var(--green); }
.token-cell > span { width: 32px; height: 32px; display: grid; place-items: center; flex: 0 0 auto; border: 1px solid var(--line-strong); color: var(--green); background: var(--surface-3); font: 900 10px var(--mono); }
.token-cell strong, .token-cell small, .cell-sub { display: block; }
.token-cell strong { color: var(--text); font: 800 12px var(--mono); }
.token-cell small, .cell-sub { max-width: 130px; margin-top: 3px; overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.status-tag { display: inline-block; padding: 5px 7px; border: 1px solid var(--line); font: 800 8px var(--mono); }
.status-tag.live { color: var(--amber); border-color: var(--light-border, #5d4a0b); background: var(--amber-soft); }
.status-tag.ready { color: #77ccff; border-color: var(--light-border, #164360); background: var(--light-surface, #081d29); }
.status-tag.graduated { color: var(--green); border-color: var(--light-border, #136339); background: var(--green-soft); }
.progress-cell { display: flex; align-items: center; gap: 8px; min-width: 120px; }
.progress-cell > span, .capacity > span { width: 78px; height: 5px; display: block; overflow: hidden; background: var(--light-surface, #1a1d2a); }
.progress-cell i, .capacity i { width: 0; height: 100%; display: block; background: var(--accent-fill, var(--green)); }
.progress-cell b { color: var(--text); font: 9px var(--mono); }
.numeric { color: var(--text); font: 10px var(--mono); }
.operator-chip { display: inline-flex; align-items: center; gap: 6px; color: var(--text); font: 10px var(--mono); }
time { color: var(--muted); font: 10px var(--mono); }
.row-link { width: 30px; height: 30px; display: grid; place-items: center; border: 1px solid var(--line); color: var(--amber); text-decoration: none; }
.row-link:hover { border-color: var(--amber); }
.loading-cell { height: 180px; color: var(--muted); font: 11px var(--mono); text-align: center; }
.error-cell { color: var(--red); }
.empty-state { min-height: 280px; display: grid; place-items: center; align-content: center; padding: 30px; text-align: center; }
.empty-state img { opacity: .6; }
.empty-state strong { margin-top: 12px; font-size: 16px; }
.empty-state p { max-width: 420px; margin: 7px 0 18px; color: var(--muted); }

.operator-explainer { margin-bottom: 14px; padding: 18px; border-left: 3px solid var(--green); background: var(--surface-2); }
.operator-explainer p { margin: 6px 0 0; color: var(--muted); line-height: 1.5; }
.operator-onboarding { display: grid; grid-template-columns: minmax(260px,.8fr) minmax(360px,1.2fr); margin-bottom: 14px; border: 1px solid var(--line-strong); background: linear-gradient(120deg,var(--light-surface, #141627),var(--light-surface, #0a0a10)); }
.onboarding-copy { padding: 20px; border-right: 1px solid var(--line); }
.onboarding-copy > span { color: var(--amber); font: 800 8px var(--mono); }
.onboarding-copy h2 { margin: 7px 0; font-size: 20px; }
.onboarding-copy p { color: var(--muted); font-size: 10px; line-height: 1.55; }
.onboarding-copy ul { display: flex; flex-wrap: wrap; gap: 6px; padding: 0; margin: 16px 0 0; list-style: none; }
.onboarding-copy li { padding: 5px 7px; border: 1px solid var(--line); color: var(--green); font: 8px var(--mono); }
.operator-form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 20px; }
.operator-form label { display: grid; gap: 6px; }
.operator-form label > span { color: var(--muted); font: 800 8px var(--mono); text-transform: uppercase; }
.operator-form input,.operator-form select { width: 100%; height: 42px; padding: 0 10px; border: 1px solid var(--line); outline: 0; color: var(--text); background: var(--light-surface, #050509); }
.operator-form input:focus,.operator-form select:focus { border-color: var(--green); }
.operator-beneficiary,.operator-vault,.operator-setup-status,.operator-form > button,.operator-form > p { grid-column: 1/-1; }
.operator-vault input[readonly] { color: var(--green); background: var(--green-soft); cursor: default; }
.operator-setup-status { min-height: 42px; padding: 10px 12px; border-left: 3px solid var(--line-strong); color: var(--muted); background: var(--surface); font: 9px/1.5 var(--mono); }
.operator-setup-status.live { border-color: var(--green); color: var(--light-ink, #bfe8cf); background: var(--green-soft); }
.operator-setup-status.error { border-color: var(--red); color: #ffaaa5; background: var(--light-surface, #21100e); }
.operator-leave { min-height: 38px; border: 1px solid var(--red); color: var(--red); background: transparent; cursor: pointer; font: 800 9px var(--mono); }
.project-team{margin-top:18px;padding-top:16px;border-top: 1px solid var(--line)}
.team-head{display:flex;justify-content:space-between;color: var(--amber);font:700 10px var(--mono);letter-spacing:.12em}.team-head b{color: var(--muted)}
.team-list{display:grid;gap:7px;margin:10px 0}.team-member{display:grid;grid-template-columns:1fr auto;gap:6px;padding:10px;border: 1px solid var(--line);background: var(--light-surface, #0c0e18)}.team-member strong{font-size:12px}.team-member span,.team-member small{font:10px var(--mono);color: var(--muted)}.team-member .work-live{color: var(--green)}.team-member .work-stale{color: var(--amber)}.team-member button{grid-column:1/-1;border: 1px solid var(--light-border, #613b34);background: transparent;color: #ff786a;padding:7px;font:700 10px var(--mono);cursor:pointer}
.team-member .work-evidence-button{min-height:38px;border-color: var(--line-strong);color: var(--green);text-align:left}.team-member .work-evidence-button:hover,.team-member .work-evidence-button:focus-visible{border-color: var(--green);background: var(--light-surface, #12152b);outline:2px solid var(--amber);outline-offset:2px}.work-evidence{grid-column:1/-1;padding:11px;border: 1px solid var(--line);background: var(--light-surface, #080912)}.work-evidence-head{display:flex;justify-content:space-between;gap:12px;color: var(--green);font:700 9px var(--mono)}.work-evidence-head b{color: var(--muted)}.work-evidence dl{display:grid;grid-template-columns:1fr 1fr;margin:10px 0;border-top: 1px solid var(--line);border-left: 1px solid var(--line)}.work-evidence dl div{padding:8px;border-right: 1px solid var(--line);border-bottom: 1px solid var(--line)}.work-evidence dt{color: var(--muted);font:8px var(--mono)}.work-evidence dd{margin:4px 0 0;color: var(--text);font:10px var(--mono)}.work-evidence a{color: var(--green)}.work-evidence>strong{font-size:10px}.work-evidence ul{margin:7px 0 9px;padding-left:18px;color: var(--light-ink, #caccdd);font:9px/1.6 var(--mono)}.work-evidence p{margin:7px 0;color: var(--muted);font:9px/1.5 var(--mono)}.work-evidence code{display:block;overflow:hidden;text-overflow:ellipsis;color: #737aa6;font:8px var(--mono)}.work-evidence .work-evidence-error{color: var(--red)}
.team-form{display:grid;grid-template-columns:1fr 110px;gap:8px;margin-top:10px}.team-form label span{display:block;margin-bottom:5px;color: var(--muted);font:9px var(--mono)}.team-form select{width:100%;background: var(--light-surface, #0a0a10);color: var(--text);border: 1px solid var(--line);padding:9px}.team-form button{border: 1px solid var(--green);background: transparent;color: var(--green);padding:9px;font:700 10px var(--mono);cursor:pointer}.team-form #team-replace{border-color: var(--amber);color: var(--amber)}.team-form small{grid-column:1/-1;color: var(--muted);font:9px var(--mono);line-height:1.5}.team-notice{margin-top:8px;padding:8px;border-left: 2px solid var(--green);background: var(--light-surface, #101326);font:10px var(--mono)}.team-notice.error{border-color: var(--red);color: var(--red)}
.operator-form > p { margin: 0; color: var(--muted); font: 8px/1.5 var(--mono); text-align: center; }
.operator-list { display: grid; grid-template-columns: repeat(3,minmax(240px,1fr)); gap: 10px; }
.operator-list article { min-height: 135px; display: grid; grid-template-columns: 58px 1fr; gap: 13px; padding: 15px; border: 1px solid var(--line); background: var(--surface); }
.agent-mark { width: 58px; height: 58px; display: grid; place-items: center; object-fit: cover; image-rendering: pixelated; border: 1px solid var(--line-strong); color: var(--green); background: var(--green-soft); font: 900 10px var(--mono); }
.operator-list article span { color: var(--green); font: 8px var(--mono); }
.operator-list article strong { display: block; margin-top: 5px; }
.operator-list article p { margin: 6px 0; color: var(--muted); font: 10px var(--mono); }
.capacity { grid-column: 1/-1; display: flex; align-items: center; justify-content: space-between; }
.capacity > span { width: calc(100% - 100px); }
.capacity b { color: var(--green); font: 8px var(--mono); }
.operator-empty { grid-column: 1/-1; min-height: 220px; display: grid; place-items: center; align-content: center; border: 1px dashed var(--line); text-align: center; }
.operator-empty p { color: var(--muted); }
.operator-list .capacity a { color: var(--green); font: 8px var(--mono); text-decoration: none; }
.operator-list .capacity a:hover { text-decoration: underline; }
.operator-list article { cursor: pointer; }

/* One profile per registered Signalbound Agent at /agents/:id. */
.agent-profile { display: grid; gap: 14px; }
.agent-profile-back { justify-self: start; padding: 9px 12px; border: 1px solid var(--line-strong); background: transparent; color: var(--green); font: 700 9px var(--mono); letter-spacing: .08em; cursor: pointer; }
.agent-profile-back:hover, .agent-profile-back:focus-visible { border-color: var(--green); }
.agent-profile-head { display: grid; grid-template-columns: 104px minmax(0,1fr) auto; gap: 18px; align-items: start; padding: 18px; border: 1px solid var(--line-strong); background: var(--surface); }
.agent-profile-image { width: 104px; height: 104px; object-fit: cover; image-rendering: pixelated; border: 1px solid var(--line-strong); background: var(--green-soft); }
.agent-profile-head > div > span { color: var(--green); font: 8px var(--mono); letter-spacing: .12em; }
.agent-profile-head h2 { margin: 7px 0 6px; font-size: 22px; }
.agent-profile-tagline { margin: 0; color: var(--muted); font-size: 12.5px; line-height: 1.6; max-width: 78ch; }
.agent-profile-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.agent-profile-badges b { padding: 5px 8px; border: 1px solid var(--line); color: var(--green); font: 700 8px var(--mono); letter-spacing: .1em; }
.agent-profile-badges b.is-muted { color: var(--muted); border-style: dashed; }
.agent-profile-link { padding: 9px 12px; border: 1px solid var(--line-strong); color: var(--green); text-decoration: none; font: 700 9px var(--mono); white-space: nowrap; }
.agent-profile-link:hover { border-color: var(--green); }
.agent-profile-stats { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 10px; margin: 0; }
.agent-profile-stats > div { padding: 13px 15px; border: 1px solid var(--line); background: var(--surface); }
.agent-profile-stats dt { color: var(--muted); font: 8px var(--mono); letter-spacing: .12em; }
.agent-profile-stats dd { margin: 9px 0 0; font: 700 20px var(--mono); }
.agent-profile-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.agent-profile-grid > section { min-width: 0; padding: 15px; border: 1px solid var(--line); background: var(--surface); }
.agent-profile-grid > section > header { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 12px; color: var(--green); font: 700 8px var(--mono); letter-spacing: .12em; }
.agent-profile-grid > section > header b { color: var(--muted); font-weight: 700; text-align: right; }
.agent-profile-grid dl { margin: 0; }
.agent-profile-grid dl > div { display: flex; justify-content: space-between; gap: 14px; padding: 8px 0; border-bottom: 1px dashed var(--line); font: 11px/1.5 var(--mono); }
.agent-profile-grid dl > div:last-child { border-bottom: 0; }
.agent-profile-grid dt { color: var(--muted); }
.agent-profile-grid dd { margin: 0; text-align: right; word-break: break-word; }
.agent-profile-grid dd a { color: var(--green); text-decoration: none; }
.agent-profile-list { display: grid; gap: 8px; }
.agent-profile-list p { margin: 0; color: var(--muted); font: 11px/1.6 var(--mono); }
.agent-profile-list small { color: var(--muted); font: 9px/1.5 var(--mono); }
.agent-market-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 1px solid var(--line); }
.agent-market-row strong, .agent-work-row strong { display: block; font-size: 12.5px; }
.agent-market-row span, .agent-work-row span { display: block; margin-top: 4px; color: var(--muted); font: 9px var(--mono); }
.agent-market-row a { color: var(--green); font: 700 9px var(--mono); text-decoration: none; white-space: nowrap; }
.agent-work-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border: 1px solid var(--line); }
.agent-work-row button { padding: 8px 10px; border: 1px solid var(--line-strong); background: transparent; color: var(--green); font: 700 9px var(--mono); cursor: pointer; }
.agent-work-row button:hover, .agent-work-row button:focus-visible { border-color: var(--green); outline: 2px solid var(--amber); outline-offset: 2px; }
.agent-work-row .work-evidence { flex-basis: 100%; }
.agent-profile-record-stats { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; margin: 0 0 10px; }
.agent-profile-record-stats > div { padding: 9px 11px; border: 1px dashed var(--line); }
.agent-profile-record-stats dt { color: var(--muted); font: 8px var(--mono); letter-spacing: .1em; }
.agent-profile-record-stats dd { margin: 6px 0 0; font: 700 15px var(--mono); }
.lifecycle-grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(5,1fr); border: 1px solid var(--line); }
.lifecycle-grid li { min-height: 250px; padding: 18px; border-right: 1px solid var(--line); background: var(--surface); }
.lifecycle-grid li:last-child { border: 0; }
.lifecycle-grid li > b { color: var(--amber); font: 10px var(--mono); }
.lifecycle-grid li div { margin-top: 65px; }
.lifecycle-grid span { color: var(--green); font: 8px var(--mono); }
.lifecycle-grid strong { display: block; margin-top: 8px; font-size: 16px; }
.lifecycle-grid p { color: var(--muted); font-size: 11px; line-height: 1.6; }
.docs-button { padding: 11px 14px; border: 1px solid var(--amber); color: var(--amber); text-decoration: none; font: 800 9px var(--mono); white-space: nowrap; }
.economics-summary { display: grid; grid-template-columns: minmax(240px,.75fr) minmax(0,1.75fr); border: 1px solid var(--line-strong); background: linear-gradient(120deg,var(--light-surface, #141627),var(--light-surface, #0a0a10)); }
.economics-summary > div { padding: 22px; border-right: 1px solid var(--line); }
.economics-summary > div > span { color: var(--amber); font: 800 9px var(--mono); }
.economics-summary h2 { margin: 9px 0 7px; font-size: 23px; }
.economics-summary p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.economics-summary dl { display: grid; grid-template-columns: repeat(5,1fr); margin: 0; }
.economics-summary dl > div { min-width: 0; padding: 18px 14px; border-right: 1px solid var(--line); }
.economics-summary dl > div:last-child { border: 0; }
.economics-summary dt { min-height: 28px; color: var(--muted); font: 8px/1.4 var(--mono); text-transform: uppercase; }
.economics-summary dd { margin: 10px 0 7px; color: var(--green); font: 900 clamp(19px,2.2vw,29px) var(--mono); }
.economics-summary small { color: var(--light-ink, #848ab1); font: 8px/1.5 var(--mono); }
.economics-rules { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin-top: 12px; }
.economics-rules article { min-height: 175px; padding: 19px; border: 1px solid var(--line); background: var(--surface); }
.economics-rules span { color: var(--amber); font: 800 8px var(--mono); }
.economics-rules strong { display: block; margin-top: 22px; font-size: 15px; }
.economics-rules p { color: var(--muted); font-size: 10px; line-height: 1.6; }
.fee-claim-panel { display: grid; grid-template-columns: minmax(240px,.8fr) minmax(360px,1.2fr); margin-top: 12px; border: 1px solid var(--line-strong); background: linear-gradient(120deg,var(--light-surface, #141627),var(--light-surface, #0a0a10)); }
.fee-claim-panel > div { padding: 20px; border-right: 1px solid var(--line); }
.fee-claim-panel > div > span { color: var(--green); font: 800 8px var(--mono); }
.fee-claim-panel h2 { margin: 8px 0 !important; font-size: 21px !important; }
.fee-claim-panel p { color: var(--muted); font-size: 10px; line-height: 1.55; }
.fee-claim-panel form { display: grid; grid-template-columns: 1fr auto; gap: 8px; padding: 20px; }
.fee-claim-panel label { grid-column: 1/-1; }
.fee-claim-panel label span { display: block; margin-bottom: 6px; color: var(--muted); font: 8px var(--mono); text-transform: uppercase; }
.fee-claim-panel select { width: 100%; height: 42px; padding: 0 10px; border: 1px solid var(--line); color: var(--text); background: var(--light-surface, #050509); }
.fee-claim-panel button { min-height: 40px; border: 1px solid var(--line-strong); color: var(--text); background: var(--surface-2); cursor: pointer; font: 800 9px var(--mono); }
.fee-claim-panel .primary-action { width: auto; min-width: 220px; }
.fee-claim-panel form p { grid-column: 1/-1; margin: 0; font: 9px/1.5 var(--mono); }

.status-strip { position: fixed; z-index: 25; bottom: 0; left: 0; right: 0; height: 28px; display: flex; align-items: center; gap: 24px; padding: 0 14px; border-top: 1px solid var(--line); color: var(--muted); background: var(--light-surface, #050509); font: 8px var(--mono); white-space: nowrap; }
.status-strip span:first-child { display: flex; align-items: center; gap: 7px; color: var(--green); }
.risk-copy { margin-left: auto; }

.create-dialog { width: min(1100px,calc(100vw - 32px)); max-height: calc(100vh - 40px); padding: 0; border: 1px solid var(--line-strong); color: var(--text); background: var(--surface); box-shadow: 18px 18px 0 rgba(0,0,0,.7); }
.create-dialog::backdrop { background: rgba(0,4,2,.78); backdrop-filter: blur(5px); }
.dialog-shell > header { min-height: 78px; display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.dialog-shell > header span { color: var(--amber); font: 800 9px var(--mono); }
.dialog-shell > header h2 { margin: 4px 0 0; font-size: 25px; }
.dialog-shell > header p { margin: 4px 0 0; color: var(--muted); font: 9px var(--mono); }
#close-create { width: 44px; height: 44px; border: 1px solid var(--line); color: var(--muted); background: var(--surface-2); cursor: pointer; font-size: 24px; }
.dialog-grid { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(290px,.75fr); }
.launch-form { padding: 20px; border-right: 1px solid var(--line); }
.launch-review { padding: 20px; background: var(--light-surface, #080910); }
.step-label { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; }
.step-label b { width: 26px; height: 26px; display: grid; place-items: center; border: 1px solid var(--amber); color: var(--amber); font: 10px var(--mono); }
.step-label span { font-weight: 800; }
.field-row { display: grid; grid-template-columns: 2fr 1fr; gap: 10px; }
.launch-form > label, .field-row label { display: block; margin-bottom: 14px; }
.launch-form label > span, .launch-form legend { display: block; margin-bottom: 7px; color: var(--light-ink, #b1b4cd); font: 800 9px var(--mono); text-transform: uppercase; }
.launch-form label > span em { float: right; color: var(--muted); font-style: normal; }
.launch-form input { width: 100%; height: 44px; padding: 0 11px; border: 1px solid var(--line); outline: 0; color: var(--text); background: var(--light-surface, #050509); }
.launch-form input:focus { border-color: var(--green); box-shadow: 0 0 0 2px rgba(var(--grid-rgb),.30); }
.launch-form textarea { width: 100%; min-height: 86px; padding: 11px; resize: vertical; border: 1px solid var(--line); outline: 0; color: var(--text); background: var(--light-surface, #050509); font: 12px/1.5 var(--sans); }
.launch-form textarea:focus { border-color: var(--green); box-shadow: 0 0 0 2px rgba(var(--grid-rgb),.30); }
.image-upload { position: relative; }
.image-upload > input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.image-upload > div { min-height: 86px; display: grid; grid-template-columns: 58px 1fr; align-items: center; column-gap: 12px; padding: 12px; border: 1px dashed var(--light-border, #44496a); background: var(--light-surface, #07080c); cursor: pointer; }
.image-upload img { grid-row: 1/3; width: 58px; height: 58px; object-fit: cover; border: 1px solid var(--green); }
.image-upload b,.image-upload small { display: block; }
.image-upload small { color: var(--muted); }
.developer-buy > div { display: flex; align-items: center; border: 1px solid var(--line); background: var(--light-surface, #050509); }
.developer-buy > div input { border: 0; }
.developer-buy > div b { padding: 0 12px; color: var(--green); font: 11px var(--mono); }
.developer-buy > small { display: block; margin-top: 6px; color: var(--muted); font-size: 9px; line-height: 1.5; }
.token-preview-card { display: flex; align-items: center; gap: 13px; margin: 14px 0 20px; padding: 14px; border: 1px solid var(--line); background: var(--light-surface, #050509); }
.token-preview-card img { width: 66px; height: 66px; object-fit: cover; border: 1px solid var(--line); }
.token-preview-card small,.token-preview-card strong,.token-preview-card span { display: block; }
.token-preview-card small { color: var(--amber); font: 8px var(--mono); }
.token-preview-card strong { margin-top: 5px; font-size: 17px; }
.token-preview-card span { color: var(--muted); font: 10px var(--mono); }
.launch-economics { margin: 0 0 18px; border: 1px solid var(--line); background: var(--surface-2); }
.launch-economics div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.launch-economics div:last-child { border-bottom: 0; }
.launch-economics dt { color: var(--muted); font-size: 10px; }
.launch-economics dd { margin: 0; color: var(--text); font: 800 10px var(--mono); text-align: right; }
.launch-form fieldset { padding: 0; margin: 7px 0 18px; border: 0; }
.launch-form fieldset > p { margin: 0 0 9px; color: var(--muted); font-size: 10px; }
.pair-options { display: grid; grid-template-columns: repeat(3,1fr); gap: 7px; }
.pair-option { min-height: 62px; display: flex !important; align-items: center; justify-content: space-between; gap: 8px; margin: 0 !important; padding: 9px; border: 1px solid var(--line); background: var(--light-surface, #07080c); cursor: pointer; }
.pair-option input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.pair-option strong, .pair-option small { display: block; }
.pair-option strong { font: 800 11px var(--mono); }
.pair-option small { margin-top: 3px; color: var(--muted); font-size: 9px; }
.pair-option em { color: var(--muted); font: 8px var(--mono); font-style: normal; text-transform: uppercase; }
.pair-option:has(input:checked) { border-color: var(--green); background: var(--green-soft); box-shadow: inset 3px 0 var(--green); }
.pair-option:has(input:focus-visible) { outline: 2px solid var(--amber); outline-offset: 2px; }
.pair-skeleton { grid-column: 1/-1; padding: 20px; border: 1px dashed var(--line); color: var(--muted); font: 10px var(--mono); }
.agent-policy > div { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.agent-policy label { position: relative; display: block; margin: 0; padding: 12px; border: 1px solid var(--line); background: var(--light-surface, #07080c); cursor: pointer; }
.agent-policy input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.agent-policy label > span { margin: 0; text-transform: none; }
.agent-policy strong,.agent-policy small { display: block; }
.agent-policy strong { color: var(--text); font: 800 11px var(--sans); }
.agent-policy small { margin-top: 5px; color: var(--muted); font: 9px/1.45 var(--sans); }
.agent-policy label:has(input:checked) { border-color: var(--green); background: var(--green-soft); box-shadow: inset 3px 0 var(--green); }
.agent-policy label:has(input:focus-visible) { outline: 2px solid var(--amber); outline-offset: 2px; }
.agent-policy label.is-disabled { opacity: .45; cursor: not-allowed; }
.tax-field > div { position: relative; }
.tax-field > div b { position: absolute; top: 14px; right: 12px; color: var(--green); }
.tax-field small { display: block; margin-top: 5px; color: var(--muted); font-size: 9px; }
.confirm { display: flex !important; align-items: flex-start; gap: 9px; }
.confirm input { width: 17px; height: 17px; flex: 0 0 auto; }
.confirm span { margin: 1px 0 0 !important; color: var(--muted) !important; line-height: 1.45; text-transform: none !important; }
.primary-action { width: 100%; min-height: 46px; }
.form-foot { margin: 10px 0 0; color: var(--muted); font: 9px var(--mono); text-align: center; }
.launch-review ul { list-style: none; padding: 0; margin: 0; }
.launch-review li { display: grid; grid-template-columns: 12px 1fr; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.launch-review li i { width: 8px; height: 8px; margin-top: 3px; border: 1px solid var(--green); }
.launch-review li strong, .launch-review li span { display: block; }
.launch-review li strong { color: var(--text); font-size: 11px; }
.launch-review li span { color: var(--muted); font-size: 10px; }
.review-rule { margin-top: 18px; padding: 13px; border-left: 2px solid var(--green); background: var(--surface-2); }
.review-rule span { color: var(--green); font: 8px var(--mono); }
.review-rule strong { display: block; margin-top: 5px; }
.review-rule p { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
.notice { margin: 12px 18px 0; padding: 12px; border-left: 3px solid var(--green); color: var(--light-ink, #bfe8cf); background: var(--green-soft); font-size: 11px; }
.notice.error { border-color: var(--red); color: #ffaaa5; background: var(--light-surface, #21100e); }
.pending-card { margin-top: 16px; padding: 13px; border: 1px solid var(--light-border, #604c0d); background: var(--amber-soft); }
.pending-card > span { color: var(--amber); font: 800 8px var(--mono); }
.pending-card > strong { display: block; margin-top: 5px; }
.pending-card p { color: var(--light-ink, #c4bb8e); font-size: 10px; line-height: 1.5; }
.pending-actions { display: grid; gap: 6px; }
.pending-card button { color: #171104; border-color: var(--amber); background: var(--amber); }
.pending-card button.pending-expire { color: var(--amber); background: transparent; }
.pending-card button.pending-clear { color: var(--muted); border-color: var(--line-strong); background: transparent; }
.pending-card > small { display: block; margin-top: 9px; color: var(--muted); font: 8px/1.5 var(--mono); }

.market-dialog { width: min(980px,calc(100vw - 32px)); max-height: calc(100vh - 40px); padding: 0; border: 1px solid var(--line-strong); color: var(--text); background: var(--light-surface, #0a0a10); box-shadow: 18px 18px 0 rgba(0,0,0,.72); }
.market-dialog::backdrop { background: rgba(0,4,2,.82); backdrop-filter: blur(6px); }
.trade-shell > header { min-height: 84px; display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--line); background: linear-gradient(90deg,var(--light-surface, #141627),var(--light-surface, #0a0a10)); }
.trade-token { display: flex; align-items: center; gap: 13px; }
.trade-token > span { width: 48px; height: 48px; display: grid; place-items: center; border: 1px solid var(--green); color: var(--green); background: var(--green-soft); font: 900 13px var(--mono); }
.trade-token small { color: var(--amber); font: 800 8px var(--mono); }
.trade-token h2 { margin: 4px 0 0; font-size: 24px; }
.trade-token p { margin: 4px 0 0; color: var(--muted); font: 9px var(--mono); }
#close-market { width: 44px; height: 44px; border: 1px solid var(--line); color: var(--muted); background: var(--surface-2); cursor: pointer; font-size: 24px; }
.trade-notice { margin: 14px 0 12px; padding: 11px 13px; border: 1px solid var(--line-strong); border-left: 3px solid var(--green); color: var(--light-ink, #bfe8cf); background: var(--green-soft); font-size: 10px; line-height: 1.5; }
/* A refused action has to be unmistakable and has to sit on the control that
   refused it: the notice now lives inside the trade ticket, directly above the
   execute button, so the message and its cause are never on opposite sides of
   the page. */
.trade-notice.error { border-color: var(--red); color: #ffd5d1; background: var(--light-surface, #21100e); box-shadow: 0 0 0 1px var(--red); animation: trade-notice-in .18s ease-out; }
.trade-notice-tag { display: block; margin-bottom: 4px; color: var(--red); font: 900 10px var(--mono); letter-spacing: .08em; }
:root[data-theme="light"] .trade-notice-tag { color: var(--red); }
@keyframes trade-notice-in { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: none; } }
.trade-layout { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(340px,.9fr); }
.market-facts { padding: 22px; border-right: 1px solid var(--line); }
.fact-head { display: flex; align-items: center; justify-content: space-between; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.fact-head span { color: var(--muted); font: 800 9px var(--mono); }
.fact-head b { padding: 5px 7px; border: 1px solid var(--line); color: var(--muted); font: 800 8px var(--mono); }
.fact-head b.live { border-color: var(--light-border, #136339); color: var(--green); background: var(--green-soft); }
.fact-head b.closed { border-color: var(--light-border, #5d4a0b); color: var(--amber); background: var(--amber-soft); }
.market-facts dl { display: grid; grid-template-columns: 1fr 1fr; margin: 0; }
.market-facts dl > div { min-height: 83px; padding: 15px 12px 12px 0; border-bottom: 1px solid var(--line); }
.market-facts dl > div:nth-child(odd) { border-right: 1px solid var(--line); }
.market-facts dl > div:nth-child(even) { padding-left: 14px; }
.market-facts dt { color: var(--muted); font: 8px var(--mono); text-transform: uppercase; }
.market-facts dd { margin: 10px 0 0; color: var(--text); font: 800 13px var(--mono); }
.curve-meter { margin-top: 18px; }
.curve-meter > span { height: 8px; display: block; overflow: hidden; border: 1px solid var(--line-strong); background: var(--light-surface, #050509); }
.curve-meter i { width: 0; height: 100%; display: block; background: linear-gradient(90deg,var(--accent-fill, var(--green)),var(--amber)); }
.curve-meter p { color: var(--muted); font-size: 10px; line-height: 1.55; }
.trade-explorer { display: inline-block; margin-top: 12px; color: var(--amber); font: 9px var(--mono); text-decoration: none; }
.trade-ticket { padding: 22px; background: var(--light-surface, #07080c); }
.trade-tabs { display: grid; grid-template-columns: 1fr 1fr; margin-bottom: 21px; border: 1px solid var(--line); }
.trade-tabs button { height: 40px; border: 0; color: var(--muted); background: transparent; cursor: pointer; font-weight: 800; }
.trade-tabs button.active { color: var(--buy-ink); background: var(--buy-fill); }
.trade-tabs button[data-trade-side="sell"].active { color: var(--sell-ink); background: var(--sell-fill); }
.balance-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; color: var(--muted); font: 9px var(--mono); }
.balance-row button { padding: 0; border: 0; color: var(--muted); background: transparent; cursor: pointer; font: inherit; }
.balance-row button:hover { color: var(--green); }
.amount-field { min-height: 64px; display: grid; grid-template-columns: 1fr auto; align-items: center; padding: 0 14px; border: 1px solid var(--line-strong); background: var(--light-surface, #030409); }
.amount-field:focus-within { border-color: var(--green); box-shadow: 0 0 0 2px rgba(var(--grid-rgb),.30); }
.amount-field input { min-width: 0; height: 62px; border: 0; outline: 0; color: var(--text); background: transparent; font: 700 25px var(--mono); }
.amount-field strong { color: var(--green); font: 800 11px var(--mono); }
.slippage-row { display: flex; align-items: center; justify-content: space-between; margin: 13px 0; color: var(--muted); font: 9px var(--mono); }
.slippage-row label { width: 82px; display: flex; align-items: center; border: 1px solid var(--line); background: var(--light-surface, #030409); }
.slippage-row input { width: 57px; height: 32px; padding: 0 7px; border: 0; outline: 0; color: var(--text); background: transparent; font: 10px var(--mono); }
.slippage-row b { color: var(--muted); }
.quote-button { width: 100%; min-height: 42px; border: 1px solid var(--green); color: var(--green); background: transparent; cursor: pointer; font: 800 10px var(--mono); }
.quote-button:hover:not(:disabled) { color: var(--buy-ink); background: var(--buy-fill); }
.quote-card { margin: 12px 0; padding: 13px; border: 1px solid var(--line-strong); background: var(--surface-2); }
.quote-card > div { display: flex; align-items: end; justify-content: space-between; gap: 15px; padding-bottom: 11px; border-bottom: 1px solid var(--line); }
.quote-card span,.quote-card dt { color: var(--muted); font: 8px var(--mono); text-transform: uppercase; }
.quote-card strong { color: var(--green); font: 800 14px var(--mono); }
.quote-card dl { margin: 10px 0 0; }
.quote-card dl > div { display: flex; justify-content: space-between; margin-top: 7px; }
.quote-card dd { margin: 0; color: var(--text); font: 9px var(--mono); }
.quote-card p { margin: 11px 0 0; color: var(--muted); font-size: 9px; line-height: 1.45; }
.trade-ticket .primary-action { margin-top: 12px; }
/* Every control that commits to the chosen side wears that side's colour: the
   tab, the symbol in the amount field, the quote request and the trade button.
   The ticket carries the side so they change together. */
.trade-ticket[data-trade-side="sell"] .quote-button { border-color: var(--red); color: var(--red); }
.trade-ticket[data-trade-side="sell"] .quote-button:hover:not(:disabled) { color: var(--sell-ink); background: var(--sell-fill); }
.trade-ticket[data-trade-side="buy"] .amount-field strong { color: var(--green); }
.trade-ticket[data-trade-side="sell"] .amount-field strong { color: var(--red); }
.trade-ticket[data-trade-side="buy"] #execute-trade { border-color: var(--buy-fill); color: var(--buy-ink); background: var(--buy-fill); }
.trade-ticket[data-trade-side="sell"] #execute-trade { border-color: var(--sell-fill); color: var(--sell-ink); background: var(--sell-fill); }
.ticket-proof { margin: 10px 0 0; color: var(--muted); font: 8px/1.5 var(--mono); text-align: center; }

@media (max-width: 1050px) {
  .topbar { grid-template-columns: 205px 1fr auto; }
  .network-pill { display: none; }
  .product-shell { grid-template-columns: 190px minmax(0,1fr); }
  .market-overview { grid-template-columns: 1fr; }
  .automation-panel { grid-template-columns: 1fr; }
  .work-queue { grid-template-columns: 1fr; }
  .work-queue dl { grid-template-columns: repeat(3,1fr); }
  .overview-title { border-right: 0; border-bottom: 1px solid var(--line); }
  .operator-list { grid-template-columns: repeat(2,1fr); }
  .agent-profile-head { grid-template-columns: 84px minmax(0,1fr); }
  .agent-profile-image { width: 84px; height: 84px; }
  .agent-profile-link { grid-column: 1/-1; justify-self: start; }
  .agent-profile-stats { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .agent-profile-grid { grid-template-columns: 1fr; }
  .lifecycle-grid { grid-template-columns: 1fr 1fr; }
  .economics-summary { grid-template-columns: 1fr; }
  .economics-summary > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .economics-summary dl { grid-template-columns: repeat(3,1fr); }
  .economics-rules { grid-template-columns: 1fr; }
  .fee-claim-panel { grid-template-columns: 1fr; }
  .fee-claim-panel > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .lifecycle-grid li { min-height: 190px; border-bottom: 1px solid var(--line); }
  .lifecycle-grid li div { margin-top: 35px; }
}

@media (max-width: 760px) {
  .agent-policy > div { grid-template-columns: 1fr; }
  .topbar { height: auto; min-height: 60px; grid-template-columns: 1fr auto; padding: 9px 10px; }
  .global-search { grid-column: 1/-1; grid-row: 2; }
  .create-button { display: none; }
  .product-shell { display: block; }
  .sidebar { position: sticky; z-index: 20; top: 105px; width: 100%; height: auto; display: block; padding: 6px 10px; border-right: 0; border-bottom: 1px solid var(--line); }
  .protocol-identity, .sidebar-proof, .command-link, .side-nav small { display: none; }
  .side-nav { display: flex; gap: 5px; margin: 0; overflow-x: auto; }
  .side-nav button,.side-nav a { min-width: 135px; grid-template-columns: 22px 1fr auto; }
  .workspace { padding: 18px 12px 45px; }
  .workspace-head { align-items: start; }
  .sync-state { display: none; }
  .market-overview dl { grid-template-columns: 1fr 1fr; }
  .market-overview dl > div { border-bottom: 1px solid var(--line); }
  .quiet-button { display: none; }
  .wallet-disconnect { padding-inline: 9px; font-size: 10px; }
  .operator-list { grid-template-columns: 1fr; }
  .agent-profile-head { grid-template-columns: 64px minmax(0,1fr); gap: 12px; padding: 14px; }
  .agent-profile-image { width: 64px; height: 64px; }
  .agent-profile-stats { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .agent-profile-record-stats { grid-template-columns: 1fr; }
  .job-explorer-stats { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .agent-market-row, .agent-work-row { flex-wrap: wrap; }
  .operator-onboarding { grid-template-columns: 1fr; }
  .onboarding-copy { border-right: 0; border-bottom: 1px solid var(--line); }
  .operator-form { grid-template-columns: 1fr; }
  .lifecycle-grid { grid-template-columns: 1fr; }
  .economics-summary dl { grid-template-columns: 1fr 1fr; }
  .fee-claim-panel form { grid-template-columns: 1fr; }
  .fee-claim-panel form > * { grid-column: 1 !important; }
  .lifecycle-grid li { min-height: 160px; border-right: 0; }
  .lifecycle-grid li div { margin-top: 24px; }
  .status-strip { gap: 14px; overflow: hidden; }
  .status-strip span:nth-child(3), .risk-copy { display: none; }
  .create-dialog { width: 100vw; max-width: none; max-height: 100vh; height: 100vh; border: 0; }
  .dialog-grid { grid-template-columns: 1fr; }
  .launch-form { border-right: 0; }
  .launch-review { border-top: 1px solid var(--line); }
  .field-row, .pair-options { grid-template-columns: 1fr; }
  .market-dialog { width: 100vw; max-width: none; max-height: 100vh; height: 100vh; border: 0; }
  .market-dialog { margin: 0; overflow-x: hidden; overflow-y: auto; }
  .trade-shell, .trade-layout, .market-facts, .trade-ticket { width: 100%; min-width: 0; }
  .trade-shell > header { gap: 10px; }
  .trade-token { min-width: 0; }
  .trade-token > div { min-width: 0; }
  .trade-token h2, .trade-token p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #close-market { flex: 0 0 44px; }
  .trade-layout { grid-template-columns: 1fr; }
  .market-facts { border-right: 0; border-bottom: 1px solid var(--line); }
  .amount-field input { width: 100%; }
  .ticket-proof { overflow-wrap: anywhere; }
}

.profile-identity { display: grid; grid-template-columns: 64px 1fr auto; align-items: center; gap: 16px; margin-bottom: 16px; padding: 18px; border: 1px solid var(--line); background: linear-gradient(100deg,var(--light-surface, #0c0f1f),var(--light-surface, #07070b)); }
.wallet-identicon { width: 64px; height: 64px; display: grid; place-items: center; color: #fff; border: 1px solid var(--green); background: hsl(var(--wallet-hue,140) 55% 22%); font: 900 18px var(--mono); }
.profile-identity small,.profile-identity strong,.profile-identity p { display: block; }
.profile-identity small { color: var(--amber); font: 8px var(--mono); }
.profile-identity strong { margin-top: 5px; word-break: break-all; font: 13px var(--mono); }
.profile-identity p { margin: 6px 0 0; color: var(--muted); }
.profile-identity a { padding: 10px 12px; border: 1px solid var(--line); color: var(--green); font: 9px var(--mono); }
.profile-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.profile-grid > section { border: 1px solid var(--line); background: var(--light-surface, #07080c); }
.profile-grid > section > header { display: flex; justify-content: space-between; padding: 13px 15px; border-bottom: 1px solid var(--line); color: var(--amber); font: 9px var(--mono); }
.profile-assets,.profile-fees { grid-column: 1/-1; }
.profile-list { min-height: 100px; padding: 8px; }
.profile-list > p { padding: 14px; color: var(--muted); }
.profile-list button,.profile-list article { width: 100%; display: grid; grid-template-columns: 42px 1fr auto; align-items: center; gap: 10px; padding: 10px; border: 0; border-bottom: 1px solid var(--line); color: var(--text); background: transparent; text-align: left; }
.profile-list button { cursor: pointer; }
.profile-list button:hover { background: var(--green-soft); }
.profile-list img,.profile-list button > span { width: 42px; height: 42px; display: grid; place-items: center; object-fit: cover; border: 1px solid var(--line); color: var(--green); font: 10px var(--mono); }
.profile-list strong,.profile-list small { display: block; }
.profile-list small { margin-top: 4px; color: var(--muted); font: 8px var(--mono); }
.profile-list article { grid-template-columns: 1fr auto; }
.profile-list .profile-asset-row { grid-template-columns: 42px 1fr auto; }
.profile-asset-row .pair-option-mark { width: 42px; height: 42px; }
.profile-asset-row > b { font: 700 12px var(--mono); }
.profile-list .profile-fee-row { grid-template-columns: 1fr auto minmax(92px,auto); }
.profile-fee-row > button { min-height: 36px; padding: 8px 13px; border: 1px solid var(--green); color: var(--green); background: transparent; font: 700 9px var(--mono); cursor: pointer; }
.profile-fee-row > button:hover:not(:disabled) { color: var(--surface); background: var(--green); }
.profile-fee-row > button:disabled { cursor: not-allowed; opacity: .45; }
.profile-fee-status { margin: 0; padding: 10px 15px 13px; border-top: 1px solid var(--line); color: var(--muted); font: 9px/1.5 var(--mono); }
.project-metadata { margin-bottom: 14px; padding: 13px; border: 1px solid var(--line); background: var(--light-surface, #050509); }
.project-metadata p { margin: 0; color: var(--light-ink, #bcc0d4); line-height: 1.6; }
.project-metadata div { display: flex; gap: 7px; margin-top: 10px; }
.project-metadata a { padding: 6px 8px; border: 1px solid var(--line); color: var(--green); font: 8px var(--mono); }
.trade-token > img { width: 54px; height: 54px; object-fit: cover; border: 1px solid var(--green); }
.token-cell img { width: 32px; height: 32px; object-fit: cover; border: 1px solid var(--line); }
body.token-route .market-dialog { width: min(1180px,calc(100vw - 32px)); max-height: calc(100vh - 110px); margin: 90px auto 20px; }
body.token-route .market-dialog::backdrop { background: var(--light-surface, #030306); }
body.token-route .trade-shell { min-height: 650px; }

@media (max-width:760px) {
  .profile-identity { grid-template-columns: 48px 1fr; }
  .profile-identity a { grid-column: 1/-1; text-align: center; }
  .wallet-identicon { width: 48px; height: 48px; }
  .profile-grid { grid-template-columns: 1fr; }
  .profile-assets,.profile-fees { grid-column: auto; }
  .profile-list .profile-fee-row { grid-template-columns: 1fr auto; }
  .profile-fee-row > button { grid-column: 1/-1; width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* Shareable token market terminal */
body.token-route { overflow-x: hidden; }
body.token-route .product-shell,
body.token-route .status-strip { display: none; }
body.token-route .topbar { position: sticky; top: 0; z-index: 40; }
body.token-route .global-search { visibility: hidden; }
.market-dialog { width: 100%; max-height: none; margin: 0; padding: 0; border: 0; color: var(--text); background: var(--light-surface, #05060b); box-shadow: none; }
body.token-route .market-dialog { width: 100%; height: auto; max-height: none; margin: 0; overflow: visible; }
.market-dialog[hidden] { display: none; }
.market-dialog:not([hidden]) { display: block; }
.trade-shell { width: min(1480px,calc(100% - 40px)); min-height: calc(100vh - 62px); margin: 0 auto; padding: 24px 0 70px; }
.trade-shell > header { min-height: 102px; padding: 18px 20px; border: 1px solid var(--line-strong); background: linear-gradient(100deg,var(--light-surface, #111324) 0%,var(--light-surface, #0a0a10) 55%,var(--light-surface, #0c0e16) 100%); }
.trade-token > span,.trade-token > img { width: 62px; height: 62px; }
.trade-token h2 { font-size: clamp(24px,3vw,38px); letter-spacing: -.035em; }
.trade-token p { font-size: 10px; }
#close-market { width: auto; min-width: 116px; padding: 0 16px; font: 800 9px var(--mono); }
.trade-layout { display: grid; grid-template-columns: 330px minmax(0,1fr); gap: 14px; margin-top: 14px; align-items: start; }
.trade-ticket { order: 1; position: sticky; top: 86px; padding: 18px; border: 1px solid var(--line-strong); background: var(--light-surface, #0a0a10); }
.market-facts { order: 2; min-width: 0; padding: 0; border: 0; }
.project-metadata { min-height: 86px; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 20px; margin: 0 0 12px; padding: 17px 19px; border: 1px solid var(--line-strong); background: var(--light-surface, #0a0a10); }
.project-metadata p { max-width: 780px; font-size: 12px; }
.project-metadata div { justify-content: flex-end; margin: 0; flex-wrap: wrap; }
.project-metadata a { min-height: 34px; display: inline-flex; align-items: center; }
.market-metrics { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin-bottom: 12px; border: 1px solid var(--line-strong); background: var(--light-surface, #0a0a10); }
.market-metrics > div:nth-child(-n+3) { border-bottom: 1px solid var(--line); }
.market-metrics > div { min-width: 0; padding: 14px 15px; border-right: 1px solid var(--line); }
.market-metrics > div:last-child { border-right: 0; }
.market-metrics span,.market-metrics small { display: block; color: var(--muted); font: 800 7px/1.3 var(--mono); letter-spacing: .06em; }
.market-metrics strong { display: block; overflow: hidden; margin: 8px 0 5px; color: var(--text); font: 800 clamp(12px,1.35vw,18px) var(--mono); font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
.market-chart-card,.market-activity-card { border: 1px solid var(--line-strong); background: var(--light-surface, #0a0a10); }
.market-chart-card > header { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 15px; border-bottom: 1px solid var(--line); }
.market-chart-card > header span,.market-chart-card > header strong { display: block; }
.market-chart-card > header span { color: var(--green); font: 800 8px var(--mono); }
.market-chart-card > header strong { margin-top: 4px; font-size: 14px; }
.chart-range { display: flex; gap: 4px; }
.chart-range button { min-width: 44px; min-height: 34px; border: 1px solid var(--line); color: var(--muted); background: var(--light-surface, #050509); cursor: pointer; font: 800 8px var(--mono); }
.chart-range button.active { border-color: var(--green); color: var(--green); background: var(--green-soft); }
.market-chart { position: relative; min-height: 345px; display: grid; place-items: center; padding: 12px; overflow: hidden; }
.market-chart svg { width: 100%; height: 320px; overflow: visible; }
#market-chart-grid { fill: none; stroke: #1d213b; stroke-width: 1; stroke-dasharray: 5 7; }
#market-chart-fill { fill: url(#chart-fill); stroke: none; }
#market-chart-line { fill: none; stroke: var(--green); stroke-width: 3; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
#market-chart-empty { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); font: 9px var(--mono); }
#market-chart-empty[hidden] { display: none; }
.market-chart-card > footer { display: flex; justify-content: space-between; padding: 10px 15px; border-top: 1px solid var(--line); color: var(--muted); font: 8px var(--mono); }
#market-chart-proof { color: var(--green); }
.market-activity-card { margin-top: 12px; }
.market-activity-card > header { min-height: 48px; display: flex; align-items: center; justify-content: space-between; padding: 0 13px; border-bottom: 1px solid var(--line); }
.market-activity-card > header > span { color: var(--muted); font: 8px var(--mono); }
.activity-tabs { align-self: stretch; display: flex; }
.activity-tabs button { min-width: 118px; border: 0; border-bottom: 2px solid transparent; color: var(--muted); background: transparent; cursor: pointer; font: 800 9px var(--mono); }
.activity-tabs button.active { border-color: var(--green); color: var(--text); }
.market-activity-body { min-height: 180px; max-height: 330px; overflow: auto; }
.market-activity-body > p { padding: 22px; color: var(--muted); font: 9px var(--mono); }
.activity-table { width: 100%; min-width: 720px; border-collapse: collapse; font: 9px var(--mono); font-variant-numeric: tabular-nums; }
.activity-table th { position: sticky; top: 0; z-index: 1; padding: 9px 13px; color: var(--muted); background: var(--light-surface, #0a0a10); text-align: left; font-size: 7px; }
.activity-table td { height: 47px; padding: 8px 13px; border-top: 1px solid var(--line); }
.activity-table th.numeric,.activity-table td.numeric { text-align: right; }
.activity-table a { color: var(--muted); text-decoration: none; }
.activity-side { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; text-transform: uppercase; }
.activity-side::before { content: ""; width: 7px; height: 7px; border: 1px solid currentColor; }
.activity-side.buy { color: var(--green); }
.activity-side.sell { color: var(--red); }
/* A trade that just landed lights up its row, so the live feed reads as live
   instead of only being live. */
@keyframes trade-row-arrival { from { background: rgba(var(--grid-rgb), .24); } to { background: transparent; } }
.activity-table tbody tr.is-new td { animation: trade-row-arrival 1.8s ease-out both; }
.fact-head { margin-top: 12px; padding: 13px 15px; border: 1px solid var(--line-strong); background: var(--light-surface, #0a0a10); }
.market-facts > dl { grid-template-columns: repeat(4,minmax(0,1fr)); border: 1px solid var(--line-strong); border-top: 0; background: var(--light-surface, #0a0a10); }
.market-facts > dl > div { min-height: 72px; padding: 13px !important; border-right: 1px solid var(--line) !important; }
.market-facts > dl > div:last-child { border-right: 0 !important; }
.curve-meter { margin: 0; padding: 15px; border: 1px solid var(--line-strong); border-top: 0; background: var(--light-surface, #0a0a10); }
.trade-explorer { margin: 12px 0 0; }
.project-team,.creator-studio { background: var(--light-surface, #0a0a10); }

@media (max-width: 1050px) {
  .market-metrics { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .market-metrics > div { border-bottom: 1px solid var(--line); }
  .trade-layout { grid-template-columns: 300px minmax(0,1fr); }
}

@media (max-width: 760px) {
  body.token-route .topbar { position: static; }
  body.token-route .topbar { grid-template-columns: minmax(0,1fr) auto; gap: 6px; overflow: hidden; }
  body.token-route .brand { min-width: 0; }
  body.token-route .brand span { overflow: hidden; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
  body.token-route .top-actions { min-width: 0; }
  body.token-route .wallet-button { max-width: 126px; overflow: hidden; padding-inline: 9px; text-overflow: ellipsis; white-space: nowrap; }
  body.token-route .global-search { display: none; }
  .trade-shell { width: 100%; padding: 0 0 50px; }
  .trade-shell > header { min-width: 0; gap: 8px; padding-inline: 10px; border-inline: 0; overflow: hidden; }
  .trade-token { flex: 1 1 auto; min-width: 0; }
  .trade-token h2 { font-size: 23px; }
  #close-market { flex: 0 0 44px; min-width: 44px; width: 44px; overflow: hidden; padding: 0; white-space: nowrap; text-indent: -999px; }
  #close-market::after { content: "←"; display: grid; place-items: center; text-indent: 0; font-size: 17px; }
  .trade-layout { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
  .trade-ticket { position: static; order: 1; width: calc(100% - 20px); margin: 0 10px; }
  .market-facts { order: 2; width: 100%; }
  .project-metadata,.market-chart-card,.market-activity-card,.fact-head,.market-facts > dl,.curve-meter,.project-team,.creator-studio { margin-inline: 10px; }
  .project-metadata { grid-template-columns: 1fr; }
  .project-metadata div { justify-content: flex-start; }
  .market-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); margin-inline: 10px; }
  .market-metrics > div:nth-child(even) { border-right: 0; }
  .market-chart { min-height: 260px; }
  .market-chart svg { height: 245px; }
  .market-facts > dl { grid-template-columns: 1fr 1fr; }
  .activity-table th:nth-child(4),.activity-table td:nth-child(4) { display: none; }
}

/* Product documentation */
/* The manual is read, not scanned. Every docs size below is the app's own scale ×1.2 —
   body 13 → 15.6, card copy 10 → 12, kickers 9 → 10.8, h2 clamp 28/4/47 → 33.6/4.8/56.4 —
   so the whole ladder grows together. Scaling one size would flatten the hierarchy that
   the gap between a 12px step and a 56px section head is carrying. */
.docs-page { background: var(--light-surface, #07080c); font-size: 15.6px; }
/* docs.html loads styles.css only, so it never received workspace.css's day
   green (#4d701c) and kept #668a24 — 4.0:1 on the white docs surface. The
   kickers and inline links are all small text, so they use the darker day
   green (5.8:1 on white); elsewhere it only tints borders and soft fills. */
:root[data-theme="light"] .docs-page { --green: #4d701c; }
.docs-topbar { grid-template-columns: 1fr auto 1fr; }
.docs-top-actions { justify-self: end; display: flex; align-items: center; gap: 10px; }
.docs-topbar > strong { color: var(--muted); font: 800 10.8px var(--mono); letter-spacing: .12em; }
.docs-return { justify-self: end; color: var(--amber); text-decoration: none; font: 800 10.8px var(--mono); }
.docs-shell { width: min(1320px,100%); display: grid; grid-template-columns: 230px minmax(0,1fr); margin: 0 auto; }
.docs-nav { position: sticky; top: 62px; height: calc(100vh - 62px); display: grid; align-content: start; gap: 4px; padding: 34px 22px; overflow-y: auto; border-right: 1px solid var(--line); }
.docs-nav span { margin: 14px 0 6px; color: var(--amber); font: 800 9.6px var(--mono); letter-spacing: .08em; }
.docs-nav span:first-child { margin-top: 0; }
.docs-nav a { padding: 10px 9px; border-left: 2px solid transparent; color: var(--muted); text-decoration: none; font: 12px var(--mono); }
.docs-nav a:hover { border-color: var(--green); color: var(--green); background: var(--green-soft); }
.docs-content { padding: 45px clamp(25px,5vw,75px) 100px; }
.docs-content > section { padding: 65px 0 15px; border-top: 1px solid var(--line); scroll-margin-top: 70px; }
.docs-content section > span,.docs-hero > span { color: var(--green); font: 800 10.8px var(--mono); letter-spacing: .1em; }
.docs-hero { min-height: 455px; display: grid; align-content: center; }
.docs-hero h1 { max-width: 900px; margin: 14px 0; font-size: clamp(50.4px,8.4vw,98.4px); line-height: .94; letter-spacing: -.06em; }
.docs-hero > p { max-width: 720px; color: var(--muted); font-size: 18px; line-height: 1.7; }
.docs-hero > div { display: flex; gap: 8px; margin-top: 20px; }
.docs-hero > div > b { padding: 7px 9px; border: 1px solid var(--line); color: var(--amber); font: 9.6px var(--mono); }
.docs-hero .network-independence { display: block; max-width: 760px; margin-top: 14px; color: var(--muted); font: 10.8px/1.55 var(--mono); }
.docs-content h2 { max-width: 760px; margin: 10px 0 26px; font-size: clamp(33.6px,4.8vw,56.4px); line-height: 1.05; letter-spacing: -.04em; }
.docs-content section > p { max-width: 850px; color: var(--muted); font-size: 15.6px; line-height: 1.75; }
.docs-content a { color: var(--green); }
.docs-lead { margin-top: -12px; margin-bottom: 24px; font-size: 18px !important; }
.docs-content code { overflow-wrap: anywhere; }
.docs-steps,.docs-fees { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(5,1fr); border: 1px solid var(--line); }
.docs-steps li,.docs-fees article { min-height: 205px; padding: 17px; border-right: 1px solid var(--line); background: var(--surface); }
.docs-steps li:last-child,.docs-fees article:last-child { border: 0; }
.docs-steps b { color: var(--amber); font: 12px var(--mono); }
.docs-steps--four { grid-template-columns: repeat(4,1fr); }
.docs-steps strong,.docs-fees strong { display: block; margin-top: 45px; }
.docs-steps p,.docs-fees p,.docs-columns p { color: var(--muted); font-size: 12px; line-height: 1.6; }
.docs-fees article > b { color: var(--green); font: 900 32.4px var(--mono); }
.docs-fees strong { margin-top: 25px; }
.docs-callout { margin-top: 12px; padding: 18px; border-left: 3px solid var(--green); background: var(--green-soft); }
.docs-callout.warning { border-color: var(--amber); background: var(--amber-soft); }
.docs-callout p { margin: 6px 0 0; color: var(--muted); font-size: 13.2px; line-height: 1.6; }
.docs-columns { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }
.docs-columns article { min-height: 210px; padding: 20px; border: 1px solid var(--line); background: var(--surface); }
.docs-columns h3 { margin: 0 0 20px; font-size: 19.2px; }
.docs-columns ul { padding-left: 18px; color: var(--muted); font-size: 12px; line-height: 2; }
.endpoint-list { display: grid; grid-template-columns: minmax(230px,.65fr) 1.35fr; border: 1px solid var(--line); }
.endpoint-list code,.endpoint-list p { min-height: 48px; display: flex; align-items: center; padding: 10px 14px; margin: 0; border-bottom: 1px solid var(--line); }
.endpoint-list code { color: var(--green); background: var(--surface); font-size: 12px; }
.endpoint-list p { border-left: 1px solid var(--line); color: var(--muted); font-size: 12px; }
.gate-list { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 0; list-style: none; }
.gate-list li { padding: 13px 15px; border: 1px solid var(--line); color: var(--light-ink, #bdc1d5); background: var(--surface); font: 12px var(--mono); }
.gate-list li::before { content: "□"; margin-right: 10px; color: var(--amber); }
.docs-foot { margin-top: 35px !important; padding-top: 20px; border-top: 1px solid var(--line); }
@media (max-width:900px) { .docs-shell { grid-template-columns:1fr; }.docs-nav { display:none; }.docs-steps,.docs-fees { grid-template-columns:1fr 1fr; }.docs-columns { grid-template-columns:1fr; } }
@media (max-width:600px) { .docs-topbar { grid-template-columns:1fr auto; }.docs-topbar > strong { display:none; }.docs-content { padding:30px 14px 70px; }.docs-hero { min-height:380px; }.docs-steps,.docs-fees,.gate-list { grid-template-columns:1fr; }.docs-steps li,.docs-fees article { min-height:150px;border-right: 0;border-bottom: 1px solid var(--line);}.endpoint-list { grid-template-columns:1fr; }.endpoint-list p { border-left: 0; } }

::view-transition-old(root),::view-transition-new(root) { animation-duration: 140ms; animation-timing-function: ease-out; }
@media (prefers-reduced-motion: reduce) { ::view-transition-old(root),::view-transition-new(root) { animation-duration: 0s; } }

/* Creator-owned project agent workspace */
.creator-studio { margin-top: 18px; border: 1px solid var(--line); background: var(--light-surface, #0b0d1a); }
.studio-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px; border-bottom: 1px solid var(--line); }
.studio-head > div { display: grid; gap: 4px; }
.studio-head span,.studio-head b { color: var(--green); font: 800 8px var(--mono); letter-spacing: .08em; }
.studio-head strong { font-size: 14px; }
.creator-chat-log { max-height: 420px; overflow: auto; padding: 14px; }
.studio-intro { color: var(--muted); font: 10px/1.65 var(--mono); }
.creator-message { max-width: 82%; margin: 9px 0; padding: 11px; border: 1px solid var(--line); background: var(--surface); }
.creator-message.is-pending { border-style: dashed; color: var(--muted); }
.creator-message.is-pending p { margin: 4px 0 0; }
.creator-message.is-creator { margin-left: auto; background: var(--light-surface, #181c32); }
.creator-message strong { color: var(--green); font: 8px var(--mono); }
.creator-message.is-creator strong { color: var(--amber); }
.creator-message p { margin: 6px 0 0; white-space: pre-wrap; color: var(--text); font: 10px/1.6 var(--mono); }
#creator-chat-connect { width: calc(100% - 28px); margin: 0 14px 14px; padding: 11px; border: 1px solid var(--amber); background: var(--amber); color: #070810; font: 800 9px var(--mono); cursor: pointer; }
#creator-chat-connect:disabled { opacity: .42; cursor: not-allowed; }
#creator-chat-form { padding: 14px; border-top: 1px solid var(--line); }
#creator-chat-input { width: 100%; padding: 11px; resize: vertical; border: 1px solid var(--line-strong); background: var(--light-surface, #06070c); color: var(--text); font: 10px/1.6 var(--mono); }
#creator-chat-form > div { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
#creator-chat-input:focus { outline: none; border-color: var(--green); }
#creator-chat-status { flex: 1 1 220px; min-width: 0; color: var(--muted); font: 8px/1.5 var(--mono); }
#creator-chat-send { padding: 9px 14px; border: 1px solid var(--amber); background: var(--amber); color: #070810; font: 800 9px var(--mono); }
.creator-chat-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.creator-chat-actions button { white-space: nowrap; }
#creator-chat-attach { padding: 9px 12px; border: 1px solid var(--line-strong); background: transparent; color: var(--text); font: 800 9px var(--mono); cursor: pointer; }
#creator-chat-attach:hover { border-color: var(--amber); color: var(--amber); }
.creator-chat-attachment { padding: 8px; border: 1px dashed var(--line-strong); background: var(--light-surface, #06070c); }
.creator-chat-attachment img { width: 64px; height: 64px; object-fit: cover; border: 1px solid var(--line); }
.creator-chat-attachment > span { display: grid; flex: 1; gap: 3px; min-width: 0; }
.creator-chat-attachment strong { color: var(--green); font: 800 8px var(--mono); }
.creator-chat-attachment small { overflow: hidden; color: var(--muted); font: 8px var(--mono); text-overflow: ellipsis; white-space: nowrap; }
.creator-chat-attachment button { padding: 7px 10px; border: 1px solid var(--line-strong); background: transparent; color: var(--muted); font: 800 8px var(--mono); cursor: pointer; }
.creator-chat-attachment button:hover { border-color: var(--amber); color: var(--amber); }
.creator-message img { max-width: 240px; margin-top: 8px; border: 1px solid var(--line); }
.creator-build { display: grid; gap: 11px; margin: 12px 0; padding: 12px; border: 1px solid var(--line-strong); border-left: 3px solid var(--amber); background: var(--light-surface, #07080f); }
.creator-build > header,.creator-build > footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.creator-build > header b { color: var(--green); font: 8px var(--mono); }
.creator-build > ol { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 4px; margin: 0; padding: 0; list-style: none; }
.creator-build > ol li { display: grid; gap: 5px; color: var(--muted); font: 7px var(--mono); text-transform: uppercase; }
.creator-build > ol i { height: 4px; border-radius: 2px; background: var(--line); }
.creator-build > ol .is-done i { background: var(--accent-fill, var(--green)); }
.creator-build > ol .is-done span { color: var(--green); }
.creator-build > ol .is-current i { background: var(--amber); box-shadow: 0 0 8px rgba(255,184,0,.5); }
.creator-build > ol .is-current span { color: var(--amber); font-weight: 800; }
.creator-build.is-failed { border-left-color: var(--red); }
.creator-build.is-failed > header b { color: var(--red); border-color: var(--red); }
.creator-build > footer .is-ghost { background: transparent; color: var(--text); }
.creator-build-preview { min-height: 360px; overflow: hidden; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface-2); }
.creator-build-preview iframe { width: 100%; height: 440px; display: block; border: 0; background: #fff; }
.creator-build > p { margin: 0; color: var(--muted); font: 9px/1.6 var(--mono); }
.creator-build > footer > * { flex: 1; padding: 8px; border: 1px solid var(--amber); background: var(--amber); color: #070810; text-align: center; text-decoration: none; font: 800 8px var(--mono); }
@media (max-width:600px) { .creator-build > ol { grid-template-columns:1fr; }.creator-build > footer { flex-direction:column;align-items:stretch; } }

/* Approved Ecosystem Terminal F — production shell */
body:not(.docs-page):not(.token-route) .topbar { height: 70px; grid-template-columns: 230px minmax(280px,540px) 1fr auto; gap: 18px; padding: 0 16px; border-color: var(--light-border, #2b2e46); background: var(--light-surface, #06070a); }
body:not(.docs-page):not(.token-route) .brand img { width: 36px; height: 36px; border: 2px solid var(--green); border-radius: 9px; }
body:not(.docs-page):not(.token-route) .brand span { font-size: 15px; }
body:not(.docs-page):not(.token-route) .brand em { display: block; margin: 2px 0 0; color: var(--green); font-size: 7px; letter-spacing: .12em; }
.top-nav { display: flex; justify-content: flex-end; gap: 5px; }
.top-nav button,.top-nav a { min-height: 42px; padding: 0 13px; border: 0; color: var(--light-ink, #abafc9); background: transparent; text-decoration: none; cursor: pointer; font-size: 12px; }
.top-nav a { display: grid; place-items: center; }
.top-nav button:hover,.top-nav a:hover { color: var(--green); }
body:not(.docs-page):not(.token-route) .create-button { min-height: 44px; border-radius: 10px; color: #060816; background: var(--accent-fill, var(--green)); border-color: var(--green); box-shadow: none; }
body:not(.docs-page):not(.token-route) .wallet-button { min-height: 44px; border-radius: 10px; }

body:not(.docs-page):not(.token-route) .product-shell { grid-template-columns: 102px minmax(0,1fr); min-height: calc(100vh - 98px); }
body:not(.docs-page):not(.token-route) .sidebar { top: 70px; height: calc(100vh - 98px); padding: 10px 6px; align-items: stretch; border-color: var(--light-border, #2b2e46); background: var(--light-surface, #06070a); }
body:not(.docs-page):not(.token-route) .protocol-identity { display: none; }
body:not(.docs-page):not(.token-route) .side-nav { display: flex; flex: 1; flex-direction: column; gap: 4px; margin: 0; }
body:not(.docs-page):not(.token-route) .side-nav small { margin: 8px 5px 3px; color: #565d87; font-size: 7px; }
body:not(.docs-page):not(.token-route) .side-nav button,body:not(.docs-page):not(.token-route) .side-nav a { min-height: 58px; display: flex; flex-direction: column; justify-content: center; gap: 7px; padding: 5px 2px; border-radius: 9px; text-align: center; color: var(--light-ink, #959abb); font: 7px var(--mono); text-transform: uppercase; }
body:not(.docs-page):not(.token-route) .side-nav button span,body:not(.docs-page):not(.token-route) .side-nav a span { color: var(--light-ink, #c7c9db); font-size: 17px; line-height: 1; }
body:not(.docs-page):not(.token-route) .side-nav button b,body:not(.docs-page):not(.token-route) .side-nav a b { display: none; }
body:not(.docs-page):not(.token-route) .side-nav button.active,
body:not(.docs-page):not(.token-route) .side-nav a.active { min-height: 72px; color: #05060c; background: var(--accent-fill, var(--green)); box-shadow: none; }
body:not(.docs-page):not(.token-route) .side-nav button.active span,
body:not(.docs-page):not(.token-route) .side-nav a.active span { color: #05060c; }
body:not(.docs-page):not(.token-route) .sidebar-proof { margin-top: auto; padding: 10px 3px; text-align: center; }
body:not(.docs-page):not(.token-route) .sidebar-proof span { justify-content: center; font-size: 7px; }
body:not(.docs-page):not(.token-route) .sidebar-proof p,body:not(.docs-page):not(.token-route) .command-link { display: none; }

body:not(.docs-page):not(.token-route) .workspace { padding: 16px 16px 48px; }
#view-markets > .workspace-head { display: none; }
.ecosystem-hero { min-height: 480px; grid-template-columns: minmax(0,1.6fr) minmax(420px,.9fr); margin: 0 0 16px; border-color: var(--light-border, #38459d); border-radius: 14px; background: radial-gradient(circle at 85% 45%,rgba(var(--grid-rgb),.24),transparent 30%),linear-gradient(135deg,var(--light-surface, #0a0b10),var(--light-surface, #0c102b)); }
.ecosystem-copy { padding: clamp(42px,4.5vw,76px) clamp(40px,4.5vw,70px); }
.ecosystem-copy h2 { margin: 17px 0 14px; font-size: clamp(66px,6.6vw,108px); line-height: .78; letter-spacing: -.085em; white-space: nowrap; }
.ecosystem-copy h2 span { color: var(--light-ink, #f9f9fc); }
.ecosystem-copy h2 em { color: var(--green); }
.ecosystem-copy > p { max-width: 720px; color: var(--light-ink, #c0c3d7); font-size: 14px; line-height: 1.55; }
.hero-actions { margin-top: 24px; }
.hero-actions button,.hero-actions a { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 0 25px; border: 1px solid var(--light-border, #3a3e5a); border-radius: 8px; cursor: pointer; text-decoration: none; font: 800 11px var(--mono); }
.hero-actions .hero-primary { color: #05070e; background: var(--accent-fill, var(--green)); border-color: var(--green); box-shadow: none; }
.hero-proof { margin-top: 25px; font-size: 7px; }
.agent-signal { min-height: 480px; border: 0; }
.signal-orbit { width: 380px; border-color: rgba(var(--grid-rgb),.34); }
.hero-agent-grid { width: 390px; min-height: 360px; }
.hero-agent-card { width: 220px; border-radius: 8px; border-color: var(--light-border, #5766cd); }
.hero-agent-card.agent-1 { z-index: 2; top: 85px; left: 7px; transform: rotate(-10deg); }
.hero-agent-card.agent-2 { z-index: 3; top: 20px; right: 4px; left: auto; transform: rotate(6deg); }
.hero-agent-card.agent-3 { z-index: 1; top: 130px; right: 55px; transform: rotate(1deg) scale(.88); }
.hero-agent-card img { aspect-ratio: .9; }
.signal-caption { right: 24px; bottom: 24px; left: auto; width: 150px; padding: 12px; border: 1px solid var(--light-border, #5766cd); border-radius: 9px; background: rgba(6,9,5,.9); }

.ecosystem-products { grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; padding: 24px; margin-bottom: 16px; border: 1px solid var(--light-border, #2d3046); border-radius: 14px; background: var(--light-surface, #08090d); }
.products-head { grid-column: 1/-1; display: flex; align-items: end; justify-content: space-between; padding: 0 0 12px; }
.products-head span,.section-heading span,.home-agent-network header span,.home-fee-engine > span,.home-lifecycle header span { color: var(--green); font: 800 8px var(--mono); letter-spacing: .12em; }
.products-head h2,.section-heading h2,.home-agent-network h2,.home-fee-engine h2,.home-lifecycle h2 { margin: 8px 0 0; font-size: 27px; letter-spacing: -.04em; }
.products-head p { margin: 0; color: var(--muted); }
.product-card { min-height: 215px; padding: 18px; border: 1px solid var(--light-border, #33364f); border-radius: 9px; }
.product-card.featured { color: #060917; background: var(--accent-fill, var(--green)); }
.product-card > i { width: 45px; height: 45px; display: grid; place-items: center; margin-bottom: 30px; border: 1px solid currentColor; border-radius: 9px; font-size: 20px; font-style: normal; }
.product-card > span { color: inherit; font-size: 7px; }
.product-card > strong { margin-top: 12px; font-size: 20px; }
.product-card > p { min-height: 45px; margin: 7px 0 10px; color: var(--muted); font-size: 11px; }
.product-card.featured > p { color: #1a2b9d; }
.product-card button,.product-card > a { min-height: auto; width: auto; display: inline; margin-top: auto; padding: 0; border: 0; color: var(--green); background: transparent; text-align: left; text-decoration: none; font: 800 8px var(--mono); text-transform: uppercase; }
.product-card.featured button { color: #060917; background: transparent; }
/* The featured card's lime fill needs the same dark ink for its link as for
   its button: --green on #b6ee58 was 1:1 in night, 4.2:1 in day. */
.product-card.featured > a { color: #060917; }

.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin: 28px 8px 14px; scroll-margin-top: 80px; }
.section-heading p { margin: 7px 0 0; color: var(--muted); }
.market-overview { margin-bottom: 0; border-radius: 12px 12px 0 0; }
.market-board { margin-bottom: 16px; border-radius: 0 0 12px 12px; }
.board-state { color: var(--green); font: 8px var(--mono); }

.home-lower-grid { display: grid; grid-template-columns: minmax(0,2fr) minmax(330px,1fr); gap: 14px; margin-top: 16px; }
.home-lower-grid--single { grid-template-columns: 1fr; }
.home-markets { margin-top: 16px; padding: 24px; border: 1px solid var(--light-border, #2d3046); border-radius: 13px; background: var(--light-surface, #08090d); }
.home-markets-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; padding-bottom: 16px; }
.home-markets-head > div { min-width: 0; }
.home-markets-head span { color: var(--green); font: 800 9px var(--mono); letter-spacing: .12em; }
.home-markets-head h2 { margin: 8px 0 0; font-size: 27px; letter-spacing: -.04em; }
.home-markets-head p { max-width: 720px; margin: 8px 0 0; color: var(--muted); font-size: 13px; line-height: 1.55; }
.home-markets-head > a { flex: none; display: inline-flex; align-items: center; min-height: 42px; padding: 0 15px; border: 1px solid var(--light-border, #3c415e); border-radius: 8px; color: var(--green); font-size: 12px; text-decoration: none; white-space: nowrap; }
.home-market-empty { margin: 0; padding: 18px; border: 1px dashed var(--line); border-radius: 12px; color: var(--muted); }
.home-market-empty a { color: var(--green); }
.home-market-empty.is-error { color: var(--danger, #ff6b6b); border-color: var(--danger, #ff6b6b); }
.profile-nfts { margin-top: 12px; border: 1px solid var(--line); background: var(--light-surface, #07080c); }
.profile-nfts > header { display: flex; justify-content: space-between; padding: 13px 15px; border-bottom: 1px solid var(--line); color: var(--amber); font: 9px var(--mono); }
.profile-nft-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(148px,1fr)); gap: 10px; padding: 14px; }
.profile-nft-empty { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 12px; }
.profile-nft { display: block; overflow: hidden; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-2); color: var(--text); text-decoration: none; }
.profile-nft:hover { border-color: var(--green); }
.profile-nft img, .profile-nft-fallback { width: 100%; aspect-ratio: 1; display: flex; align-items: center; justify-content: center; object-fit: cover; background: var(--surface-3); color: var(--green); font: 800 22px var(--mono); }
.profile-nft div { padding: 8px 9px; }
.profile-nft strong { display: block; overflow: hidden; color: var(--text); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.profile-nft span { display: block; margin-top: 4px; color: var(--muted); font: 9px var(--mono); }
.profile-nft-more { grid-column: 1 / -1; display: flex; justify-content: center; padding: 8px 0 2px; }
.profile-nft-more button { min-height: 34px; padding: 0 14px; border: 1px solid var(--line-strong); border-radius: 8px; background: transparent; color: var(--green); font: 700 10px var(--mono); letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
.profile-agent-redirect { margin-top: 16px; padding: clamp(22px,4vw,42px); border: 1px solid var(--line); background: linear-gradient(125deg,var(--green-soft),var(--surface) 58%); }
.profile-agent-redirect > span { color: var(--green); font: 800 9px var(--mono); letter-spacing: .1em; }
.profile-agent-redirect h2 { max-width: 720px; margin: 9px 0; font-size: clamp(24px,3vw,40px); }
.profile-agent-redirect p { max-width: 760px; margin: 0 0 20px; color: var(--muted); line-height: 1.7; }
.home-agent-network,.home-fee-engine,.home-lifecycle { border: 1px solid var(--light-border, #2d3046); border-radius: 13px; background: var(--light-surface, #08090d); }
.home-agent-network { padding: 24px; }
.home-agent-network > header,.home-lifecycle > header { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.home-agent-network header p { max-width: 700px; margin: 8px 0 0; color: var(--muted); line-height: 1.5; }
.home-agent-network header button,.home-lifecycle header button { min-height: 42px; padding: 0 15px; border: 1px solid var(--light-border, #3c415e); border-radius: 8px; color: var(--green); background: transparent; cursor: pointer; }
.home-agent-list { display: grid; gap: 8px; margin-top: 18px; }
.home-agent-list > p { padding: 25px; border: 1px dashed var(--light-border, #373b56); color: var(--muted); text-align: center; }
.home-agent-list article { display: grid; grid-template-columns: 52px 1fr auto 90px; align-items: center; gap: 12px; padding: 9px; border: 1px solid var(--light-border, #33364f); border-radius: 8px; }
.home-agent-list img { width: 52px; height: 52px; object-fit: cover; image-rendering: pixelated; border-radius: 8px; }
.home-agent-list small,.home-agent-list strong,.home-agent-list span { display: block; }
.home-agent-list small { color: var(--green); font: 7px var(--mono); }
.home-agent-list strong { margin-top: 2px; }
.home-agent-list span { margin-top: 3px; color: var(--muted); font-size: 9px; }
.home-agent-list article > b { color: var(--green); font: 7px var(--mono); }
.home-agent-list article > a { padding: 10px; border: 1px solid var(--light-border, #3c415e); border-radius: 7px; color: var(--text); text-align: center; text-decoration: none; font: 9px var(--mono); text-transform: uppercase; }
.home-fee-engine { padding: 25px; color: #060816; background: var(--accent-fill, var(--green)); }
.home-fee-engine > span { color: #132177; }
.home-fee-engine h2 { max-width: 320px; font-size: 34px; line-height: .96; }
.home-fee-engine > p { margin: 16px 0 22px; color: #152380; line-height: 1.5; }
.home-fee-engine dl { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0; }
.home-fee-engine dl div { display: flex; justify-content: space-between; padding: 13px; border: 1px solid #99a4ee; border-radius: 7px; }
.home-fee-engine dl div:last-child { grid-column: 1/-1; }
.home-fee-engine dt { font: 7px var(--mono); text-transform: uppercase; }
.home-fee-engine dd { margin: 0; font-weight: 900; }
.home-fee-engine > button { width: 100%; min-height: 44px; margin-top: 20px; border: 1px solid var(--light-border, #0b1344); border-radius: 8px; color: #060816; background: transparent; cursor: pointer; }
.home-lifecycle { padding: 25px; margin-top: 16px; }
/* The lifecycle explains how a launch becomes an operated market. It is worth
   reading once, not on every visit, so it opens with one click. */
.home-lifecycle > summary { cursor: pointer; list-style: none; display: grid; gap: 6px; }
.home-lifecycle > summary::-webkit-details-marker { display: none; }
.home-lifecycle > summary > span { color: var(--green); font: 8px var(--mono); letter-spacing: .12em; }
.home-lifecycle > summary > b { font-size: 20px; }
.home-lifecycle > summary::after { content: "+ more"; color: var(--muted); font: 9px var(--mono); }
.home-lifecycle[open] > summary::after { content: "− less"; }
.home-lifecycle-more { margin: 14px 0 0; }
.home-lifecycle ol { display: grid; grid-template-columns: repeat(5,1fr); padding: 25px 0 0; margin: 0; list-style: none; }
.home-lifecycle li { min-height: 195px; padding: 16px; border-right: 1px solid var(--light-border, #2e3248); }
.home-lifecycle li:last-child { border: 0; }
.home-lifecycle li b { width: 34px; height: 34px; display: grid; place-items: center; margin-bottom: 52px; border: 1px solid var(--green); border-radius: 50%; color: var(--green); font: 9px var(--mono); }
.home-lifecycle li span { display: block; color: var(--green); font: 7px var(--mono); }
.home-lifecycle li strong { display: block; margin-top: 10px; }
.home-lifecycle li p { color: var(--muted); font-size: 10px; line-height: 1.5; }
.home-footer { min-height: 92px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 22px; margin-top: 16px; padding: 18px 25px; border: 1px solid var(--light-border, #2d3046); border-radius: 13px; background: var(--light-surface, #08090d); }
.home-footer > div { display: flex; align-items: center; gap: 10px; }
.home-footer img { width: 36px; height: 36px; border: 2px solid var(--green); border-radius: 9px; }
.home-footer strong,.home-footer small { display: block; }
.home-footer small { color: var(--muted); font-size: 9px; }
.home-footer nav { display: flex; gap: 16px; }
.home-footer nav a,.home-footer nav button { padding: 0; border: 0; color: var(--light-ink, #a6abc6); background: transparent; text-decoration: none; cursor: pointer; }
.home-footer > p { justify-self: end; margin: 0; font: 7px var(--mono); }
.home-footer .network-independence { grid-column: 1 / -1; max-width: 780px; color: var(--muted); font: 8px/1.5 var(--mono); }
.home-footer > p i { width: 7px; height: 7px; display: inline-block; margin-right: 8px; background: var(--accent-fill, var(--green)); box-shadow: 0 0 10px var(--green); }

@media (max-width: 1180px) {
  body:not(.docs-page):not(.token-route) .topbar { grid-template-columns: 210px minmax(240px,1fr) auto; }
  .top-nav { display: none; }
  .ecosystem-hero { grid-template-columns: 1fr 390px; }
  .ecosystem-copy h2 { font-size: clamp(58px,7vw,82px); }
  .ecosystem-products { grid-template-columns: 1fr 1fr; }
  .home-lower-grid { grid-template-columns: 1fr; }
}
@media (max-width: 820px) {
  body:not(.docs-page):not(.token-route) .product-shell { display: block; }
  body:not(.docs-page):not(.token-route) .sidebar { position: sticky; top: 105px; width: 100%; height: auto; padding: 6px 10px; }
  body:not(.docs-page):not(.token-route) .side-nav { flex-direction: row; overflow-x: auto; }
  body:not(.docs-page):not(.token-route) .side-nav small,body:not(.docs-page):not(.token-route) .nav-activity,body:not(.docs-page):not(.token-route) .nav-fees { display: none; }
  body:not(.docs-page):not(.token-route) .side-nav button,body:not(.docs-page):not(.token-route) .side-nav a,body:not(.docs-page):not(.token-route) .side-nav button.active { min-width: 100px; min-height: 54px; flex: 0 0 auto; }
  .ecosystem-hero { grid-template-columns: 1fr; }
  .ecosystem-copy h2 { font-size: clamp(48px,12vw,76px); }
  .home-lifecycle ol { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  body:not(.docs-page):not(.token-route) .topbar { grid-template-columns: 1fr auto; }
  .ecosystem-copy { padding: 38px 25px; }
  .ecosystem-copy h2 { font-size: 13vw; white-space: normal; }
  .agent-signal { min-height: 400px; }
  .hero-agent-grid { width: 330px; }
  .hero-agent-card { width: 175px; }
  .ecosystem-products { grid-template-columns: 1fr; padding: 16px; }
  .products-head,.section-heading,.home-agent-network > header,.home-lifecycle > header,.home-markets-head { align-items: flex-start; flex-direction: column; }
  .home-agent-list article { grid-template-columns: 48px 1fr; }
  .home-agent-list article > b,.home-agent-list article > a { grid-column: 1/-1; }
  .home-lifecycle ol { grid-template-columns: 1fr; }
  .home-lifecycle li { min-height: auto; border-right: 0; border-bottom: 1px solid var(--light-border, #2e3248); }
  .home-lifecycle li b { margin-bottom: 20px; }
  .home-footer { grid-template-columns: 1fr; }
  .home-footer nav { flex-wrap: wrap; }
  .home-footer > p { justify-self: start; }
}

/* Signalbound Pump brand lockup and readability pass */
body:not(.docs-page):not(.token-route) .topbar {
  grid-template-columns: 270px minmax(280px,540px) 1fr auto;
}
body:not(.docs-page):not(.token-route) .pump-brand {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 11px;
  color: var(--text);
  text-decoration: none;
}
body:not(.docs-page):not(.token-route) .pump-brand-mark {
  position: relative;
  width: 68px;
  height: 43px;
  flex: 0 0 68px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
body:not(.docs-page):not(.token-route) .pump-brand-mark::after {
  content: none;
}
body:not(.docs-page):not(.token-route) .pump-brand-mark img {
  width: 68px;
  height: 34px;
  object-fit: contain;
  border: 0;
  border-radius: 8px;
}
body:not(.docs-page):not(.token-route) .pump-brand-copy {
  min-width: 0;
  display: block;
  line-height: 1;
}
body:not(.docs-page):not(.token-route) .pump-brand-copy strong {
  display: block;
  color: var(--light-ink, #f6f7fa);
  font: 900 18px/1 var(--sans);
  letter-spacing: -.025em;
}
body:not(.docs-page):not(.token-route) .pump-brand-copy em {
  display: block;
  margin-top: 6px;
  color: var(--green);
  font: 800 9px/1 var(--mono);
  letter-spacing: .16em;
}

body:not(.docs-page):not(.token-route) .global-search input,
body:not(.docs-page):not(.token-route) .top-nav button,
body:not(.docs-page):not(.token-route) .top-nav a,
body:not(.docs-page):not(.token-route) .network-pill,
body:not(.docs-page):not(.token-route) .create-button,
body:not(.docs-page):not(.token-route) .wallet-button { font-size: 12px; }
body:not(.docs-page):not(.token-route) .side-nav small { font-size: 9px; }
body:not(.docs-page):not(.token-route) .side-nav button,
body:not(.docs-page):not(.token-route) .side-nav a { font-size: 9px; line-height: 1.25; }
body:not(.docs-page):not(.token-route) .sidebar-proof span { font-size: 9px; }

.ecosystem-copy > span { font-size: 11px; }
.ecosystem-copy > p {
  max-width: 760px;
  color: var(--light-ink, #cacddd);
  font-size: clamp(16px,1.18vw,19px);
  line-height: 1.6;
}
.hero-actions button,.hero-actions a { font-size: 12px; }
.hero-proof { font-size: 10px; line-height: 1.5; }
.signal-caption b { font-size: 10px; }

.products-head span,.section-heading span,.home-agent-network header span,.home-fee-engine > span,.home-lifecycle header span { font-size: 10px; }
.products-head p,.section-heading p,.home-agent-network header p,.home-fee-engine > p { font-size: 13px; }
.product-card > span { font-size: 9px; }
.product-card > p { min-height: 54px; font-size: 13px; line-height: 1.55; }
.product-card button,.product-card > a { font-size: 10px; }
.board-state { font-size: 10px; }
.overview-title > span { font-size: 10px; }
.overview-title p { font-size: 13px; }
.market-overview dt,.market-overview dl small { font-size: 10px; }
.filters button,.quiet-button { font-size: 10px; }
body:not(.docs-page):not(.token-route) th { font-size: 10px; }
body:not(.docs-page):not(.token-route) td { font-size: 12px; }
body:not(.docs-page):not(.token-route) .token-cell small,
body:not(.docs-page):not(.token-route) .cell-sub,
body:not(.docs-page):not(.token-route) .status-tag,
body:not(.docs-page):not(.token-route) .progress-cell b { font-size: 10px; }
body:not(.docs-page):not(.token-route) .numeric,
body:not(.docs-page):not(.token-route) .operator-chip,
body:not(.docs-page):not(.token-route) time { font-size: 11px; }
.home-agent-list small,.home-agent-list article > b { font-size: 9px; }
.home-agent-list span { font-size: 11px; }
.home-agent-list article > a { font-size: 10px; }
.home-fee-engine dt { font-size: 9px; }
.home-lifecycle li span { font-size: 9px; }
.home-lifecycle li p { font-size: 12px; }
.home-footer small { font-size: 11px; }
.home-footer nav a,.home-footer nav button { font-size: 12px; }
.home-footer > p { font-size: 9px; }

@media (max-width: 1180px) {
  body:not(.docs-page):not(.token-route) .topbar { grid-template-columns: 250px minmax(240px,1fr) auto; }
}
@media (max-width: 600px) {
  body:not(.docs-page):not(.token-route) .pump-brand-mark { width: 58px; height: 39px; flex-basis: 58px; }
  body:not(.docs-page):not(.token-route) .topbar { height: auto; grid-template-columns: minmax(0,1fr); padding: 12px 16px; gap: 12px; }
  body:not(.docs-page):not(.token-route) .global-search { grid-column: 1; grid-row: auto; min-width: 0; width: 100%; }
  body:not(.docs-page):not(.token-route) .top-actions { min-width: 0; width: 100%; justify-content: space-between; }
  body:not(.docs-page):not(.token-route) .side-nav button,
  body:not(.docs-page):not(.token-route) .side-nav a { width: auto; }
  body:not(.docs-page):not(.token-route) .pump-brand-mark img { width: 58px; height: 30px; }
  body:not(.docs-page):not(.token-route) .pump-brand-copy { flex: 0 0 auto; }
  body:not(.docs-page):not(.token-route) .pump-brand-copy strong { font-size: 15px; }
  body:not(.docs-page):not(.token-route) .pump-brand-copy em { font-size: 8px; }
  .ecosystem-hero { min-width: 0; }
  .ecosystem-copy { min-width: 0; width: 100%; max-width: calc(100vw - 32px); padding-right: 25px; padding-left: 25px; }
  .ecosystem-copy h2 { font-size: clamp(30px,8.5vw,34px); }
  .ecosystem-copy > p { font-size: 15px; }
  .agent-signal { min-width: 0; width: 100%; max-width: calc(100vw - 32px); padding: 20px; }
  .hero-agent-grid { width: 300px; max-width: 100%; }
}

/* Routed product pages: shared navigation, independent content. */
#view-markets > .workspace-head { display: flex; }
#view-home > .workspace-head { display: none; }
#view-markets .overview-title { display: none; }
#view-markets .market-overview { grid-template-columns: 1fr; }
#view-markets #market-activity { margin: 20px 0 12px; }
#view-markets #market-activity h2 { font-size: 20px; }
#view-markets #market-activity p { margin: 6px 0; }
.create-button, a.quiet-button { display: inline-flex; align-items: center; justify-content: center; }
.board-toolbar, .filters, .board-sort { flex-wrap: wrap; }

/* The directory has two independent axes — where a market is in its life, and
   whether an Agent is accountable for it — so they read as two groups rather
   than one longer list. */
.filter-axis { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--line); }
.filters button, .board-sort button, .activity-table th, .activity-table td { font-size: 12px; }
.wallet-button { white-space: nowrap; text-overflow: clip; }
.view { animation: none; }
[hidden] { display: none !important; }
.top-nav a, .home-footer nav a, .create-button, .hero-primary, .hero-secondary { text-decoration: none; }
.top-nav a { color: var(--muted); padding: 10px; }
/* aria-current always accompanies .active (app.js sets them together); the old
   green !important here painted the label lime on the lime active pill (1:1 in
   night, 4.2:1 in day). The active pill's dark ink wins instead. */
.side-nav a[aria-current="page"] { border: 1px solid var(--line-strong); background: var(--surface-3); }
.product-card > a { display: inline-block; color: var(--green); }
.page-status { color: var(--muted); line-height: 1.7; padding: 16px 0; }
.activity-controls { display: flex; align-items: end; flex-wrap: wrap; gap: 20px; padding: 24px; border: 1px solid var(--line); background: var(--surface); border-radius: 10px; }
.activity-controls label { display: grid; gap: 10px; min-width: 180px; flex: 1; color: var(--muted); }
.activity-controls select { padding: 12px; width: 100%; color: var(--text); background: var(--bg); border: 1px solid var(--line-strong); border-radius: 6px; }
.activity-feed { min-height: 220px; border: 1px solid var(--line); background: var(--surface); border-radius: 10px; overflow: hidden; }
.activity-feed .table-wrap { overflow-x: auto; }
.route-empty { padding: 48px 24px; text-align: center; }
.route-empty strong { font-size: 20px; }
.route-empty p { color: var(--muted); line-height: 1.7; }
body.launch-route .create-dialog { position: static; width: 100%; max-width: none; max-height: none; margin: 24px 0; overflow: visible; }
body.launch-route #close-create { display: none; }
body.launch-route .dialog-shell { max-height: none; }
body.launch-route .dialog-grid { align-items: start; }
body:not(.docs-page):not(.token-route) .workspace { min-width: 0; }
body:not(.docs-page):not(.token-route) .sidebar { overflow-y: auto; }
@media (max-width: 1100px) {
  body:not(.docs-page):not(.token-route) .topbar { height: auto; min-height: 70px; grid-template-columns: minmax(0,1fr) auto; gap: 12px; padding: 12px 16px; }
  body:not(.docs-page):not(.token-route) .global-search { grid-column: 1/-1; grid-row: 2; min-width: 0; width: 100%; }
  body:not(.docs-page):not(.token-route) .top-nav { display: none; }
}
@media (max-width: 820px) {
  body:not(.docs-page):not(.token-route) .topbar { position: static; }
  body:not(.docs-page):not(.token-route) .sidebar { position: static; overflow: visible; }
  body:not(.docs-page):not(.token-route) .side-nav .nav-activity,
  body:not(.docs-page):not(.token-route) .side-nav .nav-fees { display: flex; }
  body:not(.docs-page):not(.token-route) .side-nav a { width: auto; min-width: 78px; flex: 0 0 auto; }
  .workspace-head { flex-wrap: wrap; gap: 16px; }
  .activity-controls { padding: 16px; }
  .launch-route .dialog-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  body:not(.docs-page):not(.token-route) .topbar { grid-template-columns: minmax(0,1fr); }
  body:not(.docs-page):not(.token-route) .global-search { grid-row: auto; }
  body:not(.docs-page):not(.token-route) .top-actions { width: 100%; justify-content: space-between; }
  body.launch-route .dialog-shell { padding: 16px; }
  .activity-controls label { min-width: 0; flex-basis: 100%; }
}

.origin-badge { display:inline-flex; padding:4px 7px; margin:4px 0; border: 1px solid var(--green); border-radius:5px; color: var(--green); font:11px var(--mono); }
#agent-chat-package { margin:16px 0; padding:16px; border: 1px solid var(--line-strong); }
#agent-chat-package a { display:inline-block; margin:12px; color: var(--green); }
#agent-chat-command { width:100%; resize:vertical; }

/* Pump token detail — approved Command Split */
:root { --verified: #45dc8d; --verified-soft: #1a2150; }
:root[data-theme="light"] { --verified: #087846; --verified-soft: #dff3e8; }

body.token-route { background: var(--bg); }
body.token-route .market-dialog { background: var(--bg); }
body.token-route .trade-shell { width: min(1500px,calc(100% - 48px)); padding-top: 20px; }
body.token-route .trade-shell > header { min-height: 108px; border-radius: 12px 12px 0 0; }

.market-lifecycle {
  min-height: 84px;
  display: grid;
  grid-template-columns: minmax(190px,.65fr) minmax(210px,.8fr) minmax(260px,1.35fr) auto;
  align-items: center;
  gap: 22px;
  padding: 15px 20px;
  border: 1px solid var(--line-strong);
  border-top: 0;
  border-radius: 0 0 12px 12px;
  background: var(--surface);
}
.market-lifecycle-state { display: flex; align-items: center; gap: 13px; min-width: 0; }
.market-lifecycle-state > i { width: 10px; height: 10px; flex: 0 0 auto; border-radius: 999px; background: var(--muted); box-shadow: 0 0 0 6px color-mix(in srgb,var(--muted) 14%,transparent); }
.market-lifecycle-state span,
.market-lifecycle-state strong { display: block; }
.market-lifecycle-state span { color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.market-lifecycle-state strong { margin-top: 5px; color: var(--text); font: 900 14px var(--mono); }
.market-lifecycle-progress > div { display: flex; justify-content: space-between; gap: 10px; color: var(--muted); font: 9px var(--mono); }
.market-lifecycle-progress b { color: var(--text); font-variant-numeric: tabular-nums; }
.lifecycle-meter { height: 7px; display: block; overflow: hidden; margin-top: 9px; border: 1px solid var(--line-strong); background: var(--surface-2); }
.lifecycle-meter i { width: 0; height: 100%; display: block; background: var(--green); transition: width 240ms ease-out; }
.market-lifecycle > p { max-width: 620px; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.55; }
.market-lifecycle-actions { display: grid; gap: 7px; }
.market-lifecycle-actions > a,
.market-lifecycle-actions > button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 0 13px; border: 1px solid var(--line); border-radius: 8px; color: var(--text); background: transparent; text-decoration: none; font: 800 9px var(--mono); white-space: nowrap; cursor: pointer; }
.market-lifecycle-actions > button { border-color: var(--amber); color: #0a1240; background: var(--amber); }
.market-lifecycle.is-live { background: linear-gradient(90deg,var(--verified-soft),var(--surface) 44%); }
.market-lifecycle.is-live .market-lifecycle-state > i { background: var(--verified); box-shadow: 0 0 0 6px color-mix(in srgb,var(--verified) 15%,transparent); }
.market-lifecycle.is-live .market-lifecycle-state strong { color: var(--verified); }
.market-lifecycle.is-ready { background: linear-gradient(90deg,var(--amber-soft),var(--surface) 44%); }
.market-lifecycle.is-ready .market-lifecycle-state > i { background: var(--amber); box-shadow: 0 0 0 6px color-mix(in srgb,var(--amber) 15%,transparent); }
.market-lifecycle.is-ready .market-lifecycle-state strong { color: var(--amber); }
.market-lifecycle.is-graduated .market-lifecycle-state > i { background: var(--text); }
.market-lifecycle.is-unavailable .market-lifecycle-state > i { background: var(--red); box-shadow: 0 0 0 6px color-mix(in srgb,var(--red) 15%,transparent); }
.market-lifecycle.is-unavailable .market-lifecycle-state strong { color: var(--red); }

body.token-route .trade-notice { margin-inline: 0; border-radius: 8px; }
body.token-route .trade-layout { grid-template-columns: minmax(380px,34%) minmax(0,1fr); gap: 20px; margin-top: 20px; }
body.token-route .trade-ticket {
  top: 90px;
  padding: 24px;
  border-radius: 12px;
  background: var(--surface);
  box-shadow: 0 18px 45px rgba(0,0,0,.18);
}
.trade-ticket-head { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.trade-ticket-head span,
.trade-ticket-head strong { display: block; }
.trade-ticket-head span { color: var(--green); font: 900 9px var(--mono); letter-spacing: .08em; }
.trade-ticket-head strong { margin-top: 5px; color: var(--text); font-size: 18px; }
.trade-ticket-head > b { padding: 7px 9px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font: 800 8px var(--mono); white-space: nowrap; }
.trade-ticket-head > b.is-live { border-color: var(--verified); color: var(--verified); background: var(--verified-soft); }
.trade-ticket-head > b.is-ready { border-color: var(--amber); color: var(--amber); background: var(--amber-soft); }
.trade-ticket-head > b.is-graduated { color: var(--text); background: var(--surface-2); }
.trade-ticket-head > b.is-unavailable { border-color: var(--red); color: var(--red); }
body.token-route .trade-tabs { margin-bottom: 25px; border-radius: 9px; overflow: hidden; }
body.token-route .trade-tabs button { min-height: 52px; height: 52px; font-size: 14px; }
body.token-route .balance-row { margin-bottom: 10px; font-size: 11px; }
body.token-route .balance-row button { min-height: 36px; }
body.token-route .amount-field { min-height: 76px; padding-inline: 17px; border-radius: 9px; }
body.token-route .amount-field input { height: 74px; font-size: 31px; }
body.token-route .amount-field strong { font-size: 13px; }
body.token-route .slippage-row { min-height: 48px; margin: 16px 0; padding: 0 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); font-size: 10px; }
body.token-route .slippage-row label { width: 92px; border-radius: 5px; background: var(--surface); }
body.token-route .slippage-row input { width: 65px; height: 38px; font-size: 12px; }
body.token-route .quote-button,
body.token-route .trade-ticket .primary-action { min-height: 52px; border-radius: 8px; font-size: 12px; }
body.token-route .quote-card { padding: 16px; border-radius: 8px; }
body.token-route .quote-card strong { font-size: 17px; }
body.token-route .ticket-proof { margin-top: 14px; font-size: 9px; line-height: 1.6; }

body.token-route .market-facts { min-width: 0; }
body.token-route .project-metadata,
body.token-route .market-metrics,
body.token-route .market-chart-card,
body.token-route .market-activity-card,
.market-disclosure { border-radius: 10px; overflow: hidden; }
body.token-route .market-chart { min-height: 380px; }
body.token-route .market-chart svg { height: 350px; }

.market-operations { display: grid; gap: 12px; margin-top: 12px; }
.market-disclosure { border: 1px solid var(--line-strong); background: var(--surface); }
.market-disclosure > summary { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 12px 16px; cursor: pointer; list-style: none; }
.market-disclosure > summary::-webkit-details-marker { display: none; }
.market-disclosure > summary::after { content: "+"; width: 30px; height: 30px; display: grid; place-items: center; flex: 0 0 auto; border: 1px solid var(--line); border-radius: 7px; color: var(--green); font: 800 17px var(--mono); }
.market-disclosure[open] > summary::after { content: "−"; }
.market-disclosure > summary span { min-width: 0; margin-right: auto; }
.market-disclosure > summary small,
.market-disclosure > summary strong { display: block; }
.market-disclosure > summary small { color: var(--green); font: 800 8px var(--mono); letter-spacing: .08em; }
.market-disclosure > summary strong { margin-top: 5px; font-size: 15px; }
.market-disclosure > summary > b { color: var(--muted); font: 800 9px var(--mono); }
.market-disclosure-body { padding: 0 16px 16px; border-top: 1px solid var(--line); }
.market-disclosure-body .fact-head { margin-top: 0; border: 0; border-bottom: 1px solid var(--line); }
.market-disclosure-body > dl { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); margin: 0; border: 1px solid var(--line); border-top: 0; background: var(--surface-2); }
.market-disclosure-body > dl > div { min-height: 78px; padding: 14px; border-right: 1px solid var(--line); }
.market-disclosure-body > dl > div:last-child { border-right: 0; }
.market-disclosure-body > dl dt { color: var(--muted); font: 8px var(--mono); text-transform: uppercase; }
.market-disclosure-body > dl dd { margin: 10px 0 0; color: var(--text); font: 800 13px var(--mono); overflow-wrap: anywhere; }
.market-disclosure-body .curve-meter { border: 1px solid var(--line); border-top: 0; }
.market-disclosure-body .trade-explorer { min-height: 44px; display: inline-flex; align-items: center; }
.market-disclosure-body .project-team,
.market-disclosure-body .creator-studio { margin: 0; padding-top: 16px; border: 0; background: transparent; }

:root[data-theme="light"] body.token-route .trade-shell > header,
:root[data-theme="light"] .market-lifecycle,
:root[data-theme="light"] body.token-route .trade-ticket,
:root[data-theme="light"] body.token-route .project-metadata,
:root[data-theme="light"] body.token-route .market-metrics,
:root[data-theme="light"] body.token-route .market-chart-card,
:root[data-theme="light"] body.token-route .market-activity-card,
:root[data-theme="light"] .market-disclosure { color: var(--text); background: var(--surface); }
:root[data-theme="light"] body.token-route .amount-field,
:root[data-theme="light"] body.token-route .quote-card,
:root[data-theme="light"] .market-disclosure-body > dl,
:root[data-theme="light"] .lifecycle-meter { color: var(--text); background: var(--surface-2); }
:root[data-theme="light"] #market-chart-grid { stroke: var(--line); }
:root[data-theme="light"] body.token-route .trade-ticket { box-shadow: 0 14px 34px rgba(43,62,42,.10); }

@media (max-width: 1180px) {
  .market-lifecycle { grid-template-columns: minmax(180px,.7fr) minmax(190px,.8fr) minmax(250px,1.2fr); }
  .market-lifecycle-actions { grid-column: 1/-1; justify-self: start; }
  body.token-route .trade-layout { grid-template-columns: minmax(340px,38%) minmax(0,1fr); }
  body.token-route .market-metrics { grid-template-columns: repeat(3,minmax(0,1fr)); }
}

@media (max-width: 920px) {
  body.token-route .trade-shell { width: min(100% - 24px,780px); }
  body.token-route .trade-layout { display: flex; flex-direction: column; }
  body.token-route .trade-ticket { position: static; order: 1; width: 100%; margin: 0; }
  body.token-route .market-facts { order: 2; width: 100%; }
  .market-lifecycle { grid-template-columns: 1fr 1fr; }
  .market-lifecycle > p { grid-column: 1/-1; }
  .market-lifecycle-actions { grid-column: 1/-1; }
}

@media (max-width: 600px) {
  body.token-route .trade-shell { width: 100%; }
  body.token-route .trade-shell > header { border-radius: 0; }
  .market-lifecycle { grid-template-columns: 1fr; gap: 15px; padding: 16px 14px; border-inline: 0; border-radius: 0; }
  .market-lifecycle > p,
  .market-lifecycle-actions { grid-column: auto; width: 100%; }
  body.token-route .trade-layout { margin-top: 12px; }
  body.token-route .trade-ticket { width: calc(100% - 20px); margin-inline: 10px; padding: 19px; }
  body.token-route .trade-ticket-head { align-items: flex-start; }
  body.token-route .amount-field input { font-size: 28px; }
  body.token-route .project-metadata,
  body.token-route .market-chart-card,
  body.token-route .market-activity-card,
  body.token-route .market-operations { margin-inline: 10px; }
  body.token-route .market-metrics { grid-template-columns: 1fr 1fr; margin-inline: 10px; }
  body.token-route .market-chart { min-height: 280px; }
  body.token-route .market-chart svg { height: 255px; }
  .market-disclosure > summary { min-height: 72px; }
  .market-disclosure > summary > b { display: none; }
  .market-disclosure-body { padding-inline: 12px; }
  .market-disclosure-body > dl { grid-template-columns: 1fr 1fr; }
  .market-disclosure-body > dl > div:nth-child(2n) { border-right: 0; }
  .activity-tabs button { min-width: 105px; min-height: 44px; }
}

/* Launch controls — selected asset and image field */
body.launch-route .dialog-shell { max-width: 1040px; border-color: #343751; border-radius: 22px; background: #171924; }
body.launch-route .dialog-shell > header { padding: 30px 36px 20px; border-bottom: 0; background: #171924; }
body.launch-route .dialog-shell > header > div > span { display: none; }
body.launch-route .dialog-shell > header h2 { margin: 0 0 8px; font-size: 30px; font-weight: 650; }
body.launch-route .dialog-shell > header p { font-size: 13px; }
body.launch-route .dialog-grid { grid-template-columns: minmax(0,1.55fr) minmax(300px,.75fr); background: #171924; }
body.launch-route .launch-form { padding: 10px 36px 38px; border-right-color: #2b2f44; }
body.launch-route .launch-review { top: 82px; padding: 28px 30px; background: #1e212f; }
body.launch-route .step-label { display: none; }
body.launch-route .field-row { grid-template-columns: 1fr 1fr; gap: 14px; }
body.launch-route .launch-form label > span, body.launch-route .launch-form legend { margin-bottom: 8px; color: #a3a7c4; font: 600 12px var(--sans); text-transform: none; }
body.launch-route .launch-form input, body.launch-route .launch-form textarea { border-color: #353953; border-radius: 12px; color: #f2f2f6; background: #1e212f; font-family: var(--sans); }
body.launch-route .launch-form input { height: 48px; padding: 0 14px; }
body.launch-route .launch-form textarea { min-height: 88px; padding: 14px; }
body.launch-route .launch-form input:focus, body.launch-route .launch-form textarea:focus { border-color: var(--green); box-shadow: 0 0 0 2px color-mix(in srgb,var(--green) 18%,transparent); }
body.launch-route .image-upload > div { min-height: 76px; grid-template-columns: 52px minmax(0,1fr); grid-template-rows: 1fr; gap: 12px; padding: 10px 12px; border-color: #414666; border-radius: 13px; background: #1b1e2b; }
body.launch-route .image-upload img { grid-column: 1; grid-row: 1; width: 52px; height: 52px; border: 0; border-radius: 11px; }
.image-upload-icon { grid-column: 1; grid-row: 1; width: 52px; height: 52px; display: grid; place-items: center; border-radius: 11px; color: #b6bad0; background: #212333; font: 22px var(--sans); font-style: normal; }
.image-upload img:not([hidden]) + .image-upload-icon { display: none; }
body.launch-route .image-upload b { grid-column: 2; grid-row: 1; align-self: center; font-size: 14px; }
body.launch-route .image-upload small { display: none; }
body.launch-route .pair-picker { margin-top: 3px; }
body.launch-route .pair-picker > p { margin-bottom: 8px; color: #8187af; font-size: 11px; }
body.launch-route .pair-select { margin-top: 0; border-color: #373b56; border-radius: 12px; background: #1e212f; overflow: visible; }
body.launch-route .pair-select[open] { border-color: #4c5177; box-shadow: none; }
body.launch-route .pair-select > summary { min-height: 48px; grid-template-columns: 28px minmax(0,1fr) auto; gap: 10px; padding: 7px 13px; }
body.launch-route .pair-selected-mark { width: 26px; height: 26px; color: #fff; background: #627ff0; font: 800 10px var(--sans); }
body.launch-route .pair-select > summary strong { font: 700 14px var(--sans); }
body.launch-route .pair-select > summary small, body.launch-route .pair-select > summary em { display: none; }
body.launch-route .pair-select > summary b { color: #a3a7c4; font: 18px var(--sans); }
body.launch-route .pair-select-panel { position: relative; z-index: 8; padding: 0; border-top: 1px solid #33364f; background: #171924; }
body.launch-route .pair-select .pair-options { max-height: 285px; display: block; overflow-y: auto; padding: 5px; scrollbar-color: #777 #282b3f; }
body.launch-route .pair-option { min-height: 42px; display: grid !important; grid-template-columns: 26px minmax(72px,.55fr) minmax(0,1fr); align-items: center; gap: 9px; padding: 6px 8px; border: 0; border-radius: 7px; background: transparent; }
body.launch-route .pair-option:hover { background: #232536; }
body.launch-route .pair-option:has(input:checked) { border: 0; background: #272a3e; box-shadow: none; }
body.launch-route .pair-option > strong { color: #f2f2f6; font: 700 13px var(--sans); }
body.launch-route .pair-option > span { min-width: 0; display: flex; justify-content: flex-end; align-items: center; gap: 8px; text-align: right; }
body.launch-route .pair-option > span b { overflow: hidden; color: #999ebe; font: 500 12px var(--sans); text-overflow: ellipsis; white-space: nowrap; }
body.launch-route .pair-option > span small { flex: 0 0 auto; margin: 0; color: #606897; font: 8px var(--mono); }
.pair-option-mark { width: 22px; height: 22px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: #222; font: 800 7px var(--sans); font-style: normal; }
body.launch-route .pair-option:nth-of-type(4n+1) .pair-option-mark { background: #5f7ee9; }
body.launch-route .pair-option:nth-of-type(4n+2) .pair-option-mark { background: #8592e2; }
body.launch-route .pair-option:nth-of-type(4n+3) .pair-option-mark { background: #161616; }
body.launch-route .pair-option:nth-of-type(4n+4) .pair-option-mark { background: #d64b3e; }
body.launch-route .pair-result-count { display: none; }
body.launch-route .token-preview-card { border-color: #353953; border-radius: 15px; background: #171924; }
body.launch-route .launch-economics div { padding: 12px 0; border-color: #33364f; }
body.launch-route .primary-action { border: 0; border-radius: 13px; color: #191c36; background: var(--accent-fill,#b6ee58); }
:root[data-theme="light"] body.launch-route .dialog-shell,
:root[data-theme="light"] body.launch-route .dialog-shell > header,
:root[data-theme="light"] body.launch-route .dialog-grid { background: #f4f4f8; }
:root[data-theme="light"] body.launch-route .launch-review { background: #e9eaf1; }
:root[data-theme="light"] body.launch-route .launch-form input,
:root[data-theme="light"] body.launch-route .launch-form textarea,
:root[data-theme="light"] body.launch-route .image-upload > div,
:root[data-theme="light"] body.launch-route .pair-select { color: var(--text); border-color: var(--line); background: #fff; }
:root[data-theme="light"] body.launch-route .pair-select-panel { background: #fff; }
:root[data-theme="light"] body.launch-route .pair-option:hover { background: #eff0f5; }
:root[data-theme="light"] body.launch-route .pair-option:has(input:checked) { background: #e6e8ef; }
:root[data-theme="light"] body.launch-route .pair-option > strong { color: var(--text); }
@media (max-width: 820px) {
  body.launch-route .dialog-grid { grid-template-columns: 1fr; }
  body.launch-route .launch-review { position: static; }
}
@media (max-width: 600px) {
  body.launch-route .dialog-shell > header, body.launch-route .launch-form, body.launch-route .launch-review { padding-left: 18px; padding-right: 18px; }
  body.launch-route .field-row { grid-template-columns: 1fr; }
  body.launch-route .pair-option { grid-template-columns: 24px 64px minmax(0,1fr); }
  body.launch-route .pair-option > span small { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .lifecycle-meter i { transition: none; }
}

/* Token detail production refinements */
body.token-route .topbar { grid-template-columns: 250px minmax(0,1fr) auto; }
body.token-route .global-search { display: none; }
body.token-route .top-nav { display: flex; justify-content: center; min-width: 0; }
body.token-route .top-nav a { min-height: 44px; white-space: nowrap; }

body.token-route .trade-layout { grid-template-columns: minmax(0,1fr) minmax(380px,34%); }
body.token-route .market-facts { order: 1; }
body.token-route .trade-ticket { order: 2; }

.market-lifecycle-steps { grid-column: 1/-1; display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin: -4px 0 0; padding: 13px 0 0; border-top: 1px solid var(--line); list-style: none; }
.market-lifecycle-steps li { min-width: 0; display: flex; align-items: center; gap: 10px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 8px; color: var(--muted); background: var(--surface-2); }
.market-lifecycle-steps li > i { width: 25px; height: 25px; display: grid; place-items: center; flex: 0 0 auto; border: 1px solid var(--line-strong); border-radius: 999px; font: 800 8px var(--mono); font-style: normal; }
.market-lifecycle-steps b,
.market-lifecycle-steps small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.market-lifecycle-steps b { color: var(--text); font-size: 10px; }
.market-lifecycle-steps small { margin-top: 3px; font-size: 8px; }
.market-lifecycle-steps li.complete { border-color: color-mix(in srgb,var(--verified) 42%,var(--line)); }
.market-lifecycle-steps li.complete > i { border-color: var(--verified); color: var(--verified); }
.market-lifecycle-steps li.complete > i::before { content: "✓"; }
.market-lifecycle-steps li.complete > i { font-size: 0; }
.market-lifecycle-steps li.complete > i::before { font-size: 10px; }
.market-lifecycle-steps li.current { border-color: var(--green); background: var(--green-soft); }
.market-lifecycle-steps li.current > i { border-color: var(--green); color: var(--green); }

.trade-percentages { display: grid; grid-template-columns: repeat(4,1fr); gap: 7px; margin: 10px 0 2px; }
.trade-percentages button { min-height: 42px; border: 1px solid var(--line); border-radius: 7px; color: var(--muted); background: var(--surface-2); cursor: pointer; font: 800 10px var(--mono); }
.trade-percentages button:hover,
.trade-percentages button.active { border-color: var(--green); color: var(--green); background: var(--green-soft); }
.balance-shortcut-note { margin: 7px 0 0; color: var(--muted); font: 8px/1.45 var(--mono); }

.market-chart-card { overflow: hidden; }
.market-chart-card > header { min-height: 70px; }
.market-chart-tools { display: flex; align-items: center; gap: 14px; }
.chart-live-value { min-width: 150px; padding-right: 14px; border-right: 1px solid var(--line); text-align: right; }
.chart-live-value small,
.chart-live-value b,
.chart-live-value em { display: block; }
.chart-live-value small { color: var(--muted); font: 700 7px var(--mono); }
.chart-live-value b { margin-top: 3px; color: var(--text); font: 800 11px var(--mono); }
.chart-live-value em { margin-top: 2px; font: 800 8px var(--mono); font-style: normal; }
.chart-live-value em.positive { color: var(--verified); }
.chart-live-value em.negative { color: var(--red); }
body.token-route .market-chart { min-height: 430px; padding: 18px 56px 18px 18px; background: linear-gradient(180deg,var(--surface-2),var(--surface)); cursor: crosshair; }
body.token-route .market-chart svg { height: 390px; }
#market-chart-grid { stroke: var(--line); stroke-width: 1; stroke-dasharray: 3 7; opacity: .75; }
#market-chart-line { stroke: var(--green); stroke-width: 2.25; filter: drop-shadow(0 0 5px color-mix(in srgb,var(--green) 35%,transparent)); }
#market-chart-dots circle { fill: var(--surface); stroke: var(--green); stroke-width: 2; vector-effect: non-scaling-stroke; }
#market-chart-crosshair { stroke: var(--muted); stroke-width: 1; stroke-dasharray: 5 5; vector-effect: non-scaling-stroke; }
#market-chart-hover-dot { fill: var(--surface); stroke: var(--green); stroke-width: 4; vector-effect: non-scaling-stroke; }
.market-chart-y-axis { position: absolute; top: 18px; right: 10px; bottom: 18px; display: flex; flex-direction: column; justify-content: space-between; align-items: flex-end; pointer-events: none; }
.market-chart-y-axis span { padding: 2px 4px; color: var(--muted); background: color-mix(in srgb,var(--surface) 86%,transparent); font: 700 8px var(--mono); font-variant-numeric: tabular-nums; }
.market-chart-tooltip { position: absolute; z-index: 3; min-width: 150px; padding: 10px 12px; border: 1px solid var(--line-strong); border-radius: 7px; color: var(--text); background: var(--surface); box-shadow: 0 12px 30px rgba(0,0,0,.24); pointer-events: none; }
.market-chart-tooltip strong,
.market-chart-tooltip span { display: block; }
.market-chart-tooltip strong { font: 800 11px var(--mono); }
.market-chart-tooltip span { margin-top: 4px; color: var(--muted); font: 8px var(--mono); }

@media (max-width: 1180px) {
  body.token-route .topbar { grid-template-columns: minmax(210px,1fr) auto; }
  body.token-route .top-nav { grid-column: 1/-1; grid-row: 2; justify-content: flex-start; overflow-x: auto; border-top: 1px solid var(--line); }
  body.token-route .top-nav a { flex: 0 0 auto; }
  body.token-route .trade-layout { grid-template-columns: minmax(0,1fr) minmax(340px,38%); }
}

@media (max-width: 920px) {
  body.token-route .trade-ticket { order: 1; }
  body.token-route .market-facts { order: 2; }
}

@media (max-width: 700px) {
  .market-lifecycle-steps { grid-template-columns: 1fr; }
  .market-lifecycle-steps b,
  .market-lifecycle-steps small { white-space: normal; }
  .market-chart-card > header { align-items: flex-start; flex-direction: column; }
  .market-chart-tools { width: 100%; justify-content: space-between; }
  .chart-live-value { text-align: left; }
  body.token-route .market-chart { min-height: 310px; padding: 14px 45px 14px 10px; }
  body.token-route .market-chart svg { height: 280px; }
}

@media (prefers-reduced-motion: reduce) {
  #market-chart-line { filter: none; }
}

/* Home opens on the showcase itself: the route header it would duplicate is kept
   hidden and the sidebar carries navigation, so nothing sits above the hero. */
#view-home > .workspace-head { display: none; }
body:not(.docs-page):not(.token-route) .topbar { grid-template-columns: 230px minmax(280px,1fr) auto; }
body:not(.docs-page):not(.token-route) .top-nav { display: none; }

/* Token routes remain inside the same persistent product shell. */
body.token-route .product-shell { display: grid; grid-template-columns: 220px minmax(0,1fr); }
body.token-route .sidebar { position: sticky; top: 62px; height: calc(100vh - 62px); overflow-y: auto; }
body.token-route .workspace { min-width: 0; padding: 18px clamp(16px,2vw,30px) 48px; }
body.token-route .topbar { grid-template-columns: 240px minmax(0,1fr) auto; }
body.token-route .top-nav,
body.token-route .global-search { display: none; }
body.token-route .trade-shell { width: 100%; min-height: calc(100vh - 98px); padding-top: 0; }
body.token-route .trade-ticket { top: 80px; }
.chart-range { flex-wrap: wrap; justify-content: flex-end; }
.chart-range button { min-width: 40px; }
#market-chart-line,
#market-chart-fill { transition: opacity 160ms ease-out; }
.market-chart.just-updated { box-shadow: inset 0 0 0 1px color-mix(in srgb,var(--green) 45%,transparent); }
.market-chart.just-updated #market-chart-dots circle:last-child { animation: chart-ping 650ms ease-out; }
@keyframes chart-ping { 0% { stroke-width: 9; opacity: .45; } 100% { stroke-width: 2; opacity: 1; } }

@media (max-width: 820px) {
  body.token-route .product-shell { display: block; }
  body.token-route .sidebar { position: sticky; top: 0; width: 100%; height: auto; overflow: visible; }
  body.token-route .workspace { padding: 10px 0 44px; }
}

@media (prefers-reduced-motion: reduce) {
  .market-chart.just-updated #market-chart-dots circle:last-child { animation: none; }
}

/* Unified launch catalog and product shell. Token pages use the same navigation
   density, surfaces and theme tokens as every other Pump workspace. */
.studio-paths { grid-template-columns: repeat(3,minmax(0,1fr)); }
.pair-picker { min-width: 0; }
.pair-search { display: grid; grid-template-columns: auto minmax(180px,1fr); align-items: center; gap: 12px; margin: 12px 0 9px; }
.pair-search > span { color: var(--muted); font: 8px var(--mono); text-transform: uppercase; }
.pair-search input { min-height: 42px; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: 7px; background: var(--surface-2); color: var(--text); }
.pair-options { max-height: 342px; overflow: auto; padding-right: 4px; scrollbar-color: var(--line-strong) transparent; }
.pair-result-count { display: block; margin-top: 8px; color: var(--muted); font: 8px var(--mono); text-align: right; }
.balance-row > div { display: flex; align-items: center; gap: 12px; }
#pair-faucet { min-height: 28px; padding: 0 9px; border: 1px solid var(--green); border-radius: 5px; color: var(--green); }

body.token-route .topbar { height: 70px; grid-template-columns: 230px minmax(280px,1fr) auto; gap: 18px; padding: 0 16px; border-color: var(--light-border,#2b2e46); background: var(--light-surface,#06070a); }
body.token-route .brand img { width: 36px; height: 36px; border: 2px solid var(--green); border-radius: 9px; }
body.token-route .brand span { font-size: 15px; }
body.token-route .brand em { display: block; margin: 2px 0 0; color: var(--green); font-size: 7px; letter-spacing: .12em; }
body.token-route .global-search { display: block; visibility: visible; min-width: 0; }
body.token-route .top-nav { display: none; }
body.token-route .product-shell { display: grid; grid-template-columns: 102px minmax(0,1fr); min-height: calc(100vh - 98px); }
body.token-route .sidebar { position: sticky; top: 70px; height: calc(100vh - 98px); padding: 10px 6px; overflow-y: auto; align-items: stretch; border-color: var(--light-border,#2b2e46); background: var(--light-surface,#06070a); }
body.token-route .protocol-identity { display: none; }
body.token-route .side-nav { display: flex; flex: 1; flex-direction: column; gap: 4px; margin: 0; }
body.token-route .side-nav small { margin: 8px 5px 3px; color: #565d87; font-size: 9px; }
body.token-route .side-nav button,body.token-route .side-nav a { min-height: 58px; display: flex; flex-direction: column; justify-content: center; gap: 7px; padding: 5px 2px; border-radius: 9px; color: var(--light-ink,#959abb); text-align: center; font: 9px/1.25 var(--mono); text-transform: uppercase; }
body.token-route .side-nav button span,body.token-route .side-nav a span { color: var(--light-ink,#c7c9db); font-size: 17px; line-height: 1; }
body.token-route .side-nav button b,body.token-route .side-nav a b { display: none; }
body.token-route .side-nav button.active,body.token-route .side-nav a.active { min-height: 72px; color: #05060c; background: var(--accent-fill,var(--green)); }
body.token-route .side-nav button.active span,body.token-route .side-nav a.active span { color: #05060c; }
body.token-route .sidebar-proof { margin-top: auto; padding: 10px 3px; text-align: center; }
body.token-route .sidebar-proof span { justify-content: center; font-size: 9px; }
body.token-route .sidebar-proof p,body.token-route .command-link { display: none; }
body.token-route .workspace { min-width: 0; padding: 16px 16px 48px; }

@media (max-width:820px) {
  body.token-route .topbar { height: auto; min-height: 70px; grid-template-columns: minmax(0,1fr) auto; gap: 12px; padding: 12px 16px; }
  body.token-route .global-search { grid-column: 1/-1; grid-row: 2; width: 100%; }
  body.token-route .product-shell { display: block; }
  body.token-route .sidebar { position: sticky; top: 0; width: 100%; height: auto; padding: 6px 10px; overflow: visible; }
  body.token-route .side-nav { flex-direction: row; overflow-x: auto; }
  body.token-route .side-nav small,body.token-route .nav-activity,body.token-route .nav-fees { display: none; }
  body.token-route .side-nav button,body.token-route .side-nav a,body.token-route .side-nav button.active { min-width: 100px; min-height: 54px; flex: 0 0 auto; }
  body.token-route .workspace { padding: 10px 0 44px; }
}

@media (max-width:600px) {
  .studio-paths,.pair-options { grid-template-columns: 1fr; }
  .pair-search { grid-template-columns: 1fr; }
}

/* Launch page — approved Focused Launch A */
body.launch-route .create-dialog { margin-top: 18px; }
body.launch-route .dialog-shell { max-width: 1120px; margin: 0 auto; border: 1px solid var(--line-strong); border-radius: 16px; overflow: hidden; background: var(--surface); box-shadow: 0 28px 80px rgba(0,0,0,.28); }
body.launch-route .dialog-shell > header { padding: 24px 28px; background: var(--surface); }
body.launch-route .dialog-shell > header h2 { margin: 5px 0; font-size: 27px; letter-spacing: -.03em; }
body.launch-route .dialog-shell > header p { margin: 0; color: var(--muted); font-size: 12px; }
body.launch-route .dialog-grid { grid-template-columns: minmax(0,1.35fr) minmax(310px,.65fr); }
body.launch-route .launch-form { padding: 26px 28px 30px; }
body.launch-route .launch-review { position: sticky; top: 86px; padding: 26px; border-left: 1px solid var(--line); background: var(--surface-2); }
body.launch-route .launch-form > label, body.launch-route .field-row label { margin-bottom: 17px; }
body.launch-route .launch-form input, body.launch-route .launch-form textarea { border-radius: 8px; }
body.launch-route .image-upload > div, body.launch-route .agent-policy label, body.launch-route .token-preview-card { border-radius: 9px; }
body.launch-route .primary-action { min-height: 50px; border-radius: 8px; box-shadow: none; }
.pair-select { margin-top: 11px; border: 1px solid var(--line-strong); border-radius: 10px; background: var(--light-surface,#07080c); overflow: hidden; }
.pair-select[open] { border-color: var(--green); box-shadow: 0 0 0 2px var(--green-soft); }
.pair-select > summary { min-height: 66px; display: grid; grid-template-columns: 40px minmax(0,1fr) auto auto; align-items: center; gap: 12px; padding: 10px 13px; cursor: pointer; list-style: none; }
.pair-select > summary::-webkit-details-marker { display: none; }
.pair-select > summary > span { min-width: 0; }
.pair-select > summary strong, .pair-select > summary small { display: block; }
.pair-select > summary strong { color: var(--text); font: 800 13px var(--mono); }
.pair-select > summary small { margin-top: 4px; overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.pair-select > summary em { padding: 5px 7px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font: 8px var(--mono); font-style: normal; text-transform: uppercase; }
.pair-select > summary b { color: var(--green); font: 800 10px var(--mono); }
.pair-selected-mark { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 50%; color: var(--accent-fill,#0a113e); background: var(--green-soft); font: 900 12px var(--mono); font-style: normal; }
.pair-select-panel { padding: 0 13px 13px; border-top: 1px solid var(--line); }
.pair-categories { display: flex; gap: 6px; margin: 0 0 10px; overflow-x: auto; scrollbar-width: none; }
.pair-categories::-webkit-scrollbar { display: none; }
.pair-categories button { flex: 0 0 auto; min-height: 34px; padding: 0 11px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); background: transparent; cursor: pointer; font: 800 9px var(--mono); }
.pair-categories button.active { border-color: var(--green); color: var(--green); background: var(--green-soft); }
.pair-select .pair-search { grid-template-columns: 1fr; margin: 12px 0 9px; }
.pair-select .pair-search > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
.pair-select .pair-options { max-height: 230px; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; }
.pair-select .pair-option { min-height: 54px; border-radius: 7px; }
:root[data-theme="light"] .pair-select { background: var(--surface); }
:root[data-theme="light"] body.launch-route .dialog-shell { box-shadow: 0 24px 70px rgba(37,52,28,.12); }
@media (max-width: 820px) {
  body.launch-route .dialog-grid { grid-template-columns: 1fr; }
  body.launch-route .launch-review { position: static; top: auto; border-left: 0; border-top: 1px solid var(--line); }
}
@media (max-width: 600px) {
  body.launch-route .dialog-shell { border-radius: 0; }
  body.launch-route .dialog-shell > header, body.launch-route .launch-form, body.launch-route .launch-review { padding: 20px 16px; }
  .pair-select > summary { grid-template-columns: 40px minmax(0,1fr) auto; }
  .pair-select > summary em { display: none; }
  .pair-select .pair-options { grid-template-columns: 1fr; }
}

/* Final cascade contract for the launch surface. */
body.launch-route .dialog-shell { max-width: 1040px; border-color: #343751; border-radius: 22px; background: #171924; }
body.launch-route .dialog-shell > header { padding: 30px 36px 20px; border-bottom: 0; background: #171924; }
body.launch-route .dialog-shell > header h2 { margin: 0 0 8px; font-size: 30px; font-weight: 650; }
body.launch-route .dialog-shell > header p { font-size: 13px; }
body.launch-route .dialog-grid { grid-template-columns: minmax(0,1.55fr) minmax(300px,.75fr); background: #171924; }
body.launch-route .launch-form { padding: 10px 36px 38px; border-right-color: #2b2f44; }
body.launch-route .launch-review { top: 82px; padding: 28px 30px; background: #1e212f; }
body.launch-route .launch-form input, body.launch-route .launch-form textarea { border-radius: 12px; }
body.launch-route .image-upload > div, body.launch-route .token-preview-card { border-radius: 13px; }
body.launch-route .primary-action { border-radius: 13px; }
:root[data-theme="light"] body.launch-route .dialog-shell { background: #f4f4f8; }
@media (max-width: 820px) {
  body.launch-route .dialog-grid { grid-template-columns: 1fr; }
  body.launch-route .launch-review { position: static; top: auto; }
}
@media (max-width: 600px) {
  body.launch-route .dialog-shell { border-radius: 0; }
  body.launch-route .dialog-shell > header, body.launch-route .launch-form, body.launch-route .launch-review { padding-left: 18px; padding-right: 18px; }
}

/* Unified launch sequence: path first, token terms second. */
body.launch-route #view-launch { max-width: none; }
body.launch-route .launch-studio { margin: 22px 0 18px; }
body.launch-route #launch-form-page { scroll-margin-top: 82px; }
body.launch-route .create-dialog { margin: 0 0 28px; }
body.launch-route .dialog-shell { width: 100%; max-width: none; margin: 0; border-color: var(--line); border-radius: 12px; background: var(--surface); box-shadow: none; }
body.launch-route .dialog-shell > header { padding: 28px 28px 18px; border-bottom: 1px solid var(--line); background: var(--surface); }
body.launch-route .dialog-shell > header > div > span { display: block; color: var(--green); font: 11px var(--mono); letter-spacing: .1em; }
body.launch-route .dialog-shell > header h2 { margin: 12px 0; font-size: 28px; font-weight: 750; }
body.launch-route .dialog-shell > header p { margin: 0; color: var(--muted); font-size: 13px; }
body.launch-route .dialog-grid { grid-template-columns: minmax(0,1fr) minmax(380px,.48fr); background: var(--surface); }
body.launch-route .launch-form { padding: 28px; border-right-color: var(--line); }
body.launch-route .launch-review { position: sticky; top: 82px; padding: 28px; border-left: 0; background: var(--surface-2); }
body.launch-route .launch-review .step-label { display: none; }
body.launch-route .launch-economics { border: 1px solid var(--line); background: var(--surface); }
body.launch-route .launch-economics div { min-height: 48px; padding: 12px 14px; }
body.launch-route .launch-economics dt { color: var(--muted); font-size: 11px; }
body.launch-route .launch-economics dd { max-width: 220px; overflow-wrap: anywhere; color: var(--text); font: 750 11px/1.35 var(--mono); }
body.launch-route .tax-field > div input { padding-right: 42px; }
body.launch-route .tax-field > div b { top: 50%; right: 15px; padding: 0; border: 0; color: var(--green); background: transparent; transform: translateY(-50%); pointer-events: none; }
body.launch-route .confirm { min-height: 44px; align-items: center; gap: 11px; padding: 8px 0; }
body.launch-route .confirm input { appearance: auto; width: 18px; height: 18px; min-width: 18px; flex: 0 0 18px; margin: 0; padding: 0; border-radius: 4px; accent-color: var(--green); box-shadow: none; }
body.launch-route .confirm span { margin: 0 !important; color: var(--muted) !important; font: 12px/1.5 var(--sans) !important; }
@media (max-width: 980px) {
  body.launch-route .dialog-grid { grid-template-columns: minmax(0,1fr) 340px; }
}
@media (max-width: 820px) {
  body.launch-route .dialog-grid { grid-template-columns: 1fr; }
  body.launch-route .launch-review { position: static; border-top: 1px solid var(--line); }
}
@media (max-width: 600px) {
  body.launch-route .launch-studio { margin-left: -16px; margin-right: -16px; border-left: 0; border-right: 0; border-radius: 0; }
  body.launch-route .dialog-shell { border-left: 0; border-right: 0; border-radius: 0; }
  body.launch-route .dialog-shell > header, body.launch-route .launch-form, body.launch-route .launch-review { padding: 20px 16px; }
}

/* Brand, paired-asset identity and theme polish. Kept last so all routes share
   one visual contract even where older route-specific rules are more specific. */
.brand img,
.pump-brand-mark img,
.protocol-identity img,
.home-footer img,
.hero-agent-empty img,
.token-preview-card img.is-brand-placeholder {
  object-fit: contain;
  background: #0a0a0f;
}
.brand img,
.pump-brand-mark img,
.protocol-identity img,
.home-footer img { padding: 7px; }
body:not(.docs-page):not(.token-route) .pump-brand-mark { width: 44px; height: 44px; flex-basis: 44px; }
body:not(.docs-page):not(.token-route) .pump-brand-mark img { width: 44px; height: 44px; border: 1px solid #32364f; border-radius: 10px; }
body:not(.docs-page):not(.token-route) .pump-brand-copy strong { letter-spacing: -.02em; }

/* Token pages inherit the same brand lockup instead of the older smaller
   fallback (body.token-route .brand rules above), so the corner mark and
   SIGNALBOUND wordmark never shrink on token routes. */
body.token-route .pump-brand { min-width: 0; display: inline-flex; align-items: center; gap: 11px; color: var(--text); text-decoration: none; }
body.token-route .pump-brand-mark { position: relative; width: 44px; height: 44px; flex: 0 0 44px; display: grid; place-items: center; overflow: hidden; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
body.token-route .pump-brand-mark::after { content: none; }
body.token-route .pump-brand-mark img { width: 44px; height: 44px; border: 1px solid #32364f; border-radius: 10px; }
body.token-route .pump-brand-copy { min-width: 0; display: block; line-height: 1; }
body.token-route .pump-brand-copy strong { display: block; color: var(--light-ink, #f6f7fa); font: 900 18px/1 var(--sans); letter-spacing: -.02em; }
.token-preview-card img.is-brand-placeholder { padding: 14px; }

.pair-selected-logo,
.asset-logo {
  position: relative;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  overflow: hidden;
  border: 1px solid var(--line-strong);
  border-radius: 50%;
  background: #f7f7fa !important;
  isolation: isolate;
}
.pair-selected-logo { width: 30px; height: 30px; }
.asset-logo { width: 28px; height: 28px; }
.pair-selected-logo img,
.asset-logo img {
  position: absolute;
  z-index: 2;
  inset: 3px;
  width: calc(100% - 6px);
  height: calc(100% - 6px);
  border: 0;
  border-radius: 50%;
  object-fit: contain;
  background: #fff;
}
.pair-selected-logo i,
.asset-logo i {
  position: relative;
  z-index: 1;
  color: #2a2d41;
  font: 800 8px var(--sans);
  font-style: normal;
}
body.launch-route .pair-selected-mark { width: auto; height: auto; color: inherit; background: transparent; }
body.launch-route .pair-option-mark { width: 28px; height: 28px; }
body.launch-route .pair-option:nth-of-type(n) .pair-option-mark { background: #f7f7fa !important; }
.market-pair { display: flex; align-items: center; gap: 9px; min-width: 150px; }
.market-pair > span:last-child { min-width: 0; }
.market-pair strong { color: var(--text); font: 800 11px var(--mono); }

.theme-toggle {
  min-width: 116px;
  height: 40px;
  grid-template-columns: 18px 1fr 30px;
  gap: 7px;
  padding: 0 9px 0 10px;
  border-radius: 999px;
  background: color-mix(in srgb,var(--surface-2) 92%,transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb,var(--text) 4%,transparent);
}
.theme-toggle-icon { font: 15px/1 var(--sans); }
.theme-toggle-label { text-align: left; }
.theme-toggle-track { position: relative; width: 30px; height: 17px; border: 1px solid var(--line-strong); border-radius: 999px; background: var(--surface-3); }
.theme-toggle-track i { position: absolute; top: 3px; left: 3px; width: 9px; height: 9px; border-radius: 50%; background: var(--muted); transition: transform 180ms ease, background-color 180ms ease; }
.theme-toggle[data-active-theme="light"] .theme-toggle-track i { background: #668a24; transform: translateX(13px); }
.theme-toggle:hover { background: var(--surface-3); }

:root.theme-changing *,
:root.theme-changing *::before,
:root.theme-changing *::after { transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease !important; }

:root[data-theme="light"] body::before { opacity: .15; }
:root[data-theme="light"] .topbar,
:root[data-theme="light"] .sidebar,
:root[data-theme="light"] .status-strip { background: rgba(255,255,255,.96) !important; }
:root[data-theme="light"] .market-board { background: var(--surface); box-shadow: 0 14px 38px rgba(37,52,28,.07); }
:root[data-theme="light"] .board-toolbar { background: var(--surface-2); }
:root[data-theme="light"] .table-wrap,
:root[data-theme="light"] table,
:root[data-theme="light"] thead,
:root[data-theme="light"] tbody,
:root[data-theme="light"] tbody tr { background: var(--surface); }
:root[data-theme="light"] th { color: #666e9d; background: #f1f2f6; }
:root[data-theme="light"] td { color: var(--text); border-bottom-color: var(--line); }
:root[data-theme="light"] tbody tr:hover { background: #f3f4f9; }
:root[data-theme="light"] tbody tr:hover td { background: transparent; }
:root[data-theme="light"] .rank { color: #6b72a1; }
:root[data-theme="light"] .filters button.active { color: #304a00; background: #e5f0c7; }
:root[data-theme="light"] .board-sort button.active { color: #304a00; background: #e5f0c7; }
:root[data-theme="light"] .board-pager button { background: #fff; }
:root[data-theme="light"] .board-pager button.active { color: #304a00; background: #e5f0c7; }
:root[data-theme="light"] .status-tag.live { color: #765000; border-color: #dfc57b; background: #fff7dc; }

:root[data-theme="light"] body.launch-route .dialog-shell,
:root[data-theme="light"] body.launch-route .dialog-shell > header,
:root[data-theme="light"] body.launch-route .dialog-grid,
:root[data-theme="light"] body.launch-route .launch-form,
:root[data-theme="light"] body.launch-route .token-preview-card,
:root[data-theme="light"] body.launch-route .launch-economics { background: var(--surface) !important; }
:root[data-theme="light"] body.launch-route .launch-review { color: var(--text); background: #f0f0f6 !important; }
:root[data-theme="light"] body.launch-route .token-preview-card { border-color: var(--line-strong); box-shadow: 0 10px 28px rgba(37,52,28,.07); }
:root[data-theme="light"] body.launch-route .pair-select-panel { border-color: var(--line); background: var(--surface); }
:root[data-theme="light"] body.launch-route .pair-option:hover { background: #f0f1f7; }
:root[data-theme="light"] body.launch-route .pair-option:has(input:checked) { background: #e7eedc; }
:root[data-theme="light"] body.launch-route .pair-option > span b { color: var(--text); }
:root[data-theme="light"] body.launch-route .pair-option > span small { color: var(--muted); }
:root[data-theme="light"] body.launch-route .image-upload-icon { color: #ebecf2; background: #222435; }

@media (prefers-reduced-motion: reduce) {
  :root.theme-changing *, :root.theme-changing *::before, :root.theme-changing *::after { transition: none !important; }
  .theme-toggle-track i { transition: none; }
}

/* Card-based market directory. */
.market-card-sections { display: grid; gap: 14px; padding: 14px; }
.market-card-group { padding: 18px; border: 1px solid var(--line); border-radius: 18px; background: var(--surface-2); }
.market-card-group:first-child:has(.status-tag.graduated) { border-color: color-mix(in srgb,var(--green) 55%,var(--line)); background: linear-gradient(135deg,color-mix(in srgb,var(--green-soft) 74%,var(--surface)),var(--surface)); }
.market-card-group > header { display: flex; justify-content: space-between; gap: 18px; margin-bottom: 18px; }
.market-card-group h2 { margin: 0; font-size: 24px; letter-spacing: -.035em; }
.market-card-group h2 b { display: inline-block; margin-left: 6px; padding: 5px 8px; border-radius: 999px; color: var(--muted); background: var(--surface-3); font: 800 10px var(--mono); vertical-align: middle; }
.market-card-group > header p { margin: 7px 0 0; color: var(--muted); font-size: 12px; }
.market-card-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(190px,1fr)); gap: 12px; }
.market-card { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 15px; background: var(--surface); box-shadow: 0 9px 24px rgba(0,0,0,.12); }
.market-card > button { width: 100%; display: grid; gap: 10px; padding: 10px; border: 0; color: var(--text); background: transparent; cursor: pointer; text-align: left; }
/* A long nowrap title must not widen the implicit column: an auto track would grow
   past the button, stretching the square art and pushing every row of that card
   out of line with its neighbours. Clamp the column and every child. */
.market-card > button { grid-template-columns: minmax(0, 1fr); }
.market-card > button > * { min-width: 0; }
.market-card > button:hover .market-card-art img,.market-card > button:hover .market-card-placeholder { transform: scale(1.025); }
.market-card > button:focus-visible { outline-offset: -3px; }

/* Communities universe: anchor cards mirror the button card surface, and the
   community page composes identity, live market facts and the published page. */
.market-card > a { width: 100%; display: grid; gap: 10px; padding: 10px; border: 0; color: var(--text); background: transparent; cursor: pointer; text-align: left; text-decoration: none; grid-template-columns: minmax(0, 1fr); }
.market-card > a > * { min-width: 0; }
.market-card > a:hover .market-card-art img, .market-card > a:hover .market-card-placeholder { transform: scale(1.025); }
.market-card > a:focus-visible { outline-offset: -3px; }
.community-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 14px; }
.community-panel { border: 1px solid var(--line); border-radius: 15px; background: var(--surface); padding: 18px; box-shadow: 0 9px 24px rgba(0,0,0,.12); margin-top: 14px; }
.community-grid > .community-panel { margin-top: 0; }
.community-hero { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 15px; align-items: start; }
.community-hero-art { position: relative; width: 92px; height: 92px; aspect-ratio: auto; border-radius: 14px; overflow: hidden; display: block; }
.community-hero-art img { width: 100%; height: 100%; object-fit: cover; }
.community-hero-art .market-card-placeholder { width: 100%; height: 100%; font-size: 26px; }
.community-hero-copy h2 { font-size: clamp(22px, 3vw, 32px); letter-spacing: -.03em; line-height: 1.1; }
.community-hero-copy h2 small { display: block; color: var(--muted); font: 700 13px var(--mono); letter-spacing: .06em; margin-top: 6px; }
.community-desc { color: var(--muted); font-size: 14px; line-height: 1.7; margin-top: 10px; }
.community-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.community-links a { padding: 7px 10px; border: 1px solid var(--line); border-radius: 9px; color: var(--green); font: 10px var(--mono); text-decoration: none; }
.community-links a:hover { border-color: var(--green); background: var(--green-soft); }
.community-links-empty { color: var(--muted); font: 10px var(--mono); }
.community-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; margin-top: 15px; }
.community-facts > div { border: 1px solid var(--line); border-radius: 11px; padding: 10px 12px; }
.community-facts small { display: block; color: var(--muted); font: 800 8px var(--mono); letter-spacing: .08em; margin-bottom: 6px; }
.community-facts strong { font: 700 13px var(--mono); word-break: break-word; }
.community-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-bottom: 12px; border-bottom: 1px solid var(--line); margin-bottom: 4px; }
.community-panel-head span { color: var(--green); font: 800 9px var(--mono); letter-spacing: .1em; }
.community-panel-head strong { font: 700 11px var(--mono); }
.community-panel .market-card-progress { margin-top: 15px; }
.community-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 15px; }
.community-site-link { display: inline-block; margin-top: 4px; color: var(--green); font: 11px var(--mono); word-break: break-all; text-decoration: none; border-bottom: 1px solid var(--green-soft); }
.community-site-link:hover { border-color: var(--green); }
:root[data-theme="light"] .community-panel { box-shadow: 0 10px 24px rgba(37,52,28,.08); }
@media (max-width: 900px) { .community-grid { grid-template-columns: minmax(0, 1fr); } }
.market-card-art { position: relative; width: 100%; aspect-ratio: 1; display: grid; place-items: center; overflow: hidden; border-radius: 11px; background: var(--surface-3); }
.market-card-art > img { width: 100%; height: 100%; object-fit: cover; transition: transform 180ms ease; }
.market-card-placeholder { width: 68%; aspect-ratio: 1; display: grid; place-items: center; border-radius: 18px; color: #fbfcfe; font: 900 clamp(22px,2.8vw,40px) var(--mono); letter-spacing: .04em; text-shadow: 0 2px 10px rgba(0,0,0,.4); background: linear-gradient(145deg, hsl(var(--tile-h,232) 46% 33%), hsl(calc(var(--tile-h,232) + 36) 54% 18%)); box-shadow: inset 0 0 0 1px rgba(255,255,255,.08), 0 12px 26px rgba(0,0,0,.28); transition: transform 180ms ease; }
.market-card-art .status-tag { position: absolute; z-index: 2; top: 8px; left: 8px; border-radius: 999px; backdrop-filter: blur(8px); }
/* Lime fill (not the darker day-mode green) keeps the near-black label at
   full contrast in both themes: #0f1124 on #b6ee58 ≈ 14:1. */
.market-card-site { position: absolute; z-index: 2; top: 8px; right: 8px; padding: 5px 7px; border-radius: 999px; color: #0f1124; background: var(--accent-fill, var(--green)); font: 800 8px var(--mono); }
.community-site-live { color: var(--green); font: 800 8px var(--mono); letter-spacing: .08em; font-style: normal; }
.community-site-frame { margin: 10px 0 6px; border: 1px solid var(--line-strong); border-radius: 10px; overflow: hidden; background: var(--surface-2); }
/* 16:9 keeps the preview proportional to its width instead of a fixed strip;
   the caps stop an ultrawide panel from growing past the viewport. */
.community-site-frame iframe { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; min-height: 420px; max-height: 78vh; border: 0; background: #0b0c12; }
.community-ipfs-link { display: inline-flex; margin: 12px 16px 0; color: var(--green); font: 800 9px var(--mono); letter-spacing: .06em; text-decoration: none; }
.job-list { display: grid; gap: 8px; }
.job-row { display: grid; gap: 4px; padding: 14px 16px; border: 1px solid var(--line-strong); border-radius: 10px; color: inherit; background: var(--surface); text-decoration: none; }
.job-row span { color: var(--green); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-row small { color: var(--muted); font: 10px var(--mono); }
.job-explorer-stats { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin: 0 0 12px; }
.job-explorer-stats > div { padding: 9px 11px; border: 1px dashed var(--line); border-radius: 8px; }
.job-explorer-stats dt { color: var(--muted); font: 8px var(--mono); letter-spacing: .1em; }
.job-explorer-stats dd { margin: 6px 0 0; font: 700 15px var(--mono); }
.job-row-building span, .job-row-paid span { color: var(--amber); }
.creator-build-site { margin: 0; color: var(--green); font: 800 9px var(--mono); word-break: break-all; }
.market-card-art .origin-tag { position: absolute; z-index: 2; bottom: 8px; left: 8px; max-width: calc(100% - 16px); overflow: hidden; padding: 5px 7px; border: 1px solid var(--line-strong); border-radius: 999px; color: var(--text); background: rgba(24,28,25,.82); backdrop-filter: blur(8px); font: 800 8px var(--mono); text-overflow: ellipsis; white-space: nowrap; }
.studio-paths.is-two { grid-template-columns: repeat(2,minmax(0,1fr)); }
.market-card-copy strong,.market-card-copy small { display: block; }
.market-card-copy strong { overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.market-card-copy small { margin-top: 3px; overflow: hidden; color: var(--muted); font: 10px var(--mono); text-overflow: ellipsis; white-space: nowrap; }
.market-card-pair { display: flex; align-items: center; gap: 8px; min-width: 0; }
.market-card-pair > span:last-child { min-width: 0; }
.market-card-pair small,.market-card-pair strong { display: block; }
.market-card-pair small,.market-card-stats small { overflow: hidden; color: var(--muted); font: 7px var(--mono); text-overflow: ellipsis; white-space: nowrap; }
.market-card-pair strong { margin-top: 2px; overflow: hidden; font: 800 10px var(--mono); text-overflow: ellipsis; white-space: nowrap; }
.market-card-progress { display: flex; align-items: center; gap: 8px; }
.market-card-progress > span { height: 5px; flex: 1; overflow: hidden; border-radius: 999px; background: var(--surface-3); }
.market-card-progress i { width: 0; height: 100%; display: block; background: var(--accent-fill,var(--green)); transition: width 240ms ease; }
.market-card-progress b { flex: 0 0 auto; color: var(--green); font: 800 8px var(--mono); white-space: nowrap; }
.market-card-stats { display: grid; grid-template-columns: 1fr auto; gap: 8px; padding-top: 9px; border-top: 1px solid var(--line); }
/* The two figures the directory can be ordered by, on their own rule so the
   reserve row keeps its dollars-plus-ETH pairing intact. */
.market-card-metrics { padding-top: 8px; }
.market-card-stats span:last-child { text-align: right; }
.market-card-stats strong { display: block; margin-top: 3px; overflow: hidden; font: 800 9px var(--mono); text-overflow: ellipsis; white-space: nowrap; }
/* Dollars lead the reserve cell and the ETH equivalent sits under it; both
   lines live inside the same card gutter so the fee column never shifts. */
.market-card-reserve em { display: block; margin-top: 2px; color: var(--muted); font: 700 8px var(--mono); font-style: normal; }
.market-card-foot { min-width: 0; display: flex; justify-content: space-between; gap: 8px; color: var(--muted); font: 8px var(--mono); }
.market-card-foot > span,.market-card-foot > time { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.market-card-foot > time { flex: 0 0 auto; }
.pair-graduation-hint { display: block; margin: 8px 2px 0; color: var(--muted); font-size: 11px; }
:root[data-theme="light"] .market-card-group { background: #f4f5f9; }
:root[data-theme="light"] .market-card { box-shadow: 0 10px 24px rgba(37,52,28,.08); }

@media (max-width: 760px) { .market-card-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }.market-card-sections { padding: 10px; }.market-card-group { padding: 13px; } }
@media (max-width: 470px) { .market-card-grid { grid-template-columns: 1fr; }.market-card-art { aspect-ratio: 16/10; } }

/* Verified market terminal: real OHLC candles and indexed pair-volume. */
.market-chart-card {
  --chart-bg: #111722;
  --chart-panel: #151c28;
  --chart-grid: #273140;
  --chart-text: #d3d9e2;
  --chart-muted: #8994a5;
  --chart-up: #00bfa5;
  --chart-down: #ff4664;
  border-color: #293442;
  border-radius: 8px;
  background: var(--chart-bg);
  box-shadow: 0 12px 32px rgba(0,0,0,.18);
}
.market-chart-card > .market-chart-header { min-height: 76px; padding: 12px 16px; border-color: var(--chart-grid); background: var(--chart-panel); }
.market-chart-identity { min-width: 0; }
.market-chart-card > header .market-chart-identity > span { color: var(--chart-muted); font-size: 8px; letter-spacing: .08em; }
.market-chart-card > header .market-chart-identity > strong { color: var(--chart-text); font-size: 14px; }
.market-chart-ohlc { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; color: var(--chart-muted); font: 700 8px var(--mono); }
.market-chart-card > header .market-chart-ohlc span { display: inline; color: var(--chart-muted); font: inherit; }
.market-chart-ohlc b { color: var(--chart-up); font: inherit; }
.market-chart-ohlc .chart-ohlc-pair { opacity: .75; }
.market-chart-card .chart-live-value { border-color: var(--chart-grid); }
.market-chart-card .chart-live-value small { color: var(--chart-muted); }
.market-chart-card .chart-live-value b { color: var(--chart-text); }
.market-chart-card .chart-range button { border-color: #344151; border-radius: 4px; color: var(--chart-muted); background: #111722; }
.market-chart-card .chart-range button:hover { color: var(--chart-text); background: #1b2431; }
.market-chart-card .chart-range button.active { border-color: #516176; color: #f4f7fb; background: #2a3442; }
body.token-route .market-chart { min-height: 480px; padding: 0; background: var(--chart-bg); }
body.token-route .market-chart svg { width: 100%; height: 440px; }
#market-chart-grid line { stroke: var(--chart-grid); stroke-width: 1; vector-effect: non-scaling-stroke; }
#market-chart-grid .volume-divider { stroke: #354151; }
.market-candle .candle-wick { stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.market-candle .candle-body { stroke-width: .7; vector-effect: non-scaling-stroke; }
.market-candle.up .candle-wick,.market-candle.up .candle-body { fill: var(--chart-up); stroke: var(--chart-up); }
.market-candle.down .candle-wick,.market-candle.down .candle-body { fill: var(--chart-down); stroke: var(--chart-down); }
.market-candle.flat .candle-wick,.market-candle.flat .candle-body { fill: var(--chart-muted); stroke: var(--chart-muted); }
.market-volume-bar.up { fill: color-mix(in srgb,var(--chart-up) 52%,transparent); }
.market-volume-bar.down { fill: color-mix(in srgb,var(--chart-down) 58%,transparent); }
#market-chart-current-line { stroke: var(--chart-down); stroke-width: 1; stroke-dasharray: 2 3; vector-effect: non-scaling-stroke; }
#market-chart-crosshair,#market-chart-crosshair-y { stroke: #8794a6; stroke-width: 1; stroke-dasharray: 5 5; vector-effect: non-scaling-stroke; }
#market-chart-hover-dot { fill: var(--chart-bg); stroke: #f4f7fb; stroke-width: 2; vector-effect: non-scaling-stroke; }
.chart-axis-label,.chart-time-label,.chart-current-label { fill: var(--chart-muted); font: 700 8px var(--mono); }
.chart-current-label-bg { fill: var(--chart-down); }
.chart-current-label { fill: #fff; }
.market-chart-tooltip { min-width: 235px; border-color: #3b485a; color: var(--chart-text); background: rgba(21,28,40,.97); box-shadow: 0 16px 38px rgba(0,0,0,.38); }
.market-chart-tooltip strong,.market-chart-tooltip span,.market-chart-tooltip small { display: block; }
.market-chart-tooltip span,.market-chart-tooltip small { margin-top: 5px; color: var(--chart-muted); font: 8px/1.5 var(--mono); }
.market-chart-card > footer { border-color: var(--chart-grid); color: var(--chart-muted); background: var(--chart-panel); }
.market-chart-card #market-chart-proof { color: var(--chart-up); }

:root[data-theme="light"] .market-chart-card {
  --chart-bg: #f7f9fc;
  --chart-panel: #eef2f7;
  --chart-grid: #d7dee8;
  --chart-text: #1b2430;
  --chart-muted: #657185;
  --chart-up: #008f7a;
  --chart-down: #dc3654;
  border-color: #cad3df;
  box-shadow: 0 12px 30px rgba(34,48,69,.09);
}
:root[data-theme="light"] .market-chart-card .chart-range button { border-color: #c6d0dc; background: #f7f9fc; }
:root[data-theme="light"] .market-chart-card .chart-range button:hover { color: #1b2430; background: #e5eaf1; }
:root[data-theme="light"] .market-chart-card .chart-range button.active { border-color: #6f7e91; color: #fff; background: #3b4757; }
:root[data-theme="light"] .market-chart-tooltip { border-color: #c6d0dc; color: #1b2430; background: rgba(247,249,252,.98); box-shadow: 0 14px 32px rgba(34,48,69,.18); }

@media (max-width: 700px) {
  .market-chart-card > .market-chart-header { min-height: 118px; }
  .market-chart-ohlc { gap: 6px; }
  body.token-route .market-chart { min-height: 350px; }
  body.token-route .market-chart svg { height: 330px; }
  .chart-time-label { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .market-chart.just-updated { transition: none; }
}

/* Interactive financial chart engine. */
.market-chart-header { align-items: flex-start; }
.market-chart-identity { flex: 1 1 360px; }
.market-chart-volume-readout { display: flex; align-items: center; gap: 7px; margin-top: 7px; color: var(--chart-muted); font: 700 8px var(--mono); }
.market-chart-card > header .market-chart-volume-readout span { display: inline; color: var(--chart-muted); font: inherit; }
.market-chart-volume-readout b { color: var(--chart-text); font: inherit; }
.chart-metric { display: flex; padding: 3px; border: 1px solid #344151; border-radius: 5px; background: #111722; }
.chart-metric button { min-height: 34px; padding: 0 12px; border: 0; border-radius: 3px; color: var(--chart-muted); background: transparent; cursor: pointer; font: 800 9px var(--mono); }
.chart-metric button:hover { color: var(--chart-text); }
.chart-metric button.active { color: #f4f7fb; background: #2a3442; }
body.token-route .market-chart { display: block; min-height: 500px; height: 500px; overflow: hidden; }
.market-chart-canvas { width: 100%; height: 100%; }
.market-chart-canvas > div { width: 100% !important; height: 100% !important; }
/* Freehand annotation layer. It covers the whole chart box while staying
   invisible to the pointer, so panning and scaling behave exactly as before
   until Draw is armed; the drawing itself is anchored in time and price and
   redrawn whenever the view moves. */
.market-chart-draw { position: absolute; inset: 0; z-index: 2; display: block; width: 100%; height: 100%; pointer-events: none; touch-action: none; }
.market-chart.is-drawing .market-chart-draw { pointer-events: auto; cursor: crosshair; }
.market-chart-card > footer { display: grid; grid-template-columns: auto 1fr auto auto; align-items: center; gap: 14px; }
.market-chart-card > footer a { color: var(--chart-muted); text-decoration: none; }
.market-chart-card > footer a:hover { color: var(--chart-text); }
.market-chart-card #market-chart-proof { justify-self: center; }

:root[data-theme="light"] .chart-metric { border-color: #c6d0dc; background: #f7f9fc; }
:root[data-theme="light"] .chart-metric button.active { color: #fff; background: #3b4757; }

@media (max-width: 920px) {
  .market-chart-header { flex-direction: column; }
  .market-chart-identity { flex-basis: auto; }
  .market-chart-tools { width: 100%; flex-wrap: wrap; justify-content: flex-start; }
  .chart-live-value { margin-left: auto; }
}

@media (max-width: 700px) {
  body.token-route .market-chart { min-height: 390px; height: 390px; }
  .chart-metric { order: 1; }
  .chart-live-value { order: 2; }
  .chart-range { order: 3; width: 100%; justify-content: flex-start; }
  .market-chart-card > footer { grid-template-columns: 1fr auto; }
  .market-chart-card #market-chart-proof { justify-self: start; }
  .market-chart-card > footer a { text-align: right; }
}

/* Pump-native Project Workbench. The coding runtime stays behind the Pump UI. */
body.launch-route .launch-studio { padding: 24px; }
.launch-workbench { min-height: 760px; display: grid; grid-template-columns: 205px minmax(480px,1fr) minmax(430px,.72fr); margin-top: 24px; overflow: hidden; border: 1px solid var(--line-strong); border-radius: 12px; background: var(--surface); }
.launch-workbench button,.launch-workbench input,.launch-workbench textarea { font: inherit; }
.launch-workbench-rail { min-width: 0; display: flex; flex-direction: column; overflow: auto; border-right: 1px solid var(--line); background: var(--surface-2); }
.workbench-project { display: grid; gap: 4px; padding: 18px 15px 13px; }
.workbench-project small,.workbench-rail-group > small,.launch-workbench small,.launch-workbench-preview small { color: var(--green); font: 800 9px var(--mono); letter-spacing: .08em; }
.workbench-project strong { overflow: hidden; font: 900 16px var(--mono); text-overflow: ellipsis; }
.workbench-project span { overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; }
.workbench-new { min-height: 38px; margin: 0 11px 9px; padding: 0 10px; border: 1px dashed var(--line-strong); border-radius: 6px; color: var(--text); background: transparent; text-align: left; font: 800 9px var(--mono) !important; cursor: pointer; }
.workbench-new-project { min-height: 38px; margin: 0 11px 12px; padding: 0 10px; border: 1px solid var(--line-strong); border-radius: 6px; color: var(--text); background: var(--surface-3); text-align: left; font: 800 9px var(--mono) !important; cursor: pointer; }
.workbench-new-project:hover,.workbench-new-project:focus-visible { border-color: var(--green); color: var(--green); }
#workbench-recent-group[hidden] { display: none; }
#workbench-recent-group button { margin-bottom: 3px; }
#workbench-recent-group button:hover,#workbench-recent-group button:focus-visible { border-color: var(--green); color: var(--green); }
#workbench-recent-group button em { white-space: nowrap; }
.workbench-rail-group { display: grid; gap: 3px; padding: 10px 9px 4px; }
.workbench-rail-group > small { padding: 0 7px 5px; }
.workbench-rail-group button { min-height: 38px; display: grid; grid-template-columns: 22px minmax(0,1fr) auto; align-items: center; gap: 5px; padding: 0 7px; border: 1px solid transparent; border-radius: 6px; color: var(--light-ink,var(--text)); background: transparent; text-align: left; cursor: pointer; }
.workbench-rail-group button.active { border-color: var(--line-strong); background: var(--surface); }
.workbench-rail-group button span,.workbench-rail-group button em { color: var(--muted); font: 8px var(--mono); font-style: normal; }
.workbench-rail-group button b { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
/* Bounded rail: three recent rows + an "All projects" launcher into the searchable library panel. */
#workbench-recent-group .workbench-rail-all { margin-top: 6px; border-color: var(--line-strong); }
#workbench-recent-group .workbench-rail-all:hover,#workbench-recent-group .workbench-rail-all:focus-visible { border-color: var(--green); color: var(--green); }
#workbench-recent-group button em.is-live { color: var(--green); font-weight: 800; }
.projects-dialog { width: min(720px, calc(100vw - 32px)); max-height: calc(100vh - 40px); padding: 0; overflow: hidden; border: 1px solid var(--line-strong); color: var(--text); background: var(--surface); box-shadow: 0 24px 80px rgba(0,0,0,.35); }
.projects-dialog::backdrop { background: rgba(0,4,2,.78); backdrop-filter: blur(5px); }
.projects-dialog-shell { display: grid; grid-template-rows: auto auto minmax(0,1fr) auto; max-height: calc(100vh - 42px); }
.projects-dialog header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 20px 14px; border-bottom: 1px solid var(--line); }
.projects-dialog header > div > span { color: var(--green); font: 800 9px var(--mono); letter-spacing: .08em; }
.projects-dialog header h2 { margin: 6px 0 0; font-size: 22px; }
.projects-dialog header p { margin: 4px 0 0; color: var(--muted); font: 9px var(--mono); }
.projects-dialog header > button { width: 38px; height: 38px; flex: 0 0 auto; border: 1px solid var(--line); color: var(--muted); background: var(--surface-3); cursor: pointer; font-size: 20px; line-height: 1; }
.projects-dialog header > button:hover { border-color: var(--green); color: var(--green); }
.projects-dialog-tools { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 10px; padding: 12px 20px; border-bottom: 1px solid var(--line); }
.projects-dialog-tools input { min-height: 38px; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: 6px; color: var(--text); background: var(--surface-3); font: 10px var(--mono); }
.projects-dialog-tools input:focus { outline: none; border-color: var(--green); }
.projects-dialog-filters { display: flex; gap: 6px; }
.projects-dialog-filters button { min-height: 30px; padding: 0 11px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); background: transparent; font: 800 9px var(--mono); cursor: pointer; }
.projects-dialog-filters button.active { border-color: var(--green); color: var(--green); }
.projects-dialog-count { color: var(--muted); font: 800 9px var(--mono); white-space: nowrap; }
.projects-dialog-list { display: grid; gap: 4px; overflow-y: auto; padding: 12px; }
.projects-dialog-row { min-height: 52px; display: grid; grid-template-columns: 30px minmax(0,1fr) auto; align-items: center; gap: 10px; padding: 6px 10px; border: 1px solid transparent; border-radius: 8px; color: var(--text); background: transparent; text-align: left; cursor: pointer; }
.projects-dialog-row:hover:not(:disabled),.projects-dialog-row:focus-visible { border-color: var(--green); }
.projects-dialog-row:disabled { cursor: default; opacity: .72; }
.projects-dialog-mark { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; color: #fbfcfe; font: 900 10px var(--mono); background: linear-gradient(145deg, hsl(var(--tile-h,232) 46% 33%), hsl(calc(var(--tile-h,232) + 36) 54% 18%)); }
.projects-dialog-copy { min-width: 0; display: grid; gap: 2px; }
.projects-dialog-copy b { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.projects-dialog-copy small { overflow: hidden; color: var(--muted); font: 9px var(--mono); text-overflow: ellipsis; white-space: nowrap; }
.projects-dialog-chip { padding: 3px 7px; border: 1px solid var(--line); border-radius: 4px; color: var(--muted); font: 800 8px var(--mono); font-style: normal; letter-spacing: .06em; }
.projects-dialog-chip.is-live { border-color: var(--green); color: var(--green); }
.projects-dialog-chip.is-current { border-color: var(--amber); color: var(--amber); }
.projects-dialog-empty { padding: 28px 20px; color: var(--muted); font: 10px/1.6 var(--mono); text-align: center; }
#projects-dialog-empty[hidden] { display: none; }
@media (max-width: 720px) {
  .projects-dialog { width: 100vw; max-width: none; max-height: 100vh; height: 100vh; margin: 0; border: 0; }
  .projects-dialog-shell { max-height: 100vh; height: 100vh; }
  .projects-dialog-tools { grid-template-columns: 1fr; }
}
.community-site-meta { display: inline-flex; align-items: center; gap: 10px; }
.community-site-expand { padding: 5px 9px; border: 1px solid var(--line-strong); border-radius: 999px; color: var(--muted); background: transparent; font: 800 8px var(--mono); letter-spacing: .08em; cursor: pointer; }
.community-site-expand:hover { border-color: var(--green); color: var(--green); }
.site-viewer-dialog { width: 100vw; max-width: none; height: 100vh; max-height: none; margin: 0; padding: 0; border: 0; color: var(--text); background: var(--surface); }
.site-viewer-dialog::backdrop { background: rgba(0,4,2,.9); backdrop-filter: blur(6px); }
.site-viewer-shell { display: grid; grid-template-rows: auto minmax(0,1fr); height: 100vh; }
.site-viewer-shell > header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.site-viewer-shell > header span { color: var(--green); font: 800 9px var(--mono); letter-spacing: .1em; }
.site-viewer-shell > header h2 { margin: 5px 0 0; font-size: 20px; }
.site-viewer-shell > header button { width: 38px; height: 38px; flex: 0 0 auto; border: 1px solid var(--line); color: var(--muted); background: var(--surface-3); cursor: pointer; font-size: 20px; line-height: 1; }
.site-viewer-shell > header button:hover { border-color: var(--green); color: var(--green); }
.site-viewer-frame { min-height: 0; }
.site-viewer-frame iframe { display: block; width: 100%; height: 100%; border: 0; background: #0b0c12; }
.workbench-agent { display: flex; align-items: center; gap: 8px; margin: auto 9px 10px; padding: 11px 6px; border-top: 1px solid var(--line); }
.workbench-agent > i,.workbench-message > i { width: 32px; height: 32px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 50%; color: #0d1027; background: var(--accent-fill,var(--green)); font: 900 8px var(--mono); font-style: normal; }
.workbench-agent b,.workbench-agent small { display: block; }
.workbench-agent b { font-size: 10px; }.workbench-agent small { margin-top: 3px; font-size: 7px; }
.launch-workbench-chat { min-width: 0; display: grid; grid-template-rows: auto auto minmax(0,1fr) auto; background: var(--surface); }
.launch-workbench-chat > header { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 15px 20px; border-bottom: 1px solid var(--line); }
.launch-workbench-chat > header h3 { margin: 5px 0 0; font-size: 22px; }
.workbench-safe { text-align: right; }.workbench-safe b,.workbench-safe small { display: block; }.workbench-safe b { color: var(--green); font: 800 8px var(--mono); }.workbench-safe small { margin-top: 4px; color: var(--muted); font-size: 8px; }
.workbench-phases { display: grid; grid-template-columns: repeat(4,1fr); padding: 8px 18px 0; border-bottom: 1px solid var(--line); }
.workbench-phases button { min-height: 38px; border: 0; border-bottom: 2px solid transparent; color: var(--muted); background: transparent; font: 800 9px var(--mono); cursor: pointer; }
.workbench-phases button.active { border-color: var(--green); color: var(--text); }
.launch-workbench-scroll { overflow: auto; padding: 22px clamp(16px,2.3vw,38px) 36px; }
.workbench-conversation { max-width: 760px; margin: 0 auto 18px; }
.workbench-message { max-width: 760px; display: flex; gap: 11px; margin: 0 auto 12px; }
.workbench-message > div { padding: 13px 15px; border-radius: 5px 13px 13px; background: var(--surface-2); }
.workbench-message b { font-size: 11px; }.workbench-message p { margin: 6px 0 0; color: var(--light-ink,var(--muted)); font-size: 12px; line-height: 1.6; }
.workbench-message.is-user { justify-content: flex-end; padding-left: 12%; }
.workbench-message.is-user > div { border: 1px solid #668a24; border-radius: 13px 5px 13px 13px; background: #eef5dc; }
.workbench-message.is-user b { color: #668a24; }

/* Every agent surface waits the same way — an animated three-dot pulse plus
   the elapsed seconds — so a slow model round trip reads as "working" instead
   of "frozen". Shared by the planning workbench and the creator studio. */
.thinking-indicator { display: inline-flex; align-items: center; gap: 8px; }
.thinking-dots { display: inline-flex; gap: 4px; }
.thinking-dots b { display: block; width: 5px; height: 5px; border-radius: 50%; background: currentColor; animation: thinking-pulse 1.1s infinite ease-in-out; }
.thinking-dots b:nth-child(2) { animation-delay: .15s; }
.thinking-dots b:nth-child(3) { animation-delay: .3s; }
.thinking-indicator em { font-style: normal; font: 900 9px var(--mono); letter-spacing: .06em; opacity: .78; }
@keyframes thinking-pulse { 0%, 80%, 100% { opacity: .22; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }
@media (prefers-reduced-motion: reduce) { .thinking-dots b { animation: none; opacity: .6; transform: none; } .trade-notice.error { animation: none; } .activity-table tbody tr.is-new td { animation: none; } }
.workbench-capabilities,.workbench-brief-card { max-width: 820px; margin: 20px auto; padding: 16px; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--surface); }
.workbench-capabilities > header,.workbench-brief-card > header { display: flex; justify-content: space-between; align-items: end; gap: 18px; margin-bottom: 13px; }
.workbench-capabilities h4,.workbench-brief-card h4 { margin: 5px 0 0; font-size: 18px; }.workbench-capabilities > header > span,.workbench-brief-card > header > span { color: var(--muted); font: 8px var(--mono); }
.workbench-capability-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.workbench-capability { position: relative; min-height: 116px; padding: 13px 12px 30px; border: 1px solid var(--line); border-radius: 7px; color: var(--text); background: var(--surface-2); text-align: left; cursor: pointer; }
.workbench-capability:hover,.workbench-capability:focus-visible { border-color: var(--green); background: var(--green-soft); }
.workbench-capability small { font-size: 8px; }.workbench-capability b { display: block; margin: 7px 0 5px; font-size: 11px; }.workbench-capability p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.45; }.workbench-capability em { position: absolute; bottom: 10px; left: 12px; font: 800 7px var(--mono); font-style: normal; }.workbench-capability em.is-ready { color: var(--green); }.workbench-capability em.is-connect { color: var(--amber); }.workbench-capability em.is-review { color: var(--muted); border-left: 2px solid var(--line-strong); padding-left: 4px; }
.workbench-capabilities > footer { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 12px; color: var(--muted); font: 8px var(--mono); }.workbench-capabilities > footer i { width: 7px; height: 7px; display: inline-block; margin-right: 5px; border-radius: 50%; }.workbench-capabilities i.ready { background: var(--green); }.workbench-capabilities i.connect { background: var(--amber); }.workbench-capabilities i.review { background: var(--muted); }
.workbench-brief-card form > label { display: grid; gap: 7px; margin-bottom: 14px; font-size: 11px; }.workbench-brief-card input,.workbench-brief-card textarea { width: 100%; padding: 11px; border: 1px solid var(--line-strong); border-radius: 7px; color: var(--text); background: var(--bg); resize: vertical; }.workbench-brief-card .field-row { gap: 10px; }.workbench-brief-card .hero-actions { margin-top: 4px; }
#workbench-consent-status { display: none; }
#workbench-consent-status:not(:empty) { display: block; margin-top: 16px; padding: 12px 14px; border: 1px solid var(--red); border-radius: 9px; background: rgba(255, 98, 89, .07); color: var(--red); font: 700 12px/1.55 var(--mono); }
.launch-workbench .brief-review { max-width: 820px; margin: 22px auto; padding: 17px; border: 1px solid var(--green); border-radius: 9px; }.launch-workbench .brief-review h3 { margin-top: 0; }
.workbench-composer { display: grid; grid-template-columns: 40px minmax(0,1fr) auto; gap: 8px; padding: 12px 16px; border-top: 1px solid var(--line); background: var(--surface); }.workbench-composer > button { min-height: 44px; padding: 0 15px; border: 1px solid var(--line-strong); border-radius: 7px; color: var(--text); background: var(--surface-2); cursor: pointer; }.workbench-composer #workbench-add-outcome { background: var(--accent-fill,var(--green)); color: #0c0f22; font-weight: 850; }.workbench-composer > div { display: grid; }.workbench-composer textarea { min-height: 48px; padding: 11px; border: 1px solid var(--line-strong); border-radius: 7px; color: var(--text); background: var(--bg); resize: none; }.workbench-composer > div small { margin-top: 4px; color: var(--muted); font-size: 7px; }
.launch-workbench-preview { min-width: 0; display: flex; flex-direction: column; overflow: auto; border-left: 1px solid var(--line); background: var(--surface-2); }
.launch-workbench-preview > header { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--line); }.launch-workbench-preview > header h3 { margin: 5px 0 0; font-size: 18px; }.launch-workbench-preview > header > span { color: var(--amber); font: 800 8px var(--mono); }
.workbench-browser { margin: 18px; border: 1px solid var(--line-strong); background: var(--surface); box-shadow: 0 14px 34px rgba(0,0,0,.14); }.workbench-browser-bar { display: flex; justify-content: space-between; gap: 10px; padding: 9px 11px; border-bottom: 1px solid var(--line); color: var(--muted); font: 8px var(--mono); }.workbench-browser-bar b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.workbench-site-preview { min-height: 340px; padding: 42px 30px 28px; color: #f8f8fc; background: #0d0f19; }.workbench-site-preview small { color: #b6ee58; font-size: 9px; }.workbench-site-preview h4 { max-width: 360px; margin: 22px 0 14px; color: #fff; font-size: clamp(28px,2.2vw,42px); line-height: 1.03; letter-spacing: -.04em; }.workbench-site-preview p { max-width: 390px; color: #bdc1d5; font-size: 12px; line-height: 1.65; }.workbench-site-preview > button { min-height: 40px; margin-top: 10px; padding: 0 15px; border: 0; color: #111320; background: #b6ee58; font: 850 9px var(--mono); }.workbench-site-preview dl { display: grid; grid-template-columns: 1fr 1fr; margin: 38px 0 0; border-top: 1px solid #2b2f44; }.workbench-site-preview dl > div { padding-top: 14px; }.workbench-site-preview dt { color: #8389af; font: 8px var(--mono); }.workbench-site-preview dd { margin: 5px 0 0; color: #fff; font: 850 11px var(--mono); }
.workbench-boundaries { margin: 0 18px 18px; padding: 15px; border: 1px solid var(--line); background: var(--surface); }.workbench-boundaries p { margin: 9px 0; color: var(--light-ink,var(--muted)); font: 9px var(--mono); }
.workbench-preview-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: auto 18px 18px; }.workbench-preview-actions button { min-height: 42px; border: 1px solid var(--line-strong); color: var(--text); background: var(--surface); font: 800 9px var(--mono); cursor: pointer; }
.workbench-launch-review { grid-column: 1/-1; padding: 24px; border-top: 1px solid var(--line-strong); background: var(--surface-2); scroll-margin-top: 82px; }
.workbench-launch-review .create-dialog { margin: 0; }
.workbench-launch-review .dialog-shell { border-color: var(--line-strong); }
.workbench-launch-review .dialog-shell > header { background: var(--green-soft); }
.workbench-launch-review .dialog-shell > header > div > span { color: #668a24; }
@media (max-width: 1380px) { .launch-workbench { grid-template-columns: 190px minmax(450px,1fr) minmax(380px,.72fr); }.workbench-capability-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 1120px) { .launch-workbench { grid-template-columns: 185px minmax(0,1fr); }.launch-workbench-preview { grid-column: 1/-1; min-height: 620px; border-top: 1px solid var(--line); border-left: 0; }.workbench-browser { max-width: 720px; width: calc(100% - 36px); margin-inline: auto; }.workbench-boundaries { max-width: 720px; width: calc(100% - 36px); margin-inline: auto; }.workbench-preview-actions { max-width: 720px; width: calc(100% - 36px); margin-inline: auto; margin-bottom: 18px; } }
@media (max-width: 760px) { body.launch-route .launch-studio { padding: 15px; }.launch-workbench { display: block; min-height: 0; }.launch-workbench-rail { display: none; }.launch-workbench-chat { min-height: 720px; }.launch-workbench-chat > header { align-items: flex-start; }.workbench-safe small { display: none; }.launch-workbench-scroll { padding: 15px 10px 28px; }.workbench-capability-grid { grid-template-columns: 1fr; }.workbench-composer { grid-template-columns: 38px 1fr; }.workbench-composer #workbench-add-outcome { grid-column: 2; min-height: 40px; }.launch-workbench-preview { min-height: 560px; }.workbench-site-preview { min-height: 300px; padding: 32px 22px; }.workbench-site-preview h4 { font-size: 31px; } }

/* Launch uses the Signalbound lime/olive palette; cyan remains reserved for other product contexts. */
body.launch-route { --green: #668a24; --green-soft: #eef5dc; --accent-fill: #b6ee58; --amber: #8b6500; --amber-soft: #fff3d3; }
/* Day mode only: the launch-scoped #668a24 above sits directly on body, so it
   beat the root day green and left the path labels / status strip at 3.6–4.0:1.
   #4d701c (the day green the rest of the app uses) is ≥5.1:1 on those fills. */
:root[data-theme="light"] body.launch-route { --green: #4d701c; }
body.launch-route .create-button,
body.launch-route .side-nav .nav-launch.active,
body.launch-route .hero-primary,
body.launch-route #request-button,
body.launch-route #creator-chat-connect,
body.launch-route #creator-chat-send,
body.launch-route .workbench-composer #workbench-add-outcome { border-color: #668a24 !important; color: #191c36 !important; background: #b6ee58 !important; }
body.launch-route .side-nav a.active,
body.launch-route .side-nav button.active { border-color: #668a24 !important; color: #191c36 !important; background: #b6ee58 !important; }
body.launch-route .studio-paths button[aria-pressed="true"] { border-color: #668a24 !important; background: #eef5dc !important; box-shadow: inset 0 0 0 1px #668a24; }
body.launch-route .studio-paths button[aria-pressed="true"] b,
body.launch-route .launch-studio > header > span,
body.launch-route .workspace-head > div > span,
body.launch-route .workbench-project small,
body.launch-route .workbench-rail-group > small,
body.launch-route .launch-workbench small,
body.launch-route .launch-workbench-preview small,
body.launch-route .workbench-safe b { color: #668a24 !important; }
body.launch-route .workbench-phases button.active { border-color: #668a24 !important; }
body.launch-route .network-pill.live i,
body.launch-route .sidebar-proof i,
body.launch-route .status-strip i,
body.launch-route .workbench-agent > i,
body.launch-route .workbench-message > i { background: #b6ee58 !important; box-shadow: 0 0 10px rgba(102,138,36,.5) !important; }
body.launch-route .primary-action { color: #191c36 !important; background: #b6ee58 !important; }
@media (max-width: 1180px) { .independence-disclosure { display: none; } }

/* Token page readability pass.
   Market readouts were built with 7–9px labels; on this page the figures are
   the content. Labels, captions and secondary lines are raised to readable
   sizes while the grid, spacing and hierarchy stay untouched. Selectors carry
   body.token-route so they outrank both the base rules and the shared
   workspace readability layer. */
body.token-route .market-metrics span { font-size: 10.5px; line-height: 1.35; letter-spacing: .05em; }
body.token-route .market-metrics strong { font-size: clamp(15px,1.5vw,20px); }
body.token-route .fact-head span { font-size: 11px; }
body.token-route .fact-head b { font-size: 10px; }
body.token-route .trade-ticket-head span { font-size: 11px; }
body.token-route .trade-ticket-head > b { font-size: 10px; }
body.token-route .trade-token p { font-size: 12px; }
body.token-route .quote-card span { font-size: 11px; }
body.token-route .quote-card dd { font-size: 12px; }
body.token-route .quote-card p { font-size: 11.5px; line-height: 1.5; }
body.token-route .ticket-proof { font-size: 11px; }
body.token-route .balance-shortcut-note { font-size: 10.5px; line-height: 1.5; }
body.token-route .trade-notice { font-size: 12px; }
body.token-route .slippage-row { font-size: 12px; }
body.token-route .origin-badge { font-size: 12px; }
body.token-route .market-lifecycle-state span { font-size: 11px; }
body.token-route .market-lifecycle-progress > div { font-size: 11px; }
body.token-route .market-lifecycle-steps b { font-size: 12px; }
body.token-route .market-lifecycle-steps small { font-size: 11px; }
body.token-route .market-disclosure > summary > b { font-size: 11px; }
body.token-route .market-disclosure-body > dl dt { font-size: 11px; }
body.token-route .curve-meter p { font-size: 11.5px; }
body.token-route .market-chart-card > header span { font-size: 10.5px; }
body.token-route .market-chart-ohlc { gap: 9px; font-size: 10.5px; }
body.token-route .chart-live-value b { font-size: 13px; }
body.token-route .chart-live-value em { font-size: 11px; }
body.token-route .team-form label span { font-size: 11px; }
body.token-route .team-form small { font-size: 11px; }
body.token-route .team-notice { font-size: 11px; }
body.token-route .studio-head > b,
body.token-route .studio-head > div > span { font-size: 11px; }

/* Market figures are read in dollars; paired units stay in the trade ticket. */
.amount-usd { margin: 8px 2px 0; color: var(--green); font: 700 13px/1.4 var(--mono); }


/* ===== Curve lifecycle + chart redesign ===== */

/* Lifecycle card: single-column head / track / note / actions. */
body.token-route .market-lifecycle {
  grid-template-columns: 1fr;
  align-items: stretch;
  gap: 15px;
  padding: 18px 20px;
}
.market-lifecycle-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.market-lifecycle-pace { color: var(--text); font: 800 15px var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
.market-lifecycle.is-live .market-lifecycle-pace { color: var(--verified); }
.market-lifecycle.is-ready .market-lifecycle-pace { color: var(--amber); }
.market-lifecycle.is-graduated .market-lifecycle-pace { color: var(--text); }
.market-lifecycle.is-unavailable .market-lifecycle-pace { color: var(--red); }
.market-lifecycle-track { display: grid; gap: 9px; }
.market-lifecycle-track .lifecycle-meter { height: 6px; margin-top: 0; border: 0; border-radius: 999px; background: color-mix(in srgb, var(--line-strong) 65%, transparent); }
.market-lifecycle-track .lifecycle-meter i { border-radius: 999px; }
.market-lifecycle-track-meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--muted); font: 11px var(--mono); }
.market-lifecycle-track-meta em { color: var(--text); font-style: normal; font-variant-numeric: tabular-nums; }
body.token-route .market-lifecycle-note { max-width: 720px; font-size: 12.5px; }
body.token-route .market-lifecycle-actions { display: flex; flex-wrap: wrap; gap: 10px; }
body.token-route .market-lifecycle-actions > a,
body.token-route .market-lifecycle-actions > button { flex: 0 1 auto; }
/* The stage list stays in the DOM for contracts but the card hides it. */
.market-lifecycle-steps { display: none; }

/* Chart header: identity left, big price + change chip right, pill toolbars below. */
.market-chart-card > .market-chart-header {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 13px;
  min-height: 0;
}
.market-chart-topline { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.market-chart-topline .market-chart-identity { display: grid; gap: 6px; align-content: start; flex: 1 1 320px; min-width: 0; }
.market-chart-identity .market-chart-ohlc { display: flex; flex-wrap: wrap; gap: 10px; }
.market-chart-volume-readout { display: flex; align-items: baseline; gap: 7px; color: var(--chart-muted); font: 800 9px var(--mono); letter-spacing: .06em; }
.market-chart-volume-readout b { color: var(--chart-text); font-size: 12px; font-variant-numeric: tabular-nums; }
.market-chart-quote { display: grid; justify-items: end; gap: 3px; min-width: 0; text-align: right; }
.market-chart-quote small { color: var(--chart-muted); font: 700 9px var(--mono); letter-spacing: .08em; }
.market-chart-quote-row { display: flex; align-items: baseline; justify-content: flex-end; gap: 10px; }
.market-chart-quote-row b { color: var(--chart-text); font: 800 2rem/1.05 var(--mono); letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.market-chart-change { padding: 3px 9px; border-radius: 999px; color: var(--chart-muted); font: 800 11px var(--mono); font-style: normal; }
.market-chart-change.positive { color: #00d0b4; background: rgba(0,191,165,.14); }
.market-chart-change.negative { color: #ff6b85; background: rgba(255,70,100,.14); }
.market-chart-range-label { color: var(--chart-muted); font: 800 9px var(--mono); letter-spacing: .1em; }
.market-chart-card .market-chart-tools { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.market-chart-card .chart-metric,
.market-chart-card .chart-type { display: flex; padding: 3px; border: 1px solid #344151; border-radius: 999px; background: #111722; }
.market-chart-card .chart-metric button,
.market-chart-card .chart-type button { min-height: 30px; padding: 0 14px; border: 0; border-radius: 999px; color: var(--chart-muted); background: transparent; cursor: pointer; font: 800 9px var(--mono); }
.market-chart-card .chart-metric button:hover,
.market-chart-card .chart-type button:hover { color: var(--chart-text); }
.market-chart-card .chart-metric button.active,
.market-chart-card .chart-type button.active { color: #f4f7fb; background: #2a3442; }
.chart-toggles { display: flex; gap: 7px; }
.chart-toggles button { min-height: 30px; padding: 0 13px; border: 1px solid #344151; border-radius: 999px; color: var(--chart-muted); background: #111722; cursor: pointer; font: 800 9px var(--mono); }
.chart-toggles button:hover { color: var(--chart-text); border-color: #516176; }
.chart-toggles button.active { border-color: #516176; color: #f4f7fb; background: #2a3442; }
/* The draw pair sits beside the fit control. The pencil arms the annotation
   layer; the eraser only appears once there is something to erase, so the
   toolbar never shows a dead control. */
.chart-draw { display: flex; gap: 6px; }
.chart-draw button { width: 30px; min-height: 28px; padding: 0; border: 1px solid #344151; border-radius: 999px; color: var(--chart-muted); background: #111722; cursor: pointer; font: 800 14px var(--mono); line-height: 1; }
.chart-draw button:hover { color: var(--chart-text); border-color: #516176; }
.chart-draw button.active { border-color: var(--draw-stroke); color: var(--draw-stroke); background: #2a3442; }
.chart-draw button[hidden] { display: none; }
.market-chart-card .chart-range button { min-height: 30px; padding: 0 12px; border-radius: 999px; }
:root[data-theme="light"] .chart-type,
:root[data-theme="light"] .chart-toggles button { border-color: #c6d0dc; background: #f7f9fc; }
:root[data-theme="light"] .chart-type button.active,
:root[data-theme="light"] .chart-toggles button.active { color: #fff; background: #3b4757; }
:root[data-theme="light"] .chart-draw button { border-color: #c6d0dc; background: #f7f9fc; }
:root[data-theme="light"] .chart-draw button.active { border-color: var(--draw-stroke); color: #fff; background: var(--draw-stroke); }
:root[data-theme="light"] .market-chart-change.positive { color: #00795f; background: rgba(0,150,125,.12); }
:root[data-theme="light"] .market-chart-change.negative { color: #c22743; background: rgba(220,50,80,.12); }

@media (max-width: 700px) {
  body.token-route .market-lifecycle { gap: 13px; padding: 16px 14px; }
  .market-lifecycle-head { gap: 8px; }
  .market-lifecycle-pace { font-size: 13px; }
  body.token-route .market-lifecycle-actions { display: grid; gap: 8px; }
  body.token-route .market-lifecycle-actions > a,
  body.token-route .market-lifecycle-actions > button { width: 100%; }
  .market-chart-topline { gap: 12px; }
  .market-chart-quote { justify-items: start; text-align: left; }
  .market-chart-quote-row { justify-content: flex-start; }
  .market-chart-quote-row b { font-size: 1.5rem; }
  .market-chart-card .market-chart-tools { gap: 8px; }
  .market-chart-card .chart-range button { min-width: 38px; padding: 0 10px; }
}

/* Ethereum mark: the ETH diamond, drawn with currentColor so it inherits the
   exact same theme colours as its label and stays inside the tested palette.
   The box is the mark's own frame, 784.37 x 1277.39: the upper rhombus fills
   the first 69.07% of the height, the lower piece starts at 56.75% and runs to
   the bottom with its top edge dipping to 41.93% of that piece — the notch that
   separates the two wings.

   Size and placement come from the label the mark stands in front of, not from
   a fixed pixel count: width 0.65em is a height of 1.06em, one text line, and
   vertical-align -0.2em lands the centre of the diamond on the middle of the
   capitals — measured off the font's own ink, cap height 6px at a 9px label:
   (mark height - cap height) / 2 = 1.76px below the baseline. A 9px masthead
   therefore gets a 9.5px mark centred on its caps instead of a 15px spike
   standing above them. The asset circles below override the width with their
   own pixels. */
.eth-mark { position: relative; display: inline-block; width: 0.65em; vertical-align: -0.2em; aspect-ratio: 784.37 / 1277.39; flex: 0 0 auto; }
/* It is a <b> only so it inherits the label's ink. A badge rule aimed at the
   pills around it — border, padding, tint, its own font size — would box the
   logo or resize it, so the element itself stays a bare canvas. */
b.eth-mark { padding: 0; border: 0; color: inherit; font: inherit; }
.eth-mark::before, .eth-mark::after { content: ""; position: absolute; left: 0; right: 0; background: currentColor; }
.eth-mark::before { top: 0; height: 69.07%; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.eth-mark::after { top: 56.75%; height: 43.25%; clip-path: polygon(0 0, 50% 41.93%, 100% 0, 50% 100%); }
.workspace-head > div > span .eth-mark, .docs-hero > span .eth-mark { margin-right: .5em; }
.network-pill .eth-mark { width: 7px; }
/* Inside an asset circle the mark stands in for the pair image, so it takes the
   same dark ink as the two-letter fallback it replaces — never a third-party
   favicon of the one asset this product is actually built on. */
.pair-selected-logo .eth-mark, .asset-logo .eth-mark { width: 12px; color: #2a2d41; }
.profile-asset-row .pair-option-mark .eth-mark { width: 17px; }

/* ===== Token detail layout: header bar, toolbar, ticket ===== */

/* Page header: token identity and project links left, contract addresses right. */
.token-head { display: flex; align-items: center; justify-content: space-between; gap: 18px 26px; flex-wrap: wrap; }
.token-head-title { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.token-head-actions { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#trade-share { width: auto; min-width: 0; height: 34px; padding: 0 15px; border-radius: 999px; border: 1px solid var(--line); color: var(--muted); background: transparent; cursor: pointer; font: 800 9px var(--mono); letter-spacing: .06em; }
#trade-share:hover { border-color: var(--green); color: var(--green); }
#trade-share.copied { border-color: var(--green); color: var(--green); background: var(--green-soft); }
.trade-creator-link { min-height: 25px; display: inline-flex; align-items: center; padding: 0 8px; border: 1px solid var(--line); border-radius: 6px; color: var(--muted); text-decoration: none; font: 800 8px var(--mono); }
.trade-creator-link:hover { border-color: var(--green); color: var(--green); }
#close-market { width: auto; min-width: 0; height: 34px; flex: 0 0 auto; padding: 0 15px; border-radius: 999px; overflow: visible; text-indent: 0; white-space: nowrap; font: 800 9px var(--mono); letter-spacing: .06em; }
#close-market::after { content: none; }
.token-socials { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.token-socials a { min-height: 29px; display: inline-flex; align-items: center; padding: 0 12px; border: 1px solid var(--green); border-radius: 999px; color: var(--green); background: var(--green-soft); font: 800 9px var(--mono); text-decoration: none; }
.token-socials a:hover { color: #05121a; background: var(--green); }
.token-socials-empty { color: var(--muted); font: 9px var(--mono); }
.token-addresses { display: flex; gap: 10px; flex-wrap: wrap; }
.token-addresses > div { display: grid; gap: 5px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-2); }
.token-addresses span { color: var(--muted); font: 800 7.5px var(--mono); letter-spacing: .12em; }
.token-addresses code { color: var(--text); font: 800 12px var(--mono); letter-spacing: .02em; }
.token-addresses button { min-width: 54px; min-height: 25px; padding: 0 8px; border: 1px solid var(--line); border-radius: 6px; color: var(--muted); background: transparent; cursor: pointer; font: 800 8px var(--mono); }
.token-addresses button:hover { border-color: var(--green); color: var(--green); }
.token-addresses button.copied { border-color: var(--green); color: var(--green); background: var(--green-soft); }

/* Graduation bar: one slim row, the pace reads as a single figure. */
body.token-route .market-lifecycle {
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 10px 18px;
  padding: 14px 18px;
}
body.token-route .market-lifecycle .market-lifecycle-head { grid-column: 1/-1; grid-row: 1; flex-wrap: nowrap; }
body.token-route .market-lifecycle .market-lifecycle-state > div { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
body.token-route .market-lifecycle .market-lifecycle-state span,
body.token-route .market-lifecycle .market-lifecycle-state strong { display: inline; margin-top: 0; }
body.token-route .market-lifecycle .market-lifecycle-state span { order: 2; font-size: 8.5px; }
body.token-route .market-lifecycle .market-lifecycle-state span::before { content: "·"; margin-right: 8px; }
body.token-route .market-lifecycle .market-lifecycle-track { grid-column: 1; grid-row: 2; gap: 7px; }
body.token-route .market-lifecycle .market-lifecycle-track .lifecycle-meter { height: 8px; }
body.token-route .market-lifecycle .market-lifecycle-actions { grid-column: 2; grid-row: 2; }
body.token-route .market-lifecycle .market-lifecycle-pace { font-size: 16px; letter-spacing: -.01em; }
body.token-route .market-lifecycle-note {
  grid-column: 1/-1;
  grid-row: 3;
  max-width: none;
  display: -webkit-box;
  overflow: hidden;
  font-size: 11.5px;
  line-height: 1.5;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

/* Chart toolbar: type and timeframes on the left, metric / scale / studies right. */
.market-chart-card .market-chart-tools { gap: 7px; }
.market-chart-tools .chart-range { display: flex; flex-wrap: wrap; gap: 4px; }
.market-chart-card .chart-range button { min-width: 30px; min-height: 28px; padding: 0 7px; border-radius: 999px; font-size: 9px; letter-spacing: .04em; }
.market-chart-card .chart-type button { min-width: 32px; padding: 0; font-size: 13px; }
.market-chart-tools-right { display: flex; align-items: center; gap: 6px; margin-left: auto; flex-wrap: wrap; }
.chart-scale { display: flex; padding: 3px; border: 1px solid #344151; border-radius: 999px; background: #111722; }
.chart-scale button { min-height: 28px; padding: 0 10px; border: 0; border-radius: 999px; color: var(--chart-muted); background: transparent; cursor: pointer; font: 800 9px var(--mono); }
.chart-scale button:hover { color: var(--chart-text); }
.chart-scale button.active { color: #f4f7fb; background: #2a3442; }
.market-chart-card .chart-toggles { gap: 6px; }
.market-chart-card .chart-toggles button { min-height: 28px; padding: 0 10px; }
.chart-fit { width: 30px; height: 30px; border: 1px solid #344151; border-radius: 999px; color: var(--chart-muted); background: #111722; cursor: pointer; font-size: 14px; line-height: 1; }
.chart-fit:hover { color: var(--chart-text); border-color: #516176; }
:root[data-theme="light"] .chart-scale,
:root[data-theme="light"] .chart-fit { border-color: #c6d0dc; background: #f7f9fc; }
:root[data-theme="light"] .chart-scale button.active { color: #fff; background: #3b4757; }

/* Price readout under the toolbar: left aligned dollars plus the graduation goal. */
.market-chart-card > .market-chart-header > .market-chart-identity { flex: 0 0 auto; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; padding-top: 9px; border-top: 1px dashed var(--chart-grid); }
.market-chart-card > .market-chart-header > .market-chart-identity > strong { margin-top: 0; }
.market-chart-card > .market-chart-header .market-chart-quote { justify-items: start; text-align: left; }
.market-chart-card > .market-chart-header .market-chart-quote-row { justify-content: flex-start; }
.market-chart-quote-row b { font-size: clamp(1.8rem,3.4vw,2.5rem); letter-spacing: -.02em; }
.market-chart-quote small { letter-spacing: .14em; }
.market-chart-card .market-chart-ohlc { margin-top: 0; }
.market-chart-graduation { margin: 6px 0 0; color: var(--chart-muted); font: 700 11.5px var(--mono); letter-spacing: .04em; }
.market-chart-graduation b { color: var(--verified); font-weight: 800; }

/* Trade ticket: market cap hero, stat grid, change chips. */
.ticket-market-cap { display: grid; gap: 5px; margin-bottom: 12px; padding: 16px; border: 1px solid var(--line-strong); border-radius: 10px; background: linear-gradient(180deg, var(--green-soft), transparent 92%); }
.ticket-market-cap strong { color: var(--text); font: 900 clamp(26px,3.4vw,34px)/1 var(--mono); letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.ticket-market-cap span { color: var(--muted); font: 800 9px var(--mono); letter-spacing: .16em; }
body.token-route .market-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); margin-bottom: 10px; border-radius: 10px; }
body.token-route .market-metrics > div { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
body.token-route .market-metrics > div:nth-child(even) { border-right: 0; }
body.token-route .market-metrics > .market-metrics-wide { grid-column: 1/-1; border-right: 0; }
body.token-route .market-metrics > div:last-child { border-bottom: 0; }
body.token-route .market-metrics strong { font-size: clamp(15px,1.5vw,19px); }
.market-change-chips { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin-bottom: 16px; }
.market-change-chips > div { display: grid; gap: 4px; padding: 8px 6px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); text-align: center; }
.market-change-chips span { color: var(--muted); font: 800 8px var(--mono); letter-spacing: .12em; }
.market-change-chips b { color: var(--muted); font: 800 12px var(--mono); font-variant-numeric: tabular-nums; }
.market-change-chips b.positive { color: var(--verified); }
.market-change-chips b.negative { color: var(--red); }

/* Quick dollar shortcuts sit under the action button. */
.trade-quick-amounts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 7px; margin-top: 10px; }
.trade-quick-amounts button { min-height: 40px; border: 1px solid var(--line); border-radius: 7px; color: var(--text); background: var(--surface-2); cursor: pointer; font: 800 11px var(--mono); }
.trade-quick-amounts button:hover { border-color: var(--green); color: var(--green); background: var(--green-soft); }
.trade-ticket .market-flow[hidden] { display: none; }

/* Buy / sell split bars under the ticket. */
.market-flow { display: grid; gap: 9px; margin-top: 15px; padding-top: 15px; border-top: 1px solid var(--line); }
.market-flow > p { margin: 0; color: var(--muted); font: 10px/1.55 var(--mono); }
.flow-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.flow-head span { color: var(--muted); font: 800 8px var(--mono); letter-spacing: .14em; }
.flow-head b { color: var(--muted); font: 800 7.5px var(--mono); letter-spacing: .1em; }
.flow-row { display: grid; gap: 5px; }
.flow-labels { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font: 800 9px var(--mono); letter-spacing: .06em; }
.flow-labels b { font-size: 11.5px; font-variant-numeric: tabular-nums; letter-spacing: 0; }
.flow-buy { color: var(--verified); }
.flow-sell { color: var(--red); }
.flow-bar { display: flex; height: 7px; overflow: hidden; border-radius: 999px; background: var(--surface-2); }
.flow-bar i { display: block; flex: 0 0 auto; background: var(--verified); }
.flow-bar em { display: block; flex: 1 1 auto; background: var(--red); }

/* Project description + links sit directly under the chart. */
.project-metadata { align-items: center; }
.project-metadata-copy span { display: block; color: var(--muted); font: 800 8px var(--mono); letter-spacing: .14em; }
.project-links { display: flex; flex-wrap: wrap; gap: 7px; justify-content: flex-end; }
.project-links a { min-height: 33px; display: inline-flex; align-items: center; padding: 0 12px; border: 1px solid var(--green); border-radius: 999px; color: var(--green); background: var(--green-soft); font: 800 9px var(--mono); text-decoration: none; }
.project-links a:hover { color: #05121a; background: var(--green); }

@media (max-width: 920px) {
  .token-head { flex-direction: column; align-items: stretch; }
  .token-addresses > div { flex: 1 1 190px; }
  .project-metadata { grid-template-columns: 1fr; }
  .project-links { justify-content: flex-start; }
}
@media (max-width: 700px) {
  body.token-route .market-lifecycle { grid-template-columns: minmax(0,1fr); gap: 11px; padding: 14px; }
  body.token-route .market-lifecycle .market-lifecycle-head,
  body.token-route .market-lifecycle .market-lifecycle-track,
  body.token-route .market-lifecycle .market-lifecycle-actions,
  body.token-route .market-lifecycle-note { grid-column: 1; grid-row: auto; }
  .market-chart-card > .market-chart-header > .market-chart-identity { flex-direction: column; align-items: flex-start; gap: 6px; }
  .market-chart-quote-row b { font-size: 1.7rem; }
  .market-chart-tools-right { margin-left: 0; }
  .market-change-chips { gap: 6px; }
  .token-addresses { flex-direction: column; }
}

/* Chart pane at every screen size. The plot takes its height from the window
   instead of a fixed pixel count: a short laptop keeps the footer and the
   readouts on screen, a tall display hands the extra room straight to the
   candles, and the chart engine already resizes itself off the container. */
body.token-route .market-chart { height: clamp(380px, 58vh, 620px); min-height: 0; }

/* The toolbar is a strip of pill groups and it is the first thing a phone
   runs out of room for. Buttons tighten to a shared narrow width so the chart
   type and all ten timeframes keep their shape, and the control wrapper stops
   being a box of its own: its pill groups join the toolbar flow and fill two
   tidy rows, so no label is ever sliced off by the edge of the card. */
@media (max-width: 700px) {
  .market-chart-card .market-chart-tools { gap: 6px; }
  .market-chart-tools .chart-range { gap: 3px; }
  .market-chart-card .chart-range button { min-width: 22px; padding: 0 4px; font-size: 8px; }
  .market-chart-card .chart-type button { min-width: 26px; padding: 0; font-size: 12px; }
  .market-chart-tools-right { display: contents; }
  .market-chart-tools .chart-metric { order: 0; }
  .market-chart-card .chart-metric button { padding: 0 9px; min-height: 28px; }
  .market-chart-card .chart-scale button,
  .market-chart-card .chart-toggles button { padding: 0 8px; min-height: 26px; }
  .market-chart-card .chart-draw button,
  .market-chart-card .chart-fit { width: 28px; min-height: 26px; height: 28px; }
}
/* On a small phone the header pads in a little tighter so the two control
   rows and the timeframe row still sit above the plot, never over it. */
@media (max-width: 430px) {
  .market-chart-card .market-chart-header { gap: 9px; padding: 10px 11px; }
}
/* On a phone the two dropdown triggers still share one row and the badge drops
   to its own; the panels cap to the viewport so a menu never opens off-screen. */
@media (max-width: 760px) {
  .board-toolbar { gap: 8px 9px; padding: 9px 10px; }
  .filter-menu > summary { gap: 6px; padding: 0 9px; }
  .filter-pop { min-width: 210px; max-width: calc(100vw - 36px); }
}
@media (prefers-reduced-motion: reduce) {
  .filter-caret, .filter-menu[open] .filter-pop { transition: none; animation: none; }
}
/* A paid launch is a row you press, so the shared job row is normalized as a
   button: the padding and type stay, the browser's own button chrome does not. */
.job-row { width: 100%; appearance: none; font: inherit; text-align: left; cursor: pointer; }
.job-row:hover { border-color: var(--green); }
.launch-job-form-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.launch-job-form-actions button { min-height: 40px; padding: 0 18px; border-radius: 10px; border: 1px solid var(--line-strong); font: 800 10px var(--mono); letter-spacing: .06em; cursor: pointer; }
#launch-job-detail { margin-top: 14px; }
#launch-job-detail .community-panel { margin-top: 0; }
#launch-job-detail button { margin-top: 12px; margin-right: 8px; }
/* Both paid-order forms type into a dark panel, so they wear the app's own field
   look instead of the browser's. The label text lives in a span so uppercasing
   the label never reaches the name a creator typed. */
#public-job-form, #launch-job-form { margin-top: 14px; }
#public-job-form label, #launch-job-form label { display: grid; gap: 6px; margin-bottom: 12px; }
#public-job-form label > span, #launch-job-form label > span { color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
#public-job-form input, #launch-job-form input, #public-job-form select { width: 100%; height: 42px; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: 8px; color: var(--text); background: var(--surface-3); font: 12px var(--mono); }
#public-job-form textarea, #launch-job-form textarea { width: 100%; padding: 10px 12px; border: 1px solid var(--line-strong); border-radius: 8px; color: var(--text); background: var(--surface-3); font: 12px/1.5 var(--mono); resize: vertical; }
#public-job-form .community-desc, #launch-job-form .community-desc { margin: 0 0 10px; }
#public-job-form .launch-job-form-actions, #launch-job-form .launch-job-form-actions { margin-top: 10px; }
/* What the creator asked for and what the Agent says it built are two different
   facts about one job, so they never share a block. */
.job-answer { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-left: 2px solid var(--green); border-radius: 10px; background: var(--surface-3); }
.job-answer small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-answer p { margin: 8px 0 0; color: var(--text); font: 12px/1.6 var(--mono); white-space: pre-wrap; }
.job-row small.job-row-built { color: var(--green); }
.job-row small.job-row-change { color: var(--text); }
/* A version is the same work asked for again with one change named, so the
   change wears the muted mark and never reads as the original brief. */
.job-answer.job-change { border-left-color: var(--line); }
.job-version { color: var(--muted); font-weight: 800; }
/* Asking for changes is its own step: the change is described, the price of the
   next order is named, and the delivery on screen is left where it stands. */
.job-revise { margin: 12px 0 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); display: grid; gap: 8px; }
.job-revise small { color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-revise p { margin: 0; }
.job-revise textarea { width: 100%; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-1); color: var(--text); font: 12px/1.6 var(--mono); padding: 9px 10px; resize: vertical; }
.job-revise button { justify-self: start; }
/* The run behind a delivery reads as its own record: the task, the stamps, the
   elapsed time and the hash the work is bound to. It sits with the delivery, not
   with the brief, because it is evidence rather than an ask. */
.job-run { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
/* The run and the plan are the audit trail: worth opening, not worth reading
   before the delivery itself. */
.job-run > summary, .job-plan > summary { cursor: pointer; list-style: none; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-run > summary::-webkit-details-marker, .job-plan > summary::-webkit-details-marker { display: none; }
.job-run > summary::after, .job-plan > summary::after { content: " +"; color: var(--green); }
.job-run[open] > summary::after, .job-plan[open] > summary::after { content: " −"; }
.job-run .community-facts { margin: 8px 0 0; }
.job-run .community-facts small { color: var(--muted); }
/* The checks a delivery passed, named one by one. They are the worker's own
   validation, so the block reads as a record rather than a badge. */
.job-checks { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-checks > small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-check-list { margin: 8px 0 0; padding: 0; list-style: none; display: grid; gap: 5px; }
.job-check-list li { display: flex; gap: 10px; align-items: baseline; font: 12px/1.5 var(--mono); flex-wrap: wrap; }
.job-check-list li b { color: var(--text); font-weight: 700; }
.job-check-list li em { font-style: normal; font-size: 9px; letter-spacing: .08em; color: var(--muted); }
.job-check-list li span { color: var(--muted); }
.job-plan .job-check-list { margin: 6px 0 0; }
.job-plan .job-check-list li { font-size: 11px; }
.job-plan .job-check-list li b { font-weight: 600; }
/* The terms an order was funded against, and the independent verdict on the
   delivery. Both are records, not badges: the criteria are readable and their
   hash is shown; a verdict names its findings instead of only saying pass. */
.job-criteria, .job-verdict { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-criteria summary { cursor: pointer; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-criteria ul, .job-verdict-findings { margin: 8px 0 0; padding-left: 18px; display: grid; gap: 5px; font: 12px/1.55 var(--mono); color: var(--muted); }
.job-verdict > small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-verdict > p { margin: 6px 0; font: 12px/1.6 var(--mono); }
.job-verdict-pass { border-color: var(--green, #59f2a4); }
.job-verdict-pass > p strong { color: var(--green, #59f2a4); }
.job-verdict-fail { border-color: var(--red, #ff6b6b); }
.job-verdict-fail > p strong { color: var(--red, #ff6b6b); }
.job-artifact-meta { color: var(--muted); font: 10px var(--mono); }
/* A step that ran out of budget stops there: the order waits for the payer and
   the deposit can be refunded whole. */
.job-plan-failed em { color: var(--red, #ff6b6b); }
.job-plan-failed b { text-decoration: line-through; opacity: .8; }
/* The versions of one piece of work, oldest first. The one on screen is the one
   being read, so it is marked rather than coloured. */
.job-project { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-project > small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-project ul { margin: 8px 0 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.job-project li { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; font: 12px/1.5 var(--mono); }
.job-project li span { color: var(--muted); }
.job-project li.current a { text-decoration: underline; }
/* A panel's own record: what each member answered and how many agreed. */
/* The network's answers: what a panel agreed on, and who signed it. */
.oracle-board { margin: 16px 0; }
.oracle-board .overview-title { margin-bottom: 14px; }
.oracle-answer { padding: 18px; margin-bottom: 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); }
.oracle-answer h3 { margin: 0 0 10px; font-size: 15px; line-height: 1.5; }
.oracle-answer-value { margin: 0 0 12px; font: 16px/1.5 var(--mono); color: var(--green); word-break: break-word; }
.oracle-answer .community-facts { margin: 0 0 10px; }
.oracle-domain { margin-top: 12px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); }
.oracle-domain summary { cursor: pointer; font: 11px var(--mono); letter-spacing: .08em; color: var(--muted); }
.oracle-domain p { margin: 10px 0 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
/* An order waiting for the customer's own signature: the deployment is theirs
   to sign, and the chain has to agree before the next step runs. */
.job-waiting { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-waiting > small { display: block; color: var(--green); font: 800 9px var(--mono); letter-spacing: .08em; }
/* A quoted order holds a price for a day. The block states the deadline while it
   is fundable, and turns into the explanation once the quote has lapsed. */
.job-quote { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); display: grid; gap: 8px; justify-items: start; }
.job-quote > small { color: var(--green); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-quote p { margin: 0; }
.job-quote-expired { border-color: var(--line-strong); }
.job-quote-expired > small { color: var(--muted); }
.job-waiting-form { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0; }
.job-waiting-form input { flex: 1 1 220px; padding: 10px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--bg); color: var(--text); font: 12px var(--mono); }
.job-panel { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-panel > small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-panel-list { margin: 8px 0 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.job-panel-list li { display: flex; gap: 10px; align-items: baseline; font: 12px/1.5 var(--mono); }
.job-panel-list li b { color: var(--text); font-weight: 700; }
.job-panel-list li span { color: var(--muted); }
/* A team order names every Agent and the share the escrow will pay it. The list
   is the payer's own deposit list, so it is a record rather than an intention. */
.job-team { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-team > small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-team ul { margin: 8px 0 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.job-team li { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; font: 12px/1.5 var(--mono); }
.job-team li span { color: var(--muted); }
/* A repeating order: one brief on a schedule. The form's repeat fields sit
   together, and the series page reads as the schedule's own record — the run in
   hand, the next run, and every run it opened. */
.job-repeat { display: grid; grid-template-columns: 1fr 90px; gap: 10px; align-items: end; }
.job-repeat input:disabled { opacity: .45; }
.job-series-current, .job-series-history { margin-top: 14px; display: grid; gap: 8px; }
.job-series-current > small, .job-series-history > small { color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-series-current > button { justify-self: start; }
.job-series-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.job-series-line { margin-top: -4px; }
/* The plan an order runs, step by step, with the step that is running marked.
   It sits between the brief and the delivery so the order reads as work being
   done, not as one opaque "building" state. */
.job-plan { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-plan small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }.job-plan ol { margin: 10px 0 0; padding-left: 18px; display: grid; gap: 6px; }
.job-plan li { color: var(--text); font: 11px/1.6 var(--mono); }
.job-plan li b { color: var(--green); }
.job-plan li em { color: var(--muted); font-style: normal; font-size: 9px; letter-spacing: .06em; }
.job-plan-running em { color: var(--green); }
/* What a finished step actually produced, named under the step that produced it.
   Paths only: the bodies live behind the content address, not on this surface. */
.job-plan-files { margin: 4px 0 0; padding-left: 16px; display: grid; gap: 2px; }
.job-plan-files li { color: var(--muted); font: 10px/1.5 var(--mono); }
/* What a finished step said it did, in the worker's own words. Kept apart from
   the step line so a claim and the file list under it are never read as one. */
.job-step-note { margin: 6px 0 0; padding-left: 8px; border-left: 2px solid var(--line); color: var(--muted); font: 10px/1.6 var(--mono); }
/* How far an order has really got, in the same language as the plan beneath it. */
.job-progress { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-progress-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
.job-progress-head small { color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-progress-head strong { color: var(--text); font: 700 12px var(--sans); }
.job-progress-head em { color: var(--muted); font: 10px/1.5 var(--mono); font-style: normal; }
/* The page only wears this while it is really following a running order. */
.job-live { display: inline-flex; align-items: center; gap: 5px; color: var(--green); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-live::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--green); animation: job-live-pulse 1.6s ease-in-out infinite; }
@keyframes job-live-pulse { 0%, 100% { opacity: .25; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .job-live::before { animation: none; opacity: .8; } }
.job-progress-bar { display: flex; gap: 2px; margin-top: 9px; height: 4px; border-radius: 2px; overflow: hidden; }
.job-progress-bar i { flex: 1; background: var(--line); }
.job-progress-bar .job-step-done { background: var(--green); }
.job-progress-bar .job-step-running { background: var(--green); opacity: .55; }
.job-progress[data-step-state="running"] .job-progress-head em { color: var(--green); }
/* The kind filter for the orders board. The active chip is a state, not a link,
   so it reads with the same weight as the stats above it. */
.job-filter { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; }
.job-filter-chip { appearance: none; cursor: pointer; padding: 6px 10px; border: 1px solid var(--line-strong); border-radius: 999px; background: var(--surface); color: var(--muted); font: 800 10px var(--mono); letter-spacing: .04em; }
.job-filter-chip b { color: var(--text); }
.job-filter-chip:hover { border-color: var(--green); color: var(--text); }
.job-filter-chip.active { border-color: var(--green); color: var(--green); background: color-mix(in srgb, var(--green) 12%, transparent); }
.job-artifact { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); }
.job-artifact > small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-artifact ul { margin: 10px 0 0; padding-left: 18px; display: grid; gap: 4px; }
.job-artifact li { color: var(--text); font: 11px/1.5 var(--mono); }
.job-artifact code { display: inline-block; word-break: break-all; color: var(--muted); font: 10px var(--mono); }
.agent-paid-list { display: grid; gap: 8px; }
.agent-paid-skills { margin: 8px 0 0; color: var(--muted); font: 9px var(--mono); letter-spacing: .03em; }
.agent-paid-row { display: grid; gap: 4px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; color: inherit; text-decoration: none; }
.agent-paid-row strong { font-size: 12.5px; }
.agent-paid-row span { display: block; margin-top: 4px; color: var(--green); font: 9px var(--mono); letter-spacing: .04em; }
.agent-paid-row small { color: var(--muted); font: 10px/1.5 var(--mono); }
.agent-paid-row:hover, .agent-paid-row:focus-visible { border-color: var(--green); }
/* The pre-payment check. Free, and the reason the escrow button is shut until it
   has been read. */
.community-check { margin: 12px 0 4px; padding: 14px 16px; border: 1px solid var(--line-strong); border-radius: 12px; background: var(--surface-3); }
.community-check small { display: block; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.community-check strong { display: block; margin-top: 6px; font: 700 14px var(--mono); }
.community-check p { margin: 8px 0 0; color: var(--muted); font: 11px/1.7 var(--mono); }
.community-check ol { margin: 10px 0 0; padding-left: 18px; display: grid; gap: 5px; }
.community-check li { color: var(--text); font: 11px/1.6 var(--mono); }
.community-check li b { color: var(--green); }
.community-check-blocker { color: #e0654f !important; }
/* A community page has one owner, and the page says which wallet that is. */
.community-site-owner { margin: 12px 0 0; color: var(--muted); font: 10px/1.6 var(--mono); }
.community-site-owner a { color: var(--green); }
/* The advisory panel on a token page. It reads like the lifecycle card above it
   on purpose: a read of the launch, never a gate in front of it. */
.market-audit { margin-top: 14px; border: 1px solid var(--line); border-radius: 15px; background: var(--surface); padding: 16px 18px; box-shadow: 0 9px 24px rgba(0,0,0,.12); }
.market-audit-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.market-audit-head span { display: block; color: var(--muted); font: 800 8px var(--mono); letter-spacing: .1em; }
.market-audit-head strong { display: block; margin-top: 5px; font-size: 14px; }
.audit-verdict { padding: 6px 11px; border: 1px solid var(--line-strong); border-radius: 999px; font: 800 9px var(--mono); letter-spacing: .08em; }
.audit-verdict[data-verdict="pass"] { color: var(--green); border-color: var(--green); }
.audit-verdict[data-verdict="flag"] { color: var(--red); border-color: var(--red); }
.audit-verdict[data-verdict="review"] { color: var(--amber); border-color: var(--amber); }
.audit-findings { display: grid; gap: 8px; margin: 14px 0 0; padding: 0; list-style: none; }
.audit-findings li { display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 11px; }
.audit-findings b { color: var(--muted); font: 800 8px var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.audit-findings span { font: 700 12px var(--mono); }
.audit-findings small { grid-column: 2; color: var(--muted); font: 10px/1.5 var(--mono); }

/* --- Network pulse ---------------------------------------------------------
   A live read of the network on the home page: counters for markets, Agents
   and paid orders, then the most recent orders as they move. */
.network-pulse { display: grid; gap: 14px; padding: 22px; margin: 22px 0; border: 1px solid var(--line); border-radius: 18px; background: var(--surface); }
.pulse-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.pulse-head span { font: 700 10px/1 var(--mono); letter-spacing: .18em; color: var(--muted); }
.pulse-head h2 { margin: 6px 0 4px; font-size: 20px; }
.pulse-head p { margin: 0; color: var(--muted); font-size: 13px; max-width: 62ch; }
.pulse-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)); gap: 10px; margin: 0; }
.pulse-stats > div { padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-2); }
.pulse-stats dt { font: 700 10px/1 var(--mono); letter-spacing: .14em; color: var(--muted); }
.pulse-stats dd { margin: 6px 0 0; font: 700 22px/1 var(--mono); color: var(--text); }
.pulse-feed { display: grid; gap: 8px; }
.pulse-empty { margin: 0; color: var(--muted); font-size: 13px; }
.pulse-row { display: grid; grid-template-columns: 34px 72px minmax(120px, 1.6fr) minmax(84px, .8fr) minmax(84px, 1fr) auto auto; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-2); color: var(--text); text-decoration: none; }
.pulse-row:hover { border-color: var(--line-strong); background: var(--surface-3); }
.pulse-row .agent-mark { width: 30px; height: 30px; border-radius: 9px; object-fit: cover; background: var(--surface-3); }
.pulse-unassigned { display: grid; place-items: center; color: var(--muted); font: 700 14px var(--mono); }
.pulse-kind { font: 700 10px/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.pulse-row strong { font-size: 13px; }
.pulse-agent, .pulse-roles { color: var(--muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pulse-state { font: 700 10px/1 var(--mono); letter-spacing: .1em; padding: 5px 8px; border: 1px solid var(--line-strong); border-radius: 999px; color: var(--muted); white-space: nowrap; }
.pulse-state[data-state="released"] { color: var(--green); border-color: var(--green); }
.pulse-state[data-state="refunded"], .pulse-state[data-state="failed"] { color: var(--red); border-color: var(--red); }
.pulse-state[data-state="delivered"] { color: var(--amber); border-color: var(--amber); }
.pulse-progress { font: 700 11px/1 var(--mono); color: var(--muted); text-align: right; white-space: nowrap; }
@media (max-width: 760px) {
  .pulse-row { grid-template-columns: 34px 1fr 1fr; }
  .pulse-row strong { grid-column: 2 / -1; }
  .pulse-progress { text-align: left; }
}

/* --- Agent launch readiness -------------------------------------------------
   Inside the Agent Chat package: whether this holder's Agent may launch, the
   limits the holder signed, and the wallet that has to be funded. */
.agent-launch-readiness { display: grid; gap: 10px; margin: 0 0 12px; }
.agent-launch-readiness > p { margin: 0; color: var(--muted); font-size: 12px; }
.readiness-card { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface-2); }
.readiness-card[data-state="active"] { border-color: var(--green); }
.readiness-card[data-state="short"] { border-color: var(--amber); }
.readiness-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.readiness-head strong { font-size: 14px; }
.readiness-state { font: 700 10px/1 var(--mono); letter-spacing: .1em; padding: 5px 8px; border: 1px solid var(--line-strong); border-radius: 999px; color: var(--muted); }
.readiness-state[data-state="active"] { color: var(--green); border-color: var(--green); }
.readiness-state[data-state="short"] { color: var(--amber); border-color: var(--amber); }
.readiness-limits { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 8px; margin: 0; }
.readiness-limits dt { font: 700 9px/1 var(--mono); letter-spacing: .12em; color: var(--muted); }
.readiness-limits dd { margin: 5px 0 0; font: 700 13px/1 var(--mono); color: var(--text); }
.readiness-note { margin: 0; color: var(--muted); font-size: 12px; }
.readiness-note code { display: block; margin-top: 5px; padding: 6px 8px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-3); color: var(--text); font: 11px/1.5 var(--mono); word-break: break-all; }
.readiness-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.readiness-actions a { color: var(--green); font: 700 11px/1 var(--mono); text-decoration: none; }
.readiness-actions a:hover { text-decoration: underline; }

/* --- Agent directory filter ------------------------------------------------- */
.operator-controls { margin: 0 0 14px; }
.operator-filters { display: inline-flex; gap: 6px; flex-wrap: wrap; padding: 5px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface-2); }
.operator-filter-chip { appearance: none; border: 0; background: none; color: var(--muted); font: 700 11px/1 var(--mono); letter-spacing: .06em; padding: 7px 12px; border-radius: 999px; cursor: pointer; }
.operator-filter-chip b { margin-left: 6px; color: var(--text); }
.operator-filter-chip.active { background: var(--accent-fill); color: var(--buy-ink); }
.operator-filter-chip.active b { color: var(--buy-ink); }
.operator-filter-empty { margin: 0 0 14px; color: var(--muted); font-size: 13px; }

/* --- Launch result ---------------------------------------------------------
   The record a finished launch ends in: the token, its curve, the Agent the
   factory assigned and both transactions, kept in place instead of vanishing. */
.launch-result { display: grid; gap: 12px; margin: 16px 0 0; padding: 18px; border: 1px solid var(--green); border-radius: 16px; background: var(--surface-2); }
.launch-result-kicker { font: 700 10px/1 var(--mono); letter-spacing: .18em; color: var(--green); }
.launch-result > strong { font-size: 18px; }
.launch-result > p { margin: 0; color: var(--muted); font-size: 13px; }
.launch-result-facts { display: grid; gap: 8px; margin: 0; }
.launch-result-facts > div { display: grid; grid-template-columns: 118px 1fr; gap: 10px; align-items: baseline; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.launch-result-facts dt { font: 700 9px/1.4 var(--mono); letter-spacing: .12em; color: var(--muted); }
.launch-result-facts dd { margin: 0; font: 700 12px/1.5 var(--mono); color: var(--text); word-break: break-all; }
.launch-result-facts a { color: var(--green); text-decoration: none; }
.launch-result-facts a:hover { text-decoration: underline; }
.launch-result-actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.launch-result-explorer { color: var(--text); font: 700 12px/1 var(--mono); text-decoration: none; }
.launch-result-explorer:hover { text-decoration: underline; }

/* The jobs board: hire on the left, live work on the right --------------------
   The order form stays beside the feed so a wallet sees what agents are already
   doing while it decides what to ask for. Below 900px the panes stack. */
.jobs-board { display: grid; grid-template-columns: minmax(300px, 360px) minmax(0, 1fr); gap: 18px; align-items: start; margin: 16px 0 26px; }
.jobs-hire { position: sticky; top: 16px; border: 1px solid var(--line-strong); border-radius: 15px; background: var(--surface); padding: 18px; box-shadow: 0 9px 24px rgba(0,0,0,.12); }
.jobs-hire-head span { display: block; color: var(--green); font: 800 9px var(--mono); letter-spacing: .1em; }
.jobs-hire-head h2 { margin: 6px 0 0; font-size: 20px; }
.jobs-hire .community-panel { border: 0; border-radius: 0; background: none; box-shadow: none; margin-top: 0; padding: 0; }
.jobs-hire label { display: block; margin: 14px 0 0; }
.jobs-hire label > span { display: block; margin-bottom: 6px; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.jobs-hire label > span em { font-style: normal; color: var(--line-strong); }
.jobs-hire select, .jobs-hire textarea { width: 100%; font: 12px/1.5 var(--mono); }
.jobs-hire #public-job-price { margin: 12px 0 0; padding-top: 12px; border-top: 1px dashed var(--line); }
.jobs-feed { min-width: 0; }
.jobs-feed-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 0 0 10px; font: 800 9px var(--mono); letter-spacing: .1em; }
.jobs-feed-head span { color: var(--green); }
.jobs-feed-head b { color: var(--muted); }
@media (max-width: 900px) { .jobs-board { grid-template-columns: 1fr; } .jobs-hire { position: static; } }

/* A provider-authored offering turns the order form into a typed intake: the
   terms are shown before funding, and the buyer fills the fields the provider
   promised to read. */
.job-offering { margin: 14px 0 0; padding: 12px 14px; border: 1px solid var(--line-strong); border-radius: 10px; background: var(--surface-3); display: grid; gap: 8px; }
.job-offering > small { color: var(--green); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-offering h3 { margin: 0; font-size: 15px; }
.job-offering p { margin: 0; color: var(--muted); font: 12px/1.5 var(--mono); }
.job-offering .job-offering-terms { color: var(--text); }
.job-offering label { margin: 6px 0 0; }
.job-offering input, .job-offering textarea, .job-offering select { width: 100%; font: 12px/1.5 var(--mono); }
.job-offering .job-offering-check { display: flex; align-items: center; gap: 8px; }
.job-offering .job-offering-check input { width: auto; }
.jobs-offerings { margin: 16px 0 0; padding: 12px 14px; border: 1px dashed var(--line-strong); border-radius: 10px; }
.jobs-offerings > small { display: block; margin-bottom: 8px; color: var(--green); font: 800 9px var(--mono); letter-spacing: .08em; }
.jobs-offerings button { display: grid; gap: 2px; width: 100%; text-align: left; margin: 0 0 6px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-3); color: inherit; cursor: pointer; font: inherit; }
.jobs-offerings button:hover { border-color: var(--line-strong); }
.jobs-offerings button b { font-size: 13px; }
.jobs-offerings button span { color: var(--muted); font: 10px/1.4 var(--mono); }

/* The delivered bodies on an order's own page. Text is rendered as text, never
   as markup: a deliverable is untrusted input. */
#job-artifacts { margin: 12px 0; }
#job-artifacts > small { display: block; margin-bottom: 8px; color: var(--muted); font: 800 9px var(--mono); letter-spacing: .08em; }
.job-file { margin: 0 0 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-3); overflow: hidden; }
.job-file-path { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin: 0; padding: 8px 12px; border-bottom: 1px solid var(--line); }
.job-file-path code { color: var(--text); font: 11px var(--mono); }
.job-file-path em { color: var(--muted); font: 8px var(--mono); letter-spacing: .06em; }
.job-file-body { margin: 0; padding: 12px; max-height: 380px; overflow: auto; color: var(--text); font: 11px/1.6 var(--mono); white-space: pre-wrap; word-break: break-word; }
.job-file-image { display: block; max-width: 100%; max-height: 360px; margin: 12px auto; background: var(--surface-2); }

/* The launch door reads as one screen: pick who signs, then the token's three
   fields. Everything permanent but optional stays behind "Optional terms", and
   the path chips stay visible without dominating the first view. */
body.launch-route .launch-studio > header h2 { font-size: 22px; margin: 8px 0; }
body.launch-route .studio-paths { margin: 16px 0; }
body.launch-route .studio-paths button { gap: 6px; padding: 16px; }
body.launch-route .studio-paths strong { font-size: 17px; }
body.launch-route .studio-paths span { font-size: 13px; line-height: 1.5; }
.launch-advanced { margin: 4px 0 16px; padding: 12px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.launch-advanced > summary { cursor: pointer; color: var(--green); font: 800 10px var(--mono); letter-spacing: .06em; text-transform: uppercase; }
.launch-advanced[open] > summary { margin-bottom: 14px; }
.launch-advanced > label, .launch-advanced > .field-row label { display: block; margin-bottom: 14px; }
.launch-advanced > label:last-child { margin-bottom: 0; }
.launch-advanced > fieldset:last-child { margin-bottom: 0; }

/* Every kind of work an Agent can be paid for, as one row of choices, so the
   breadth of the catalogue is visible where the work is ordered. */
.job-kind-picker { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; }
/* The chip names the work: the price is one line under the form, so the choice
   reads as a list of kinds instead of a price table. */
.job-kind-chip { padding: 6px 10px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface-3); color: var(--text); font: 700 11px var(--sans); text-align: left; cursor: pointer; }
.job-kind-chip.active { border-color: var(--green); background: var(--green-soft); box-shadow: inset 0 0 0 1px var(--green); }
.job-kind-chip:disabled { opacity: .45; cursor: not-allowed; }
/* The native select stays the form's control, behind the chips. */
.job-kind-native { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip-path: inset(50%); }

/* ---------------------------------------------------------------------------
   Explorer: orders, published work and Agent standing in one place. The panels
   reuse the workspace's ink and rules; the wall is a grid of Agents, lit only by
   work that actually moved.
   --------------------------------------------------------------------------- */
.explorer-search { display: flex; gap: 8px; align-items: center; }
.explorer-search input { min-width: min(360px, 52vw); padding: 10px 12px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--text); font: 12px var(--mono); }
.explorer-search input:focus { outline: none; border-color: var(--green); }
.explorer-search button { padding: 10px 14px; border: 1px solid var(--line-strong); background: var(--surface-2); color: var(--green); font: 700 9px var(--mono); letter-spacing: .1em; text-transform: uppercase; cursor: pointer; }
.explorer-search button:hover { border-color: var(--green); }
.explorer-tabs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.explorer-tab { padding: 9px 12px; border: 1px solid transparent; background: transparent; color: var(--muted); font: 700 9px var(--mono); letter-spacing: .1em; text-transform: uppercase; cursor: pointer; }
.explorer-tab:hover { color: var(--text); }
.explorer-tab.active { color: var(--green); border-color: var(--line-strong); background: var(--surface); }
#explorer-refresh { margin-left: auto; }
.explorer-body { display: grid; gap: 14px; }
.explorer-stats { margin: 0; }
.explorer-note { margin: 0; color: var(--muted); font: 11px/1.7 var(--mono); }
.explorer-columns { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 12px; align-items: start; }
.explorer-panel { min-width: 0; display: grid; gap: 10px; padding: 14px; border: 1px solid var(--line); background: var(--surface); }
.explorer-panel > header { display: flex; justify-content: space-between; align-items: center; gap: 10px; color: var(--green); font: 700 8px var(--mono); letter-spacing: .12em; }
.explorer-panel > header a, .explorer-panel > header button { padding: 0; border: 0; background: none; color: var(--muted); font: 700 8px var(--mono); text-decoration: none; cursor: pointer; }
.explorer-panel > header a:hover, .explorer-panel > header button:hover { color: var(--green); }
.explorer-rows, .explorer-agent-list { display: grid; }
.explorer-row { display: grid; gap: 5px; padding: 11px 0; border-bottom: 1px dashed var(--line); color: var(--text); text-decoration: none; }
.explorer-row:last-child { border-bottom: 0; }
.explorer-row:hover strong { color: var(--green); }
.explorer-row strong { font-size: 13px; line-height: 1.45; }
.explorer-row small { color: var(--muted); font: 9px/1.6 var(--mono); }
.explorer-state { justify-self: start; padding: 3px 6px; border: 1px solid var(--line-strong); color: var(--muted); font: 700 8px var(--mono); letter-spacing: .08em; }
.explorer-state[data-state="released"], .explorer-state[data-state="delivered"] { color: var(--green); border-color: var(--green); }
.explorer-state[data-state="building"], .explorer-state[data-state="paid"] { color: var(--amber); border-color: var(--amber); }
.explorer-state[data-state="failed"], .explorer-state[data-state="refunded"] { color: var(--red); border-color: var(--red); }
.explorer-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.explorer-cards-compact { grid-template-columns: 1fr; }
.explorer-card { display: grid; gap: 9px; padding: 13px; border: 1px solid var(--line); background: var(--surface); color: var(--text); text-decoration: none; }
.explorer-card:hover { border-color: var(--line-strong); }
.explorer-card-type { justify-self: start; color: var(--green); font: 700 8px var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.explorer-card h3 { margin: 0; font-size: 14px; line-height: 1.4; }
.explorer-card p { display: -webkit-box; margin: 0; overflow: hidden; color: var(--muted); font: 10.5px/1.6 var(--mono); -webkit-line-clamp: 3; -webkit-box-orient: vertical; }
.explorer-card dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 10px; margin: 0; }
.explorer-card dl > div { min-width: 0; }
.explorer-card dt { color: var(--muted); font: 7.5px var(--mono); letter-spacing: .1em; text-transform: uppercase; }
.explorer-card dd { margin: 3px 0 0; font: 9.5px/1.4 var(--mono); overflow-wrap: anywhere; }
.explorer-card > small { color: var(--muted); font: 8px var(--mono); }
.explorer-filter { display: flex; flex-wrap: wrap; gap: 6px; }
.explorer-chip { padding: 7px 10px; border: 1px solid var(--line); background: transparent; color: var(--muted); font: 700 8px var(--mono); letter-spacing: .06em; cursor: pointer; }
.explorer-chip:hover { border-color: var(--line-strong); color: var(--text); }
.explorer-chip.active { color: var(--green); border-color: var(--green); }
.explorer-agent-row { display: grid; grid-template-columns: 62px 78px minmax(0, 1fr) minmax(0, 1fr) 46px; gap: 10px; align-items: center; padding: 10px 0; border-bottom: 1px dashed var(--line); color: var(--text); text-decoration: none; font: 10px var(--mono); }
.explorer-agent-row:last-child { border-bottom: 0; }
.explorer-agent-row:hover .explorer-agent-id { color: var(--green); }
.explorer-agent-id { font-weight: 700; }
.explorer-agent-state { justify-self: start; padding: 3px 6px; border: 1px solid var(--line); color: var(--muted); font: 700 7.5px var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.explorer-agent-state[data-state="working"] { color: var(--amber); border-color: var(--amber); }
.explorer-agent-state[data-state="available"] { color: var(--green); border-color: var(--green); }
.explorer-agent-state[data-state="work-only"] { color: var(--brand); border-color: var(--brand); }
.explorer-agent-counts, .explorer-agent-last { overflow: hidden; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; }
.explorer-agent-rate { color: var(--green); text-align: right; }
.explorer-wall-legend { display: flex; flex-wrap: wrap; gap: 14px; color: var(--muted); font: 9px var(--mono); }
.explorer-wall-legend span::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 6px; border: 1px solid var(--line-strong); background: var(--surface-3); vertical-align: middle; }
.explorer-wall-legend span[data-lit="working"]::before { border-color: var(--green); background: var(--green); box-shadow: 0 0 8px var(--green); }
.explorer-wall-legend span[data-lit="recent"]::before { border-color: var(--green); background: var(--green-soft); }
.explorer-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 7px; }
.explorer-wall-tile { display: grid; gap: 4px; padding: 10px; border: 1px solid var(--line); background: var(--surface); color: var(--muted); text-decoration: none; font: 10px var(--mono); }
.explorer-wall-tile b { color: var(--text); font-size: 12px; }
.explorer-wall-tile small { color: var(--muted); font-size: 8px; }
.explorer-wall-tile[data-lit="recent"] { border-color: var(--green); background: var(--green-soft); }
.explorer-wall-tile[data-lit="recent"] b { color: var(--green); }
.explorer-wall-tile[data-lit="working"] { border-color: var(--green); background: var(--green-soft); box-shadow: 0 0 12px rgba(182, 238, 88, .22); }
.explorer-wall-tile[data-lit="working"] b { color: var(--green); }
.explorer-search-summary { display: flex; flex-wrap: wrap; gap: 10px; align-items: baseline; padding: 10px 12px; border: 1px solid var(--line); background: var(--surface); color: var(--muted); font: 10px var(--mono); }
.explorer-search-summary strong { color: var(--text); }
.explorer-search-summary button { margin-left: auto; }
@media (max-width: 900px) {
  #view-explorer .workspace-head { flex-wrap: wrap; align-items: flex-start; }
  .explorer-columns { grid-template-columns: 1fr; }
  .explorer-agent-row { grid-template-columns: 54px 70px minmax(0, 1fr) 44px; }
  .explorer-agent-last { display: none; }
  .explorer-search input { flex: 1; min-width: 0; }
}
@media (max-width: 620px) {
  .explorer-search { width: 100%; }
  .explorer-agent-row { grid-template-columns: 48px 64px minmax(0, 1fr); }
  .explorer-agent-rate { display: none; }
}
