/* kontract.fun — one stylesheet for every page.
 * Palette: cool near-black with a faint teal cast, hairline borders, one lime accent used sparingly,
 * violet for Solana-flavoured highlights. Icons are SVG masks, so they take the text colour. */
:root{
  /* BUMP (UX/concepts/10-bump.html): warm-dark ground, one warm accent that belongs to no chain, periwinkle second.
     The old token names are kept and re-pointed, so every page restyles without renaming a class. */
  --bg:#0f0e14; --bg2:#131219; --s1:#1a1922; --s2:#23212e; --s3:#2f2c3d; --sunk:#0b0a0f;
  --panel:#1e1c27; --panel2:#272433; --field:#0f0e14;
  --line:#2c2937; --line2:#3b3749; --line3:#4a4560;
  --ink:#f2f0f7; --ink2:#b6b1c6; --dim:#8681a0; --faint:#635e79;
  /* PAPER (UX/accent). No house hue at all. Every coloured hue on this product already means
     something -- five chains, up, down, three medals, three status levels -- so the house colour is
     the one thing that does NOT need a hue: it is the brightest thing on a dark page, and it clashes
     with nothing by construction. Emphasis is carried by FILL and CONTRAST, never by colour: a paper
     fill with dark ink for anything primary, a white lift for anything "on", full-strength ink
     against dimmer ink for anything highlighted. The --amber names are kept and re-pointed. */
  --accent:#f4f3f8; --accent-hi:#ffffff; --accent-lo:#d9d7e4; --accent-ink:#0b0a10;
  --accent-soft:rgba(244,243,248,.09); --accent-line:rgba(244,243,248,.3); --accent-glow:rgba(244,243,248,.24);
  --amber:var(--accent); --amber2:var(--accent-hi); --amber-soft:var(--accent-soft);
  /* Ranks are medals, everywhere anything is placed 1-2-3. */
  --gold:#f6c95c; --silver:#b8c3d6; --bronze:#d0864e;
  /* the second colour moves out of the way: periwinkle is the house now, so "peri"/"violet"
     (verified check, thesis pills, GPU chips) become a true violet. */
  --peri:#a78bfa; --peri-soft:rgba(167,139,250,.14);
  --violet:#a78bfa; --violet-soft:rgba(167,139,250,.14); --violet-line:rgba(167,139,250,.45);
  --up:#32d583; --down:#f97066; --warn:#e8c46b;
  --sol:#9945ff; --rh:#c2f24a; --bnb:#f0b90b; --base:#4d8dff; --arc:#38bdf8;
  /* --cc is "this chain's colour" (already used by the grind visual). Anything that carries a
     chain sets it, and the vanity characters in an address take it. */
  --cc:var(--accent);
  /* the chosen characters: warm paper, no hue spent */
  --run:#fff0d6;
  --radius:15px; --r:15px;
  --disp:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --sans:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px;color-scheme:dark}
body{margin:0;color:var(--ink);font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;background:var(--bg);
  font-variant-numeric:tabular-nums}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;font-family:var(--disp);font-weight:700;letter-spacing:-.025em}
code,.mono{font-family:var(--mono)}
.accent{color:var(--accent)}
.hidden{display:none!important}
.grow{flex:1;min-width:0}
.small{font-size:12.5px}
::selection{background:rgba(244,243,248,.88);color:#0b0a10}
:focus-visible{outline:2px solid var(--amber);outline-offset:2px}

/* Every chain's own colour, set wherever a chain is known (cards carry data-chain). */
[data-chain=sol]{--cc:#14f195}
[data-chain=rh]{--cc:#c2f24a}
[data-chain=bnb]{--cc:#f0b90b}
[data-chain=base]{--cc:#4d8dff}
[data-chain=arc]{--cc:#38bdf8}

/* ---------- icons ---------- */
.ic{display:inline-block;width:16px;height:16px;flex:none;vertical-align:-3px;background:currentColor;
  -webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat}
.ic-sol,.ic-rh,.ic-bnb,.ic-base,.ic-arc{background:var(--i) center/contain no-repeat;-webkit-mask:none;mask:none}
/* Base: the Base mark (Simple Icons, CC0) */
.ic-base{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%230052FF' d='M12.009 24c6.63 0 12.001-5.373 12.001-12S18.639 0 12.009 0C5.719 0 .552 4.844 0 11.01h15.891v1.98H0C.552 19.156 5.719 24 12.009 24z'/%3E%3C/svg%3E")}
/* Arc: an arc over a dark disc (Kontract's own mark for the chain, not Circle's logo) */
.ic-arc{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='12' fill='%23101828'/%3E%3Cpath d='M5.5 16.5a6.5 6.5 0 0 1 13 0' fill='none' stroke='%2338BDF8' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E")}
/* BNB Chain: the Binance mark (Simple Icons, CC0) */
.ic-bnb{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23F0B90B' d='M16.624 13.92l2.718 2.716-7.354 7.353-7.353-7.352 2.718-2.717 4.635 4.66 4.636-4.66zm4.637-4.637L24 12l-2.715 2.716L18.568 12l2.693-2.717zm-9.272.001l2.716 2.692-2.717 2.717L9.272 12l2.717-2.715zm-9.273-.001L5.41 12l-2.692 2.692L0 12l2.716-2.717zM11.989.012l7.353 7.33-2.718 2.715-4.635-4.636-4.636 4.66-2.717-2.716L11.989.012z'/%3E%3C/svg%3E")}
.ic-sol{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 20'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='1' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%239945FF'/%3E%3Cstop offset='1' stop-color='%2314F195'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='url(%23g)' d='M4.5 0H24l-4.5 4.4H0zM0 7.8h19.5L24 12.2H4.5zM4.5 15.6H24L19.5 20H0z'/%3E%3C/svg%3E")}
.ic-rh{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23c5f23d' d='M21 3c-6.3.3-11 3.9-13.3 9.7L5.9 17.3l-2.2 2.2a1 1 0 0 0 1.4 1.4l2.2-2.2 4.6-1.8C17.7 14.6 21.2 10.2 21 3z'/%3E%3Cpath d='M8.6 15.4l6.2-6.2' stroke='%23070b0d' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E")}
.ic-hex{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7'%3E%3Cpath d='M12 2.6l8.1 4.7v9.4L12 21.4l-8.1-4.7V7.3z'/%3E%3Cpath d='M9.6 9.2v5.6M14.4 9.2L11 12l3.4 2.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.ic-rocket{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 15.5c-1.5 1.3-2 4.5-2 4.5s3.2-.5 4.5-2c.7-.8.7-2-.1-2.8a2 2 0 0 0-2.4-.3z'/%3E%3Cpath d='M12 15l-3-3a21 21 0 0 1 2-3.9A12.7 12.7 0 0 1 21 3c0 2.7-.8 7.4-5.9 10.9A22 22 0 0 1 12 15z'/%3E%3Cpath d='M9 12H4.5s.5-2.8 1.9-3.8C8 7.1 11 8.1 11 8.1M12 15v4.5s2.8-.5 3.8-1.9c1.1-1.6.1-4.6.1-4.6'/%3E%3C/svg%3E")}
.ic-trend{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 17l6-6 4 4 8-8'/%3E%3Cpath d='M15 7h6v6'/%3E%3C/svg%3E")}
.ic-clock{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cpath d='M12 7.5V12l3 2'/%3E%3C/svg%3E")}
.ic-bars{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M5 20v-6M10 20V9M15 20V4M20 20v-9'/%3E%3C/svg%3E")}
.ic-coin{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cpath d='M14.6 9.3c-.5-.9-1.5-1.3-2.6-1.3-1.5 0-2.6.8-2.6 2s1.1 1.6 2.6 2 2.6.9 2.6 2.1-1.1 2-2.6 2c-1.2 0-2.2-.5-2.7-1.4M12 6.5V8m0 8v1.5'/%3E%3C/svg%3E")}
.ic-upload{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V4M7.5 8.5L12 4l4.5 4.5M4 15v3.5A1.5 1.5 0 0 0 5.5 20h13a1.5 1.5 0 0 0 1.5-1.5V15'/%3E%3C/svg%3E")}
.ic-spark{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8'/%3E%3C/svg%3E")}
.ic-search{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M15.8 15.8L20 20'/%3E%3C/svg%3E")}
.ic-share{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V3.5M7.5 8L12 3.5 16.5 8'/%3E%3Cpath d='M8 11H6.5A1.5 1.5 0 0 0 5 12.5v6A1.5 1.5 0 0 0 6.5 20h11a1.5 1.5 0 0 0 1.5-1.5v-6a1.5 1.5 0 0 0-1.5-1.5H16'/%3E%3C/svg%3E")}
.ic-copy{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Crect x='8' y='8' width='12' height='12' rx='2.5'/%3E%3Cpath d='M16 8V5.5A1.5 1.5 0 0 0 14.5 4h-9A1.5 1.5 0 0 0 4 5.5v9A1.5 1.5 0 0 0 5.5 16H8'/%3E%3C/svg%3E")}
.ic-check{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='black'/%3E%3Cpath d='M7.5 12.2l3 3 6-6.4' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  -webkit-mask-mode:luminance;mask-mode:luminance}

/* ---------- shell: a left rail of live buys, the page in the middle ----------
   Every page shares it. The rail's buy feed is the CAUSE of cards moving on the board, so it is on every page
   rather than only the board's (fomo.family runs its token list the same way). */
.app{display:grid;grid-template-columns:262px minmax(0,1fr);min-height:100vh}
.siderail{border-right:1px solid var(--line);background:var(--bg);position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;overflow:hidden;z-index:31}
.main{min-width:0;display:flex;flex-direction:column}
.brand{display:flex;align-items:center;gap:10px;height:62px;flex:none;padding:0 18px;border-bottom:1px solid var(--line);box-sizing:border-box}
.brand .wm{font:800 18px/1 var(--disp);letter-spacing:-.045em}
.brand .wm i{font-style:normal;color:var(--faint)}
/* the mark: a caret that has landed on its characters */
.logo{width:26px;height:26px;flex:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 26'%3E%3Crect x='1' y='1' width='24' height='24' rx='7' fill='%23f4f3f8'/%3E%3Crect x='6' y='11.5' width='4' height='3' rx='1.2' fill='%230b0a10'/%3E%3Crect x='12' y='11.5' width='4' height='3' rx='1.2' fill='%230b0a10'/%3E%3Crect x='18' y='6.5' width='4' height='13' rx='1.4' fill='%230b0a10'/%3E%3C/svg%3E") center/contain no-repeat}
.railnav{display:flex;flex-direction:column;gap:2px;padding:10px}
.railnav a{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:10px;font-size:14.5px;font-weight:500;color:var(--ink2)}
.railnav a:hover{background:var(--s1);color:var(--ink)}
.railnav a.on{background:var(--s2);color:var(--ink);font-weight:600}
.railnav a .nic{width:17px;height:17px;flex:none;opacity:.75}
.railnav a.on .nic{opacity:1;color:var(--amber)}
.railhd{display:flex;align-items:center;gap:8px;padding:12px 18px 8px;border-top:1px solid var(--line)}
.railhd .lab:first-of-type{color:var(--ink2)}
.lab{font:500 10.5px/1.4 var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--dim)}
.pulse{width:7px;height:7px;border-radius:50%;background:var(--faint);flex:none}
.pulse.on{background:var(--up);animation:pl 2.4s ease-out infinite}
@keyframes pl{0%{box-shadow:0 0 0 0 rgba(50,213,131,.55)}70%{box-shadow:0 0 0 7px rgba(50,213,131,0)}100%{box-shadow:0 0 0 0 rgba(50,213,131,0)}}
.railfeed{flex:1;overflow:auto;padding:0 10px 10px;display:flex;flex-direction:column;gap:2px}
.railempty{margin:8px 9px;color:var(--faint);font-size:12.5px}
.fr{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:9px;align-items:center;padding:7px 9px;border-radius:9px;font-size:13px}
.fr:hover{background:var(--s1)}
.fr.new{animation:slidein .42s cubic-bezier(.2,.9,.3,1)}
@keyframes slidein{from{opacity:0;transform:translateY(-8px);background:var(--amber-soft)}to{opacity:1;transform:none}}
.fr .av{width:36px;height:36px;border-radius:50%;font-size:13px}
.fr .t{min-width:0}
.fr .t b{display:block;font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fr .t > span{display:block;font:400 11px var(--mono);color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fr .t .hit{color:var(--ink2);font-weight:600}
.fr .v{text-align:right;font-weight:600;font-size:13px;white-space:nowrap}
.fr .v small{display:block;font:400 10.5px var(--mono);color:var(--faint);text-align:right}

/* ---------- top bar ---------- */
.top{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,520px) minmax(0,1fr);align-items:center;gap:12px;
  padding:0 20px;height:62px;box-sizing:border-box;background:rgba(15,14,20,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.top > .grow{display:none}
.top .search{grid-column:2;width:100%;max-width:none}
.top .right{grid-column:3;justify-self:end}
.search{position:relative;flex:1;min-width:0;max-width:460px;display:flex;align-items:center;gap:9px;margin:0;
  background:var(--s1);border:1px solid transparent;border-radius:11px;padding:0 14px;color:var(--dim)}
.search:hover,.search:focus-within{border-color:var(--line2);color:var(--ink2)}
.search .ic{width:15px;height:15px}
.search input{background:none;border:0;box-shadow:none;padding:9px 0;font-size:14px;color:var(--ink)}
.search input:focus{box-shadow:none}
.searchres{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--s2);border:1px solid var(--line2);border-radius:12px;
  padding:6px;box-shadow:0 22px 50px rgba(0,0,0,.55);max-height:60vh;overflow:auto;z-index:40}
.searchres a{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;padding:7px 8px;border-radius:9px;color:var(--ink)}
.searchres a:hover,.searchres a.on{background:var(--s3)}
.searchres a .av{width:30px;height:30px;border-radius:8px;font-size:11px}
.searchres b{display:block;font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.searchres small{display:block;font:400 11px var(--mono);color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.searchres .none{padding:10px;color:var(--dim);font-size:13px}
.right{display:flex;gap:10px;align-items:center}
.top #connect.btn.primary{background:var(--s1);border-color:var(--line);color:var(--ink)}
.top #connect.btn.primary:hover{background:var(--s2);border-color:var(--line2);box-shadow:none}
/* the old one-row nav: nothing renders into it any more, but a page that still carries one must not show it */
.top .nav{display:none}
.search input{min-width:0;width:100%}
/* a phone: the buttons on one row, the search under them. The three-column grid kept a 220px search column and the
   buttons beside it, so every page was ~440px wide on a 400px screen (found 2026-09-17 through the position popup). */
/* --- Holder fees (community mode) -------------------------------------------------------------------------- */
/* One row per epoch, reason on the right when it cannot pay: an epoch a holder cannot SEE is one they report as
   lost money, so a dimmed row with "vetoed by the guardian" on it is doing real work. */
#cm-epochs{display:flex;flex-direction:column;gap:2px;margin:8px 0}
.cm-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 0;
        border-bottom:1px solid var(--line)}
.cm-row:last-child{border-bottom:0}
.cm-row b{font-variant-numeric:tabular-nums}
.cm-dim{opacity:.62}
.cm-dim .sub{text-align:right}
/* Never hidden behind the status line: this is the sentence that says a total is only a subtotal. */
#cm-warn{color:var(--warn);margin:6px 0 2px}

@media(max-width:700px){
  .top{display:flex;flex-wrap:wrap;height:auto;padding-block:8px;row-gap:8px}
  .top .search{order:2;flex:1 1 100%}
  .top .right{order:1;margin-left:auto;flex-wrap:wrap;justify-content:flex-end;min-width:0}
  .top .devwallet{display:none}
}

@media(max-width:1080px){
  .app{grid-template-columns:1fr}
  .siderail{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line)}
  .railnav{flex-direction:row;overflow-x:auto;padding:8px 10px}
  .railnav a{white-space:nowrap;padding:7px 10px}
  .railfeed{max-height:172px}
  .brand{border-bottom:0;padding:12px 16px 4px}
}

/* ---------- buttons, pills, fields ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1px solid var(--line);
  background:var(--s1);color:var(--ink);padding:9px 15px;border-radius:11px;cursor:pointer;
  font:600 14px/1.2 var(--sans);white-space:nowrap;transition:background .15s,border-color .15s,box-shadow .2s,color .15s}
.btn:hover{background:var(--s2);border-color:var(--line2)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.btn.primary:hover:not(:disabled){background:var(--accent-hi);border-color:var(--accent-hi)}
.btn.primary:disabled{background:var(--s2);border-color:var(--s2);color:var(--faint);opacity:1}
.btn.buy{background:var(--up);border-color:var(--up);color:#052013}
.btn.buy:hover:not(:disabled){filter:brightness(1.08);background:var(--up)}
.btn.outline,.btn.ghost{background:var(--s1);border-color:var(--line)}
.btn.outline:hover,.btn.ghost:hover{background:var(--s2);border-color:var(--line2)}
.btn.link{background:none;border:0;color:var(--dim);padding:8px 0;font-size:13px}
.btn.link:hover{color:var(--ink)}
.btn.lg{padding:13px 22px;font-size:15.5px;border-radius:12px}
.btn.sm{padding:7px 12px;font-size:13px;border-radius:9px}
.btn.full{width:100%;margin-top:14px}
.arrow{font-size:1.05em;line-height:1}
.caret{display:inline-block;width:8px;height:8px;border-right:1.6px solid var(--dim);border-bottom:1.6px solid var(--dim);
  transform:rotate(45deg) translate(-2px,-2px);margin-left:2px}
.pill{display:flex;align-items:center;gap:10px;border:1px solid var(--line2);background:var(--panel);
  color:var(--ink);padding:9px 14px;border-radius:10px;cursor:pointer;font:500 14px var(--sans)}
.pill:hover{border-color:var(--line3)}
.okdot{width:7px;height:7px;border-radius:50%;background:var(--up);box-shadow:0 0 8px rgba(50,213,131,.45);margin-left:6px}
.chainpick{position:relative}
.menu{position:absolute;right:0;top:calc(100% + 8px);min-width:230px;background:var(--panel2);border:1px solid var(--line2);
  border-radius:12px;padding:6px;box-shadow:0 18px 50px -12px rgba(0,0,0,.7);z-index:40}
.menuitem{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;color:var(--ink);padding:10px 10px;
  border-radius:8px;font:500 14px var(--sans);cursor:pointer;text-align:left}
.menuitem:hover:not(:disabled){background:rgba(255,255,255,.04)}
.menuitem:disabled{color:var(--dim);cursor:default}
.menuitem .check{margin-left:auto;color:var(--accent)}
.soon{margin-left:auto;font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--dim);
  border:1px solid var(--line2);border-radius:999px;padding:1px 7px}
input,select,textarea{background:var(--sunk);border:1px solid var(--line);color:var(--ink);border-radius:11px;
  padding:11px 13px;font:15px var(--sans);width:100%;outline:none;transition:border-color .15s,box-shadow .15s}
/* A checkbox is a box, never a text field: the rule above gave it width:100%, which stretched it across its row and
   pushed its label to the far edge, so no checkbox on the site read as belonging to its words (user, 2026-09-28). */
input[type=checkbox],input[type=radio]{-webkit-appearance:none;appearance:none;width:18px;height:18px;min-width:18px;
  padding:0;margin:0;flex:none;display:inline-grid;place-content:center;vertical-align:-3px;border:1.5px solid var(--line2);
  border-radius:5px;background:var(--sunk);cursor:pointer;transition:background .12s,border-color .12s}
input[type=radio]{border-radius:50%}
input[type=checkbox]:hover,input[type=radio]:hover{border-color:var(--accent-line)}
input[type=checkbox]:checked,input[type=radio]:checked{background:var(--accent);border-color:var(--accent)}
input[type=checkbox]:checked::after{content:"";width:5px;height:9px;border:solid var(--accent-ink);border-width:0 2px 2px 0;
  transform:translateY(-1px) rotate(45deg)}
input[type=radio]:checked::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent-ink)}
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:2px solid var(--accent-line);outline-offset:2px}
input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.4;cursor:not-allowed}
input::placeholder,textarea::placeholder{color:var(--faint)}
input:focus,select:focus,textarea:focus{border-color:var(--amber);background:var(--bg);box-shadow:none}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--dim) 50%),linear-gradient(135deg,var(--dim) 50%,transparent 50%);
  background-position:calc(100% - 17px) 55%,calc(100% - 12px) 55%;background-size:5px 5px;background-repeat:no-repeat;padding-right:30px}
textarea{resize:vertical;min-height:62px}
label{display:block;color:var(--dim);font-size:12.5px}
.opt{color:var(--faint);font-weight:400;font-size:12px}
.sub{color:var(--ink2);font-size:14px;margin:5px 0 0}

/* ---------- hero: the current site's pitch and demo, in one panel above the board ---------- */
.page{padding:18px 20px 70px}
.hero{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,470px);gap:28px;padding:22px 26px;
  margin-bottom:16px;align-items:center;border:1px solid var(--line);border-radius:var(--r);
  background:linear-gradient(100deg,var(--amber-soft),transparent 58%),var(--s1)}
.hero h1{font-size:clamp(28px,3.3vw,46px);line-height:1.04;letter-spacing:-.035em;font-weight:800}
.lede{color:var(--ink2);font-size:16px;line-height:1.5;margin:0;max-width:56ch}
.hero h1+.lede{margin-top:12px}
/* the highlighted word, with a hand-drawn stroke under it that draws in once */
.uline{position:relative;display:inline-block;color:var(--accent);white-space:nowrap}
.swoosh{position:absolute;left:-1%;bottom:-.2em;width:102%;height:.3em;overflow:visible}
.swoosh path{fill:var(--accent);clip-path:inset(0 100% 0 0);animation:swoosh .9s .35s cubic-bezier(.6,.1,.2,1) forwards}
@keyframes swoosh{to{clip-path:inset(0 0 0 0)}}
@media(prefers-reduced-motion:reduce){.swoosh path{animation:none;clip-path:none}}
.lede .accent{font-weight:600}
.cta{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap}
.chips{display:flex;align-items:center;gap:10px;margin-top:16px;color:var(--ink2);font-size:13px;flex-wrap:wrap}
.chips span{display:inline-flex;align-items:center;gap:7px}
.chips .ic-hex{color:var(--dim);width:18px;height:18px}
.chips i{width:4px;height:4px;border-radius:50%;background:var(--faint)}
.hero-art{position:relative;display:flex;align-items:center;justify-content:center;padding-top:14px}
.float,.hexdot{display:none}
/* ---------- hero demo: a looping walkthrough, driven by hero.js ---------- */
.demo{position:relative;width:min(500px,100%);border-radius:16px;border:1px solid var(--line2);overflow:hidden;
  background:linear-gradient(180deg,rgba(30,28,39,.95),rgba(15,14,20,.97));
  box-shadow:0 30px 80px -30px rgba(0,0,0,.85),0 0 70px -34px rgba(244,243,248,.34)}
.demo-bar{display:flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-bottom:1px solid var(--line)}
.demo-bar i{width:8px;height:8px;border-radius:50%;background:#253030}
.demo-url{margin:0 auto;transform:translateX(-14px);font:500 10.5px var(--mono);color:var(--faint);padding:2px 12px;border-radius:6px;
  background:var(--field);border:1px solid var(--line)}
.demo-stage{position:relative;height:200px}
.demo-scene{position:absolute;inset:0;padding:18px 24px;display:flex;flex-direction:column;justify-content:center;gap:12px;
  opacity:0;transform:translateY(8px);transition:opacity .28s ease,transform .28s ease;pointer-events:none}
.demo-scene.on{opacity:1;transform:none;transition-duration:.45s;transition-delay:.22s}   /* old scene leaves first */
.demo-k{display:flex;align-items:center;gap:8px;font:500 10.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.demo-k .livedot{margin:0}
.demo-seg{display:inline-flex;align-self:flex-start;gap:3px;padding:3px;border:1px solid var(--line);border-radius:9px;background:var(--field);
  font-size:11.5px;color:var(--dim)}
.demo-seg span{padding:3px 10px;border-radius:6px}
.demo-seg .on{color:var(--ink);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line)}
.demo-input{display:flex;align-items:center;height:46px;padding:0 16px;border-radius:11px;border:1px solid var(--accent-line);
  background:var(--field);font:500 19px var(--mono);box-shadow:0 0 0 3px rgba(244,243,248,.08)}
.demo-input .ghost{color:var(--faint)}
.demo-input b{color:var(--accent);font-weight:500;text-shadow:0 0 14px var(--accent-glow)}
.demo-caret{width:2px;height:22px;margin-left:2px;background:var(--accent);animation:demoblink 1s steps(1) infinite}
@keyframes demoblink{50%{opacity:0}}
.demo-note{font-size:12px;color:var(--dim)}
.demo-note b{font:500 12px var(--mono)}
.demo-gpu{padding:1px 6px;border-radius:5px;font-size:9.5px;color:#c9bdfd;border:1px solid var(--violet-line);background:var(--violet-soft)}
.demo-addr{padding:13px 14px;border-radius:10px;border:1px solid var(--line2);background:var(--field);font:500 15px var(--mono);
  letter-spacing:.02em;color:var(--dim);white-space:nowrap;overflow:hidden;transition:border-color .3s,box-shadow .3s}
.demo-addr .hit{color:var(--accent);text-shadow:0 0 12px var(--accent-glow)}
.demo-addr.found{color:var(--ink2);border-color:var(--accent-line);box-shadow:0 0 26px -10px var(--accent-glow)}
.demo-progress{height:4px;border-radius:4px;background:var(--line);overflow:hidden}
.demo-progress i{display:block;height:100%;width:0;background:var(--accent);box-shadow:0 0 10px var(--accent-glow)}
.demo-meter{display:flex;justify-content:space-between;font:11.5px var(--mono);color:var(--dim)}
.demo-meter b{color:var(--ink);font-weight:500}
.demo-meter .found{color:var(--accent)}
.demo-token{display:flex;align-items:center;gap:12px}
.demo-av{display:block;width:42px;height:42px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 34% 30%,#ffcd7a,#4f8f2f 55%,#1b3a1d);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.demo-token b{display:block;font-size:15px;line-height:1.2}
.demo-token small{color:var(--dim);font-size:12px}
.demo-chip{margin-left:auto;padding:5px 9px;border-radius:8px;border:1px solid var(--line2);background:var(--field);
  font:500 11.5px var(--mono);color:var(--ink2);white-space:nowrap}
.demo-chip .hit{color:var(--accent)}
.demo-row{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--dim)}
.demo-row b{display:inline-flex;align-items:center;gap:6px;margin-left:6px;color:var(--ink2);font-weight:500}
.demo-row .ic{width:13px;height:13px;vertical-align:0}
.demo-btn{display:flex;align-items:center;justify-content:center;height:42px;border-radius:11px;font:600 13.5px var(--sans);
  color:var(--accent-ink);background:var(--accent);transition:transform .15s,background .35s,color .35s,box-shadow .35s}
.demo-btn>span{display:none;align-items:center;gap:9px}
.demo-btn .go{display:inline-flex}
.demo-btn.press{transform:scale(.97)}
.demo-btn.busy{background:var(--accent-soft);color:var(--ink2);box-shadow:inset 0 0 0 1px var(--accent-line)}
.demo-btn.busy .go,.demo-btn.done .go{display:none}
.demo-btn.busy .busy,.demo-btn.done .ok{display:inline-flex}
.demo-btn.done{background:transparent;color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-line),0 0 30px -8px var(--accent-glow)}
.demo-spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--line3);border-top-color:var(--accent);animation:demospin .7s linear infinite}
@keyframes demospin{to{transform:rotate(360deg)}}
.demo-check{width:7px;height:12px;margin:-3px 2px 0 0;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(45deg)}
.demo-board{overflow:hidden;margin:-4px;padding:4px}
.demo-track{display:flex;gap:8px;transform:translateX(calc(-33.333% - 2.667px))}
.demo-board.in .demo-track{transform:none;transition:transform .75s cubic-bezier(.2,.8,.2,1)}
.demo-card{position:relative;flex:0 0 calc((100% - 16px) / 3);min-width:0;display:flex;flex-direction:column;gap:7px;padding:10px;
  border-radius:10px;border:1px solid var(--line);background:var(--panel)}
.demo-card .t{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600}
.demo-card .t i{width:22px;height:22px;border-radius:50%;flex:none}
.demo-card .m{display:flex;justify-content:space-between;font:10.5px var(--mono);color:var(--dim)}
.demo-card .m b{color:var(--ink);font-weight:500;transition:color .3s}
.demo-card .a{font:10.5px var(--mono);color:var(--faint);white-space:nowrap;overflow:hidden}
.demo-card .a .hit{color:var(--accent)}
.demo-card.new{border-color:var(--accent-line);box-shadow:0 0 24px -8px var(--accent-glow)}
.demo-card .buy{position:absolute;right:8px;top:9px;font:600 10px var(--mono);color:var(--up);opacity:0}
.demo-card .buy.pop{animation:demobuy 1.6s ease-out forwards}
@keyframes demobuy{0%{opacity:0;transform:translateY(6px)}15%{opacity:1;transform:none}70%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}
.demo-card .m b.up{color:var(--up)}
.demo-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0;padding:10px 24px 14px;list-style:none;border-top:1px solid var(--line)}
.demo-steps li{position:relative;padding-top:9px;font:500 10.5px var(--mono);letter-spacing:.06em;color:var(--faint);transition:color .3s}
.demo-steps li::before,.demo-steps li::after{content:"";position:absolute;left:0;top:0;height:2px;border-radius:2px}
.demo-steps li::before{right:0;background:var(--line2)}
.demo-steps li::after{width:0;background:var(--accent);box-shadow:0 0 8px var(--accent-glow)}
.demo-steps li.on{color:var(--ink)}
.demo-steps li.on::after{animation:demofill var(--d,3s) linear forwards}
.demo-steps li.done{color:var(--dim)}
.demo-steps li.done::after{width:100%}
@keyframes demofill{to{width:100%}}
@media(prefers-reduced-motion:reduce){.demo-scene,.demo-board.in .demo-track{transition:none}.demo-caret,.demo-spin{animation:none}}

/* ---------- intro: hide / compact bar for returning visitors ----------
   A returning visitor gets the concept's one-line strip instead of the pitch, decided before first paint. */
.hero-hide{position:absolute;top:10px;right:12px;z-index:2;display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:0;
  border-radius:7px;background:transparent;color:var(--faint);font:500 12px var(--sans);cursor:pointer}
.hero-hide:hover{color:var(--ink2);background:var(--s2)}
.caret.up{transform:rotate(-135deg) translate(-1px,-1px);margin:3px 0 0 2px}
.herobar{display:none;align-items:center;justify-content:space-between;gap:12px 18px;flex-wrap:wrap;padding:14px 18px;margin-bottom:16px;
  background:linear-gradient(100deg,var(--amber-soft),transparent 58%),var(--s1);border:1px solid var(--line);border-radius:var(--r)}
html.hero-min .hero{display:none}
html.hero-min .herobar{display:flex}
.herobar p{margin:0;display:flex;flex-direction:column;gap:3px}
.herobar p b{font:700 clamp(18px,2.2vw,24px)/1.2 var(--disp);letter-spacing:-.025em}
.hb-sub{color:var(--ink2);font-size:14px}
.hb-cta{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- steps strip ---------- */
.steps{display:flex;align-items:center;gap:18px;width:min(1344px,calc(100% - 96px));margin:10px auto 0;padding:20px 28px;
  border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,rgba(30,28,39,.75),rgba(15,14,20,.75))}
.step{display:flex;align-items:center;gap:16px;min-width:0}
.step h4{font-size:15px;font-weight:600}
.step p{margin:3px 0 0;color:var(--dim);font-size:13.5px}
.num{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;flex:none;font:500 15px var(--sans);
  color:var(--accent);border:1px solid var(--accent-line);background:radial-gradient(circle,rgba(244,243,248,.1),transparent 70%)}
.num.violet{color:#c9bdfd;border-color:var(--violet-line);background:radial-gradient(circle,rgba(167,139,250,.14),transparent 70%)}
.stepchains{display:flex;margin-left:14px}
.stepchains .ic{width:30px;height:30px;border-radius:50%;border:1px solid var(--line2);background-color:var(--panel2);
  background-size:15px;padding:0}
.stepchains .ic+.ic{margin-left:-6px}
.dash{flex:1;min-width:30px;height:1px;background:repeating-linear-gradient(90deg,var(--line3) 0 4px,transparent 4px 8px);position:relative}
.dash::after{content:"";position:absolute;right:-1px;top:-3px;width:6px;height:6px;border-right:1.3px solid var(--dim);border-top:1.3px solid var(--dim);transform:rotate(45deg)}

/* ---------- layout ---------- */
.grid{display:grid;grid-template-columns:minmax(0,1fr) 352px;gap:14px;padding:18px 20px 70px;align-items:start}
.grid > *{min-width:0}
.panel{background:var(--s1);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.rail > .panel+.panel,.panel+.panel{margin-top:12px}
.panel h3{font-size:17px;font-weight:700}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tab{display:inline-flex;align-items:center;gap:7px;border:1px solid transparent;background:transparent;color:var(--dim);
  padding:7px 12px;border-radius:9px;cursor:pointer;font:500 13.5px var(--sans);white-space:nowrap;transition:color .15s,background .15s}
.tab:hover{color:var(--ink2)}
.tab.on{color:var(--ink);background:var(--s3);font-weight:600}
.tab:disabled{opacity:.45;cursor:not-allowed}
.livedot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--faint);vertical-align:middle;margin-left:6px}
.livedot.on{background:var(--up);animation:pl 2.4s ease-out infinite}

/* ---------- THE BOARD: information cards, bump-ordered ----------
   The structure is the site's own (stats, chain filter, sort tabs, a card grid); what changed is that the default sort
   is bump order and the thing that animates is the ADDRESS -- the one attention cue no other launchpad can copy. */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px}
.tile{background:var(--s1);border:1px solid var(--line);border-radius:13px;padding:13px 16px;min-width:0}
.tile b{display:block;font:700 23px/1 var(--disp);letter-spacing:-.04em;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin-bottom:12px}
.seg,.sorts{display:flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--s1);flex-wrap:wrap}
.seg .tab,.sorts .tab{padding:7px 12px;font-size:13.5px}
.seg .tab .ic,.sorts .tab .ic{width:14px;height:14px}
.sorts .tab.on.live{background:var(--accent);color:var(--accent-ink)}
.feed-head h2{font-size:clamp(21px,2.6vw,27px)}
.bnote{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px;font-size:12.5px;color:var(--dim)}
.bnote b{color:var(--faint);font-weight:500}
.bnote b.on{color:var(--amber);font-weight:600}
/* one amount, set here and read by every card: eight presets never go on eight hundred cards */
.sizer{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:10px;background:rgba(9,8,13,.92)}
.sizer button{border:0;background:none;display:grid;place-items:center;width:30px;height:26px;border-radius:7px;color:var(--faint);cursor:pointer}
.sizer button:hover{color:var(--ink2)}
.sizer button.on{background:var(--s2);color:var(--ink)}
.sizer i{display:block;background:currentColor;border-radius:2px}
.sizer button[data-size=s] i{width:9px;height:9px}
.sizer button[data-size=m] i{width:13px;height:13px}
.sizer button[data-size=l] i{width:17px;height:17px}
.qb{display:flex;align-items:center;gap:9px}
.qb .seg .tab{padding:7px 9px;font:600 12.5px var(--mono);letter-spacing:-.02em}
.qbc{display:flex;align-items:center;gap:1px;border-radius:9px;padding:0 9px;font:600 12.5px var(--mono);color:var(--dim);cursor:text;margin:0}
.qbc:hover{color:var(--ink2)}
.qbc.on{background:var(--s3);color:var(--ink)}
.qbc i{display:none;font-style:normal;opacity:.7}
.qbc.on i,.qbc:focus-within i{display:inline}
.qbc input{width:56px;background:none;border:0;padding:7px 0;color:inherit;font:600 12.5px var(--mono);border-radius:0}
.qbc input:focus{outline:none;box-shadow:none;background:none}
.qbc:focus-within{box-shadow:inset 0 0 0 1px var(--amber)}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(316px,1fr));gap:12px}
.card{position:relative;background:var(--s1);border:1px solid var(--line);border-radius:var(--r);padding:14px;
  display:flex;flex-direction:column;gap:11px;color:var(--ink);transition:border-color .16s,background .16s}
.card:hover{border-color:var(--line2);background:var(--s2)}
/* A bump is the board's one piece of theatre: the border lights, one pass of light runs round it
   in under a second, and the glow falls away. Short enough to catch, quiet enough to sit through. */
@property --bsweep{syntax:"<angle>";inherits:false;initial-value:0deg}
.card.bumped{border-color:var(--accent-line);background:var(--s2);animation:bumpglow 2.2s ease-out;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 12px 32px rgba(0,0,0,.35),0 0 22px -12px var(--accent-glow)}
@keyframes bumpglow{0%{box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 12px 32px rgba(0,0,0,.35),0 0 0 1px var(--accent-line),0 0 46px -6px var(--accent-glow)}
  100%{box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 12px 32px rgba(0,0,0,.35),0 0 22px -12px var(--accent-glow)}}
.card.bumped::after{content:"";position:absolute;inset:-1px;border-radius:calc(var(--r) + 1px);padding:1px;pointer-events:none;z-index:3;
  background:conic-gradient(from var(--bsweep),transparent 0 62%,var(--accent) 78%,#ffffff 84%,var(--accent-hi) 90%,transparent 100%);
  filter:drop-shadow(0 0 5px var(--accent-glow));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;
  animation:bsweep .85s cubic-bezier(.35,.05,.2,1) forwards}
@keyframes bsweep{from{--bsweep:0deg;opacity:1}85%{opacity:1}to{--bsweep:360deg;opacity:0}}
@media(prefers-reduced-motion:reduce){.card.bumped{animation:none}.card.bumped::after{display:none}}
@keyframes land{0%{transform:scale(.97)}55%{transform:scale(1.015)}100%{transform:scale(1)}}
.card.landing{animation:land .5s cubic-bezier(.2,.9,.3,1)}
/* THE CARD (Ledger, 2026-09-18). The picture is a real object at a size the reader picks, the
   address is the biggest text on the card, and everything that is not market cap or bonding is gone:
   no 24h, no volume, no sparkline, no "Custom"/"Free address" tag. The paired asset is drawn as a
   quiet disc running off the card edge rather than named in a pill. */
.cards{--img:104px;--af:19px}
.cards[data-size=s]{--img:60px;--af:16px}
.cards[data-size=m]{--img:80px;--af:17.5px}
.card{display:grid;grid-template-columns:var(--img) minmax(0,1fr);gap:14px;align-items:center;overflow:hidden}
.kc-wm{position:absolute;right:-38px;top:50%;translate:0 -50%;pointer-events:none;opacity:.07}
.alogo.wm{width:132px;height:132px;font:800 34px var(--disp);box-shadow:none;background:rgba(244,243,248,.04)}
.alogo.wm img{padding:14px;border-radius:50%}
.kc-media{position:relative;aspect-ratio:1;border-radius:13px;overflow:hidden;background:var(--sunk);border:1px solid var(--line);align-self:start}
.kc-media > img,.kc-media > .art{display:block;width:100%;height:100%;object-fit:cover;transition:transform .4s cubic-bezier(.2,.9,.3,1)}
.card:hover .kc-media > img,.card:hover .kc-media > .art{transform:scale(1.05)}
.kc-body{min-width:0;display:flex;flex-direction:column;gap:9px}
.kc-top{display:flex;align-items:flex-start;gap:8px;min-width:0}
.kc-id{min-width:0;flex:1}
.club{display:inline-flex;align-items:center;gap:4px;flex:none;font:600 9.5px/1 var(--mono);letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink2);border:1px solid var(--line2);border-radius:5px;padding:5px 6px;white-space:nowrap}
.club b{color:var(--accent);font-weight:700}
.kc-bump{position:absolute;left:5px;bottom:5px;display:inline-flex;align-items:center;gap:5px;font:500 10.5px var(--mono);
  color:var(--ink2);background:rgba(12,11,17,.82);border-radius:7px;padding:2px 6px;white-space:nowrap;backdrop-filter:blur(3px)}
.kc-bump.hot{color:var(--accent-ink);background:var(--accent)}
.kc-bump i{width:5px;height:5px;border-radius:50%;background:currentColor;display:block}
.held{position:absolute;right:10px;bottom:9px;z-index:2;font:600 9.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--faint);opacity:0;transition:opacity .14s;white-space:nowrap}
.card:hover .held,.card:focus-within .held{opacity:1}
.nm{display:flex;align-items:center;gap:7px;font:700 15.5px/1.2 var(--disp);letter-spacing:-.03em;min-width:0}
.nm > span,.nm > a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nm .vf{width:14px;height:14px;flex:none;color:var(--peri)}
.kc-sub{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:12px;color:var(--dim);min-width:0;
  white-space:nowrap;overflow:hidden}
.kc-sub .chainic{width:13px;height:13px;vertical-align:0}
.kc-sub > *{flex:none}
.kc-sub > .bycreator{flex:0 1 auto;min-width:0;display:block;overflow:hidden;text-overflow:ellipsis}
.kc-sub .avatar.sm{width:15px;height:15px;font-size:8px}
.tk{color:var(--dim);font-size:12px}
.kc-row{display:flex;align-items:center;gap:12px;min-width:0}
.mc{font:800 clamp(18px,1.5vw,21px)/1 var(--disp);letter-spacing:-.04em}
.kc-foot{gap:9px}
/* The pairing never runs under the buttons (user, 2026-09-21): the asset's logo and symbol keep their width, the words
   "Paired with" give way first -- truncated, then gone on a narrow card. */
.cards .card{container-type:inline-size}
.kc-pair{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--dim);white-space:nowrap;min-width:0;flex:0 1 auto;overflow:hidden}
.kc-pair > .kc-pw{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
.kc-pair > b, .kc-pair > .alogo, .kc-pair > img{flex:0 0 auto}
.kc-foot > .btn.buy{flex:0 0 auto}
@container (max-width: 340px){ .kc-pair > .kc-pw{display:none} }
/* THE ADDRESS: the biggest text on the card, because it is the thing being sold. */
.addr{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden;
  font:400 var(--af,19px)/1.15 var(--mono);color:var(--faint);letter-spacing:-.02em}
.addr .mid{color:var(--faint)}
.addrtext{display:flex;align-items:baseline;min-width:0;white-space:nowrap}
.ahead{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis}
.addr .hit{flex:none}
.addr .copy{margin-left:auto;flex:none}
/* WARM (UX/accent, user 2026-09-18): #FFF0D6 measures chroma 0.038, below the threshold where a hue
   registers, so the chosen characters read as a different MATERIAL rather than a different category,
   and collide with none of the ten colours that already mean something here. Ten hues are taken --
   five chains, up, down and three medals -- and the widest gap left in the greens is 30 degrees, so
   no green clears more than 15. The halo is the only glow on the site. */
.hit{color:var(--run);font-weight:600}
.addr .hit{letter-spacing:-.02em;border-radius:4px;transition:color .2s;
  text-shadow:0 0 9px rgba(255,226,170,.42),0 0 22px rgba(255,226,170,.16)}
.card.bumped .addr .hit{animation:hitpop .55s ease-out}
@keyframes hitpop{0%{transform:scale(1)}40%{transform:scale(1.07)}100%{transform:scale(1)}}
.copy{display:inline-grid;place-items:center;background:none;border:0;color:var(--dim);cursor:pointer;padding:0 2px;opacity:.6}
.copy:hover{color:var(--ink);opacity:1}
.copy .ic{width:14px;height:14px}
.up{color:var(--up)}.down{color:var(--down)}
/* graduation: pons stripped its discovery UI to almost nothing and kept this */
.kc-grad{display:flex;align-items:center;gap:8px;min-width:0;flex:1}
.kc-grad .track{flex:1;min-width:34px;height:4px;border-radius:99px;background:var(--s3);overflow:hidden}
.kc-grad .track i{display:block;height:100%;border-radius:99px;background:var(--accent)}
.kc-grad .poolnote{flex:1;font:500 11.5px var(--mono);color:var(--dim);white-space:nowrap}
.kc-grad .pct{font:500 11.5px var(--mono);color:var(--dim);white-space:nowrap;margin-left:auto}
.kc-grad.done .pct{color:var(--accent)}
.kc-grad.done .track i{background:var(--accent);opacity:.7}
.kc-grad.pooled{justify-content:flex-end}
.kc-grad.pooled .pct{color:var(--faint);margin-left:0}
.kc-grad .lab{letter-spacing:.08em}
.spark{width:60px;height:20px;flex:none;overflow:visible}
.spark .line{fill:none;stroke:var(--faint);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.spark .fill{fill:transparent}
.spark.up .line{stroke:var(--up)}.spark.up .fill{fill:rgba(50,213,131,.1)}
.spark.down .line{stroke:var(--down)}.spark.down .fill{fill:rgba(249,112,102,.1)}
.change{font-size:12.5px;font-weight:600;line-height:1.2;white-space:nowrap}
.kc-foot{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:2px;min-width:0}
.kc-tags{display:flex;gap:5px;min-width:0;overflow:hidden;flex-wrap:nowrap}
.kc-soc{display:flex;gap:4px;flex:none}
.soc{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;background:var(--s2);color:var(--dim)}
a.soc:hover{background:var(--s3);color:var(--ink)}
.soc.off{opacity:.28}
.soc svg{display:block}
/* on a card the buy stays quiet -- the address should be loudest -- and commits to green only on hover */
.card .btn.buy{background:transparent;border-color:var(--line2);color:var(--ink2);flex:none;padding:7px 12px;font-size:13px;border-radius:9px}
.card .btn.buy:hover:not(:disabled){background:var(--up);border-color:var(--up);color:#052013;filter:none}
.tag{font:600 10.5px var(--mono);letter-spacing:.06em;text-transform:uppercase;border-radius:6px;padding:3px 7px;white-space:nowrap}
.tag.koth{background:var(--accent);color:var(--accent-ink)}
.tag.club{background:var(--s2);color:var(--ink2);border:1px solid var(--line2)}
.tag.free{background:rgba(12,11,17,.8);color:var(--ink2)}
.tag.custom{background:rgba(12,11,17,.82);color:var(--accent-hi)}
.tagpill{display:inline-flex;align-items:center;padding:2px 7px;border-radius:6px;font:600 10.5px var(--mono);letter-spacing:.04em;line-height:17px;
  white-space:nowrap;border:1px solid var(--line2);color:var(--ink2);background:var(--s2)}
.tagpill.violet{border-color:var(--violet-line);color:#c9bdfd;background:var(--violet-soft)}
.tagpill.withlogo{gap:4px;padding-left:2px}
.tag-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.empty{padding:54px;text-align:center;color:var(--dim);background:var(--s1);border:1px solid var(--line);border-radius:var(--r);margin-top:12px;font-size:14px}
.more{display:flex;justify-content:center;margin-top:20px}
.more .btn{padding:11px 30px;font-size:15px;gap:12px}
.toast{position:fixed;left:50%;bottom:56px;z-index:60;background:var(--s3);border:1px solid var(--line2);border-radius:12px;padding:11px 16px;
  font-size:13.5px;box-shadow:0 22px 50px rgba(0,0,0,.55);opacity:0;pointer-events:none;transform:translate(-50%,14px);
  transition:opacity .2s,transform .2s;max-width:min(560px,calc(100vw - 32px))}
.toast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.toast b{color:var(--amber)}
.toast.err{border-color:rgba(249,112,102,.5)}
.toast .btn{margin-left:8px}
@media (prefers-reduced-motion:reduce){.card,.card *,.fr{animation:none!important;transition:none!important}}

.av .art,.av > svg{display:block;width:100%;height:100%}
.av > img{display:block;width:100%;height:100%;object-fit:cover}
.fr .av{display:block;overflow:hidden;flex:none}
.nm a{color:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.nm a:hover{text-decoration:underline;text-decoration-color:var(--line3);text-underline-offset:3px}
.bycreator{display:inline-flex;align-items:center;gap:4px;color:var(--ink2)}
.card{cursor:pointer}
@media (min-width:1081px) and (max-width:1300px){.grid,.coin{grid-template-columns:1fr}}

/* ---------- rail: identity + create ---------- */
/* The "glow card": lime-tinted edge and corner light. Used for the create page's Preview; keep it
   for anything that should read as the user's own identity (was the "Your address" card). */
.identity,.glow-card{position:relative;border-color:rgba(244,243,248,.32);
  background:radial-gradient(420px 220px at 100% 0,rgba(244,243,248,.09),transparent 70%),linear-gradient(180deg,rgba(34,30,46,.95),rgba(26,24,34,.95));
  box-shadow:0 0 40px -22px var(--accent-glow)}
.identity h3{padding-right:56px}
/* vanity prices by length */
.tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;margin-top:12px}
.tiers:empty{display:none}
.tier{display:flex;flex-direction:column;gap:1px;padding:9px 12px;border:1px solid var(--line2);border-radius:10px;background:var(--field);
  transition:border-color .15s,background .15s;min-width:0}
.tier-n{font-size:11.5px;color:var(--dim)}
.tier b{font:600 14px var(--sans);color:var(--ink)}
.tier-s{font-size:11px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tier.on{border-color:var(--accent-line);background:var(--accent-soft)}
.tier.on b{color:var(--accent)}
.tier.nostock .tier-s{color:var(--warn);opacity:.8}
.tiers.compact{margin-top:10px}
.tiers.compact .tier{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;column-gap:8px;row-gap:1px;padding:7px 11px}
.tiers.compact .tier-n{white-space:nowrap}
.tiers.compact .tier b{text-align:right;white-space:nowrap}
.tiers.compact .tier-s{grid-column:1/-1}
.quote .feeval{color:var(--ink);font-weight:600}
.identity .emblem{position:absolute;top:18px;right:18px}
.identity .sub{max-width:34ch;line-height:1.5}
.identity .sub.small{margin-top:14px}
.identity code.hit{font-size:12.5px}
.inline-input{display:flex;margin-top:16px;border:1px solid var(--line2);border-radius:11px;background:var(--field);padding:4px;
  transition:border-color .15s,box-shadow .15s}
.inline-input:focus-within{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}
.inline-input input{border:0;background:transparent;box-shadow:none;font:500 15px var(--mono);letter-spacing:.03em;padding:9px 10px}
.inline-input .btn{padding:9px 16px;border-radius:8px}
.quote:empty{min-height:0;margin:0}
.quote{margin:12px 0 0;font-size:13px;color:var(--dim);min-height:20px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.quote .ok{color:var(--up);display:inline-flex;align-items:center;gap:6px}
.quote .warn{color:var(--warn)}
.quote .ic-check{width:15px;height:15px;color:var(--up)}

.create-head{display:flex;justify-content:space-between;align-items:baseline}
.create-head .sub{font-size:12.5px}
.frow{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;align-items:center;margin-top:12px}
.frow.stack{grid-template-columns:1fr;gap:8px;margin-top:18px}
.flabel{color:var(--ink2);font-size:13px}
.pair{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:8px}
.imgpick{display:flex;align-items:center;gap:10px;min-width:0}
.thumb{width:48px;height:48px;border-radius:10px;border:1px dashed var(--line3);background:var(--field);overflow:hidden;flex:none;display:grid;place-items:center}
.thumb img{width:100%;height:100%;object-fit:cover}
.upload{position:relative;overflow:hidden;color:var(--ink2)}
.upload input{position:absolute;inset:0;opacity:0;cursor:pointer}
#img-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
details.links{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
details.links summary{cursor:pointer;font-size:13px;color:var(--ink2);list-style:none}
details.links summary::before{content:"+";display:inline-block;width:14px;color:var(--dim)}
details.links[open] summary::before{content:"–"}
.toggle{display:grid;gap:8px}
.toggle.two{grid-template-columns:1fr 1fr}
.toggle.three{grid-template-columns:1fr 1fr 1fr}
.toggle.four{grid-template-columns:1fr 1fr 1fr 1fr}
.opt-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 10px;border-radius:9px;border:1px solid var(--line2);
  background:var(--field);color:var(--ink2);font:500 13px var(--sans);cursor:pointer;white-space:nowrap;min-width:0}
.opt-btn:hover:not(:disabled){border-color:var(--line3);color:var(--ink)}
.opt-btn.on{border-color:var(--accent-line);color:var(--ink);background:var(--accent-soft);box-shadow:inset 0 0 0 1px rgba(244,243,248,.16)}
.opt-btn:disabled{opacity:.55;cursor:not-allowed}
.venue-wallets{margin:10px 0 0;display:flex;flex-direction:column;gap:6px;color:var(--text)}
.venue-wallets>span{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:9px 12px;border-radius:10px;
  border:1px solid color-mix(in srgb,var(--amber) 45%,var(--line));background:color-mix(in srgb,var(--amber) 9%,transparent)}
.venue-wallets .linkwallet{background:var(--amber);color:#111;border-color:transparent;font-weight:600}
.addrbuild .ab-tail{flex:none;color:var(--dim);letter-spacing:.02em}
.addrbuild .ab-tail[hidden]{display:none}
.big .forced{color:var(--dim)}
.busybar.det i::after{animation:none;left:0;width:var(--p,0%);transition:width 1s linear}
.opt-btn{position:relative}
.opt-btn .soon{position:absolute;top:-8px;right:8px;margin:0;padding:0 6px;font-size:9px;line-height:15px;background:var(--panel2);color:var(--dim)}
.addrline{display:grid;grid-template-columns:minmax(0,1fr) 124px;gap:8px}
.addrline input{font-family:var(--mono)}
.matches{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-height:220px;overflow:auto}
.match{display:block;border:1px solid var(--line2);border-radius:9px;background:var(--field);
  padding:9px 11px;cursor:pointer;font:11.5px var(--mono);word-break:break-all;color:var(--ink2)}
.match:hover,.match.on{border-color:var(--accent-line);background:var(--accent-soft);color:var(--ink)}
.addrcard{display:flex;flex-direction:column;gap:4px;padding:16px;border:1px solid var(--line2);border-radius:12px;background:var(--field)}
.addrcard b{font-size:20px;font-weight:500;letter-spacing:.02em}
.picked{margin-top:12px;font:12px var(--mono);color:var(--ink2);overflow-wrap:anywhere}
.picked:empty{display:none}
.picked .opt{font-family:var(--sans)}
.picked a{color:var(--dim);text-decoration:underline}
.navrow{display:flex;gap:10px;margin-top:18px}
.review{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px 14px;font-size:13px;align-items:center}
.review span{color:var(--dim)}
.review b{font-weight:500;text-align:right;overflow:hidden;text-overflow:ellipsis;word-break:break-all}
.review .tokenline{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding-bottom:12px;margin-bottom:4px;border-bottom:1px solid var(--line)}
.review .tokenline .av{width:44px;height:44px;border-radius:50%}
.costs{font-size:13px;border:1px solid var(--line);border-radius:11px;padding:12px 14px;margin-top:14px;
  display:grid;grid-template-columns:1fr auto;gap:5px 12px;background:var(--field)}
.costs span{color:var(--dim)}
.costs b{text-align:right;font-weight:500}
.costs .total{border-top:1px solid var(--line);padding-top:7px;color:var(--ink)}
.status{margin:12px 0 0;font-size:13px;color:var(--dim);min-height:18px;word-break:break-word}
.status:empty{margin:0;min-height:0}
.status.err{color:var(--down)}
.status.ok{color:var(--up)}
/* a step in progress (create.js Busy): an indeterminate bar and the seconds so far */
.busybar{display:flex;align-items:center;gap:10px;margin:8px 0 0}
.busybar[hidden]{display:none}
.busybar i{position:relative;flex:1;height:4px;border-radius:999px;background:var(--line);overflow:hidden}
.busybar i::after{content:"";position:absolute;top:0;bottom:0;left:-35%;width:35%;border-radius:999px;background:var(--up);animation:busyslide 1.3s ease-in-out infinite}
.busybar span{font:500 12px var(--mono,monospace);color:var(--dim);min-width:38px;text-align:right}
@keyframes busyslide{0%{left:-35%}100%{left:100%}}
@media (prefers-reduced-motion:reduce){.busybar i::after{animation:none;left:0;width:100%;opacity:.45}}
.status.warn{color:var(--warn)}

.devwallet{display:flex;align-items:center;gap:8px;border:1px dashed rgba(232,196,107,.55);border-radius:10px;
  padding:4px 5px 4px 10px;font-size:12px;color:var(--dim)}
.devwallet .tag{color:var(--warn);font-weight:600;letter-spacing:.05em;font-size:10.5px}
.devwallet code{color:var(--ink)}

/* ---------- reuse warnings ---------- */
.reuse{display:inline-block;padding:1px 8px;border:1px solid rgba(232,196,107,.55);border-radius:999px;background:rgba(232,196,107,.07);
  color:var(--warn);font-size:10.5px;font-weight:500;line-height:17px;white-space:nowrap;cursor:help;vertical-align:1px}
.warnbox{border-color:rgba(232,196,107,.3);background:linear-gradient(160deg,rgba(232,196,107,.07),rgba(26,24,34,.92) 60%);font-size:13.5px;color:var(--ink2)}
.warnbox a{color:var(--warn);text-decoration:underline}

/* ---------- token page ---------- */
.notfound{padding:80px 28px;color:var(--dim);text-align:center}
.coin{grid-template-columns:minmax(0,1fr) 370px}
.coinhead{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.coinhead h1{font-size:24px;letter-spacing:-.02em;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.coinhead h1 .tk{font-size:15px;font-weight:500}
.av.xl{width:76px;height:76px;border-radius:50%;font-size:22px;box-shadow:0 0 0 1px rgba(255,255,255,.07)}
.meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;color:var(--dim);font-size:13px}
.addr.full{display:inline-block;margin:0;padding:4px 10px;word-break:break-all;font-size:12px}
.links{display:flex;gap:12px}
.links a{color:var(--dim);border-bottom:1px dotted var(--line3)}
.links a:hover{color:var(--ink)}
.mcap{margin-left:auto;text-align:right}
.mcap .big{font-size:34px;font-weight:600;letter-spacing:-.03em;line-height:1.1;margin-top:2px}
.chart{margin-top:10px;height:240px}
.chart svg{width:100%;height:100%;display:block;overflow:visible}
.chart .gridline{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke}
.chart .axis{fill:var(--dim);font-size:11px;font-family:var(--sans)}
.tablewrap{overflow-x:auto;margin-top:12px}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{color:var(--dim);font-weight:500;text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);font-size:12px}
.tbl td{padding:10px 10px;border-bottom:1px solid rgba(44,41,55,.7);white-space:nowrap}
.tbl tbody tr:hover td{background:rgba(255,255,255,.015)}
.tbl .r{text-align:right}
.tbl a{color:var(--ink2)}
.tbl a:hover{color:var(--ink)}
.tbl code{font-size:12px}
.up{color:var(--up)}
.down{color:var(--down)}
.label{margin-left:6px;padding:0 6px;border:1px solid var(--line2);border-radius:999px;color:var(--dim);font-size:10.5px}
.empty-row{text-align:center;padding:26px 0}
.quick{display:flex;gap:6px;margin-top:10px}
.quick .btn{flex:1;padding:8px 0;font-size:13px}
.rail label{margin-top:16px}
#t-side{margin-bottom:2px}
.rail label input{margin-top:8px}
/* a dollar amount: the $ sits inside the field (spec/16) */
.usdinput{position:relative;display:block}
.usdinput .cur{position:absolute;left:12px;bottom:11px;color:var(--dim);font-size:14px;pointer-events:none}
.usdinput input{padding-left:24px}
/* Max slippage: a quiet line under the trade buttons that opens the presets, so the setting is always visible
   without competing with Buy. Mirrors backend/slippage.py's bands via K.SLIPPAGE_PRESETS. */
.slip{margin-top:10px}
.sliplink{background:none;border:0;padding:0;color:var(--dim);font-size:12px;cursor:pointer;font:inherit;font-size:12px}
.sliplink:hover{color:var(--fg)}
.sliplink b{color:var(--fg);font-weight:600}
.slipbox{margin-top:8px;padding:10px;border:1px solid var(--line2);border-radius:8px}
.slipbox .quick{margin-top:0}
.slipbox .quick .btn{flex-direction:column;gap:1px;line-height:1.25;padding:6px 2px}
.slipbox .quick .btn .sub{font-size:10px}
.slipbox .quick .btn.on{border-color:var(--accent,#6c9);background:rgba(255,255,255,.06)}
.slipcustom{display:block;margin-top:8px;font-size:12px;color:var(--dim)}
.slipcustom .usdinput .cur{left:auto;right:12px}
.slipcustom .usdinput input{padding-left:12px;padding-right:26px}
.slipbox .sub{margin:6px 0 0;font-size:11px}

/* Order progress (K.orderProgressHtml): shown on the create page and under Addresses. Deliberately shows PROGRESS and
   a finish time only -- never worker or provider counts, which are logged server-side instead. */
.oprog{margin:8px 0 0}
.oprog-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;color:var(--fg)}
.oprog-pct{color:var(--dim);font-variant-numeric:tabular-nums}
.oprog-bar{margin:5px 0 4px;height:6px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}
.oprog-fill{height:100%;border-radius:999px;background:var(--accent,#6c9);transition:width .6s ease}
.oprog.late .oprog-fill{background:var(--warn,#d8a657)}
.oprog .sub{margin:0}
@media (prefers-reduced-motion:reduce){.oprog-fill{transition:none}}
.progress{height:8px;border-radius:999px;background:var(--field);border:1px solid var(--line);overflow:hidden;margin-top:14px}
.progress div{height:100%;width:0;background:var(--accent);box-shadow:0 0 12px var(--accent-glow);transition:width .6s}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;margin-top:12px;font-size:13px}
.kv span{color:var(--dim)}
.kv b{text-align:right;font-weight:500}
.kv a{color:var(--ink);border-bottom:1px dotted var(--line3)}
.desc{margin:10px 0 0;white-space:pre-wrap;word-break:break-word;font-size:13.5px;color:var(--ink2)}
.desc.dim{color:var(--dim)}

/* ---------- profile, fees ---------- */
.profilepage{padding:22px 20px 70px;display:grid;gap:18px}
.profilehead{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.profilehead .grow{flex:1;min-width:0}
.profilehead h1{font-size:24px;display:flex;align-items:center;gap:8px;margin-top:2px}
.profilehead .kv{max-width:440px}
.collectbox{min-width:0;text-align:right}
.av.sm{width:34px;height:34px;border-radius:50%}
.tokcell{display:flex;gap:12px;align-items:center}
.tbl .tokcell b{color:var(--ink);font-weight:600}
.tbl td .sub{margin-left:4px}
.feespage{padding:22px 20px 70px;display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px;align-items:start}
.feespage > .sub,.feespage > .secthd,.feespage > h1,.feespage > h2{grid-column:1/-1}
.feespage > .secthd{margin:0}
.feespage > .panel+.panel{margin-top:0}
.addrpage{padding:22px 20px 70px;display:grid;gap:18px}
.addrpage > .panel+.panel{margin-top:0}
.addrpage h2{margin:0}
.addrlist{display:grid;gap:10px}
.addritem{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:12px}
.addritem code{word-break:break-all}
.addritem .actions{display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--ink2)}

/* ---------- footer: fixed ticker bar ---------- */
.ic-x{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.8 2.8h3.1l-6.8 7.8 8 10.6h-6.3l-4.9-6.4-5.6 6.4H2.2l7.3-8.3L1.8 2.8h6.4l4.4 5.9zm-1.1 16.5h1.7L7.4 4.6H5.5z'/%3E%3C/svg%3E")}
.ic-telegram{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21.4 3.3L2.9 10.5c-1.3.5-1.2 1.3-.2 1.6l4.7 1.5 1.8 5.6c.2.7.4.9.9.9s.7-.2 1-.5l2.4-2.3 4.9 3.6c.9.5 1.6.2 1.8-.8l3.2-15.2c.3-1.3-.5-1.9-2-1.6zM9.3 13.3l8.6-5.4c.4-.3.8-.1.5.2l-7.1 6.4-.3 3.3z'/%3E%3C/svg%3E")}
.ic-discord{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19.3 5.3A16.6 16.6 0 0 0 15.2 4l-.5 1a15.4 15.4 0 0 0-5.4 0l-.5-1a16.6 16.6 0 0 0-4.1 1.3C2.1 9.1 1.4 12.9 1.8 16.6a16.7 16.7 0 0 0 5 2.5l1.1-1.7c-.6-.2-1.2-.5-1.7-.9l.4-.3a11.9 11.9 0 0 0 10.8 0l.4.3c-.5.4-1.1.7-1.7.9l1.1 1.7a16.6 16.6 0 0 0 5-2.5c.5-4.3-.8-8.1-2.9-11.3zM8.7 14.3c-1 0-1.8-.9-1.8-2s.8-2 1.8-2 1.8.9 1.8 2-.8 2-1.8 2zm6.6 0c-1 0-1.8-.9-1.8-2s.8-2 1.8-2 1.8.9 1.8 2-.8 2-1.8 2z'/%3E%3C/svg%3E")}
.tk-btc,.tk-eth,.tk-hype,.tk-bnb{background:var(--i) center/contain no-repeat;-webkit-mask:none;mask:none}
.tk-bnb{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-6 -6 36 36'%3E%3Ccircle cx='12' cy='12' r='18' fill='%23372d0b'/%3E%3Cpath fill='%23F0B90B' d='M16.624 13.92l2.718 2.716-7.354 7.353-7.353-7.352 2.718-2.717 4.635 4.66 4.636-4.66zm4.637-4.637L24 12l-2.715 2.716L18.568 12l2.693-2.717zm-9.272.001l2.716 2.692-2.717 2.717L9.272 12l2.717-2.715zm-9.273-.001L5.41 12l-2.692 2.692L0 12l2.716-2.717zM11.989.012l7.353 7.33-2.718 2.715-4.635-4.636-4.636 4.66-2.717-2.716L11.989.012z'/%3E%3C/svg%3E")}
.tk-btc{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='12' fill='%23f7931a'/%3E%3Cpath fill='white' d='M16.6 10.5c.2-1.5-.9-2.3-2.5-2.8l.5-2-1.2-.3-.5 2-1-.2.5-2-1.2-.3-.5 2-2.5-.6-.3 1.3.9.2c.5.1.6.4.5.7l-1.4 5.7c-.1.2-.3.4-.7.3l-.9-.2-.6 1.4 2.4.6-.5 2.1 1.2.3.5-2 1 .3-.5 2 1.2.3.5-2.1c2.1.4 3.7.2 4.4-1.7.5-1.5 0-2.4-1.1-3 .8-.2 1.4-.7 1.6-1.8zm-2.8 3.9c-.4 1.5-2.9.7-3.8.5l.7-2.7c.8.2 3.5.6 3.1 2.2zm.4-4c-.3 1.4-2.4.7-3.1.5l.6-2.4c.7.2 2.9.5 2.5 1.9z'/%3E%3C/svg%3E")}
.tk-eth{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='12' fill='%23343a52'/%3E%3Cpath fill='%23c9d2ff' d='M12 3.8l-5 8.3 5 3 5-3z'/%3E%3Cpath fill='%238a96d6' d='M12 16.1l-5-3 5 7.1 5-7.1z'/%3E%3C/svg%3E")}
.tk-hype{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='12' fill='%230f2e2a'/%3E%3Cpath fill='%2397fce4' d='M19 11.9c0 4.2-2.6 5.5-4 4.3-1.2-1-1.6-3.1-3.4-3.3-2.3-.3-2.5 2.7-4 2.7-1.8 0-1.9-2.4-1.9-3.8 0-1.4.4-3.4 2-3.4 1.9 0 2 2.8 4.4 2.9 2.4.1 2.4-3.2 4.2-3.2 1.5 0 2.7 1.2 2.7 3.8z'/%3E%3C/svg%3E")}
body.has-footbar{padding-bottom:40px}
body.has-footbar .siderail{height:calc(100vh - 36px)}
@media(max-width:1080px){body.has-footbar .siderail{height:auto}}
.sitefoot{position:fixed;left:0;right:0;bottom:0;z-index:25}
.footbar{display:flex;align-items:center;gap:18px;height:36px;padding:0 20px;border-top:1px solid var(--line);
  background:rgba(15,14,20,.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:12.5px}
.ticker{display:flex;align-items:center;gap:20px;min-width:0;overflow:hidden;white-space:nowrap}
.tick{display:inline-flex;align-items:center;gap:7px;padding:3px 6px;margin:0 -6px;border-radius:6px;color:var(--ink)}
.tick .ic{width:14px;height:14px;vertical-align:0}
.tick .px{font:500 12.5px var(--sans);font-variant-numeric:tabular-nums}
.tick .chg{font-style:normal;font-size:12px;font-variant-numeric:tabular-nums}
.tick.flash-up{animation:flashUp 1s ease-out}
.tick.flash-down{animation:flashDown 1s ease-out}
@keyframes flashUp{0%{background:rgba(50,213,131,.2);color:var(--up)}100%{background:transparent}}
@keyframes flashDown{0%{background:rgba(240,98,93,.2);color:var(--down)}100%{background:transparent}}
@media(prefers-reduced-motion:reduce){.tick.flash-up,.tick.flash-down{animation:none}}
.footright{margin-left:auto;display:flex;align-items:center;gap:18px;white-space:nowrap;color:var(--ink2)}
.fstat{font-variant-numeric:tabular-nums}
.flab{color:var(--faint);margin-right:3px}
.health{display:inline-flex;align-items:center;gap:7px;font-weight:500;color:var(--ink2)}
.sdot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--faint)}
/* Operational is green, degraded amber, down red -- a status light is read by colour before it is
   read by word, so it never borrows the house colour. */
.sdot.ok{background:var(--up);box-shadow:0 0 8px rgba(50,213,131,.45)}
.health:has(.sdot.ok){color:var(--up)}
.sdot.degraded{background:#f5a524;box-shadow:0 0 8px rgba(245,165,36,.45)}
.health:has(.sdot.degraded){color:#f5a524}
.sdot.down{background:var(--down);box-shadow:0 0 8px rgba(249,112,102,.45)}
.health:has(.sdot.down){color:var(--down)}
.socials{display:flex;align-items:center;gap:4px;padding-left:14px;border-left:1px solid var(--line2)}
.social{display:grid;place-items:center;width:24px;height:24px;border-radius:6px;color:var(--dim)}
.social .ic{width:14px;height:14px}
a.social:hover{color:var(--ink);background:rgba(255,255,255,.05)}
.social.off{color:var(--faint);opacity:.6;cursor:default}
@media(max-width:1180px){.fstat{display:none}}
@media(max-width:700px){
  .footbar{padding:0 12px;gap:10px}
  .ticker{gap:14px}
  .tick .chg,.socials{display:none}
}

/* ---------- home board ---------- */
.board{}

/* ---------- create page ---------- */
.createpage{padding:22px 20px 60px}
.create-title h1{font-size:34px;letter-spacing:-.025em}
.create-title .sub{font-size:14.5px;margin-top:8px}
.create-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
/* step 1: everything after the chain waits for a chain (the chain decides what a ticker and an address can be) */
fieldset.gated{border:0;margin:0;padding:0;min-width:0}
fieldset.gated:disabled{opacity:.45}
fieldset.gated:disabled *{cursor:not-allowed}
#to-auto{margin-top:14px}
.steps.stepper{width:auto;margin:24px 0 0;list-style:none}
.steps.stepper .step{opacity:.55;transition:opacity .2s}
.steps.stepper .step.on,.steps.stepper .step.done{opacity:1}
.steps.stepper .step.done{cursor:pointer}
.steps.stepper .step.on .num{box-shadow:0 0 18px -2px var(--accent-glow);background:var(--accent-soft)}
.steps.stepper .step.done .num{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}
.create-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(400px,480px);gap:14px;margin-top:22px;align-items:start}
.create-grid > *{min-width:0}
.create h3{font-size:19px;margin-bottom:6px}
.field{display:block;color:var(--ink2);font-size:13px;margin-top:18px}
.field > input,.field > textarea,.field > .addrline,.field > .toggle,.field > .dropzone,.field > select{margin-top:8px}
#pair{width:100%;max-width:100%}
#pair-note{margin-top:6px}
#pair-note .warn{color:var(--down, #ff6b6b)}
.fgrid{display:grid;gap:14px}
.fgrid.two{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.fgrid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.fgrid .field{margin-top:18px}
.fgrid.buyrow{align-items:end;grid-template-columns:minmax(0,220px) minmax(0,1fr)}
.fgrid.buyrow .sub{margin:0 0 10px}
.dropzone{position:relative;display:flex;align-items:center;gap:16px;padding:14px 16px;border:1px dashed var(--line3);border-radius:12px;
  background:var(--field);cursor:pointer;transition:border-color .15s,background .15s}
.dropzone:hover,.dropzone.over{border-color:var(--accent-line);background:var(--accent-soft)}
.dropzone input{position:absolute;inset:0;opacity:0;cursor:pointer}
.dropzone .thumb{width:64px;height:64px;border-radius:50%;border-style:solid;color:var(--dim)}
.dropzone .thumb .ic{width:20px;height:20px}
.drop-text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.drop-text b{font-weight:500;color:var(--ink)}
.drop-text .sub{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opt-btn.big{flex-direction:column;align-items:flex-start;gap:3px;padding:13px 14px;text-align:left;white-space:normal}
.opt-btn.big b{font-weight:600;font-size:14px;color:var(--ink)}
.opt-btn.big .sub{margin:0}
.navrow.end{justify-content:flex-end}
.navrow{margin-top:24px}
.navrow .btn.primary{margin-left:auto}
.create .addrcard{margin-top:12px}
.create-side > .panel+.panel{margin-top:18px}
.preview-wrap{margin-top:14px}
.card.preview{max-width:380px;margin:0 auto;pointer-events:none}
.card.preview .change{color:var(--dim)}
.create .review{margin-top:14px}
/* ---------- pairing picker: a company is recognised by its logo, which a native <select> cannot draw ---------- */
.offscreen{position:absolute!important;left:0;top:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);
  clip-path:inset(50%);white-space:nowrap;border:0}
/* A logo over the ticker monogram, inside a ring tinted from the ticker (--ring, set inline by K.assetLogo).
   The <img> removes itself when there is no logo, so the monogram shows and nothing ever breaks. */
.alogo{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:30px;height:30px;
  border-radius:50%;background:var(--panel2,#1e1c27);color:var(--dim);font-size:11px;font-weight:600;overflow:hidden;
  box-shadow:0 0 0 1.5px var(--ring,var(--line)), 0 0 0 3px var(--bg,#14131a)}
/* `contain` with a little padding: a square mark is not cropped into the disc the way `cover` did */
.alogo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:2px;background:#fff}
/* a pale mark (Boeing, BlackBerry) disappeared into the white disc: back those with the panel colour instead */
.alogo.tone-light img{background:#10171c}
.alogo.none{background:transparent;box-shadow:none}
.alogo.none .ic{width:18px;height:18px;color:var(--dim)}
.alogo.sm{width:18px;height:18px;font-size:8px;box-shadow:0 0 0 1px var(--ring,var(--line))}
.alogo.sm img{padding:1px}
.pairpick{position:relative;margin-top:6px}
.pairbtn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;text-align:left;cursor:pointer;
  border:1px solid var(--line);border-radius:10px;background:var(--panel2,#1e1c27);color:var(--ink);font:inherit}
.pairbtn:hover{border-color:var(--dim)}
.pairbtn .caret{margin-left:auto}
.pairtxt{display:flex;flex-direction:column;gap:1px;min-width:0}
.pairtxt b{font-weight:600;font-size:13.5px}
.pairtxt .sub{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pairmenu{position:absolute;z-index:40;top:calc(100% + 6px);left:0;right:0;border:1px solid var(--line);border-radius:12px;
  background:var(--panel,#0c1210);box-shadow:0 18px 40px rgba(0,0,0,.5);overflow:hidden}
.pairsearch{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--line)}
.pairsearch .ic{width:15px;height:15px;color:var(--dim);flex:none}
.pairsearch input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font:inherit;outline:none}
.pairlist{max-height:320px;overflow-y:auto}
.pairgroup{padding:9px 12px 4px;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.pairrow{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;text-align:left;cursor:pointer;
  border:0;background:transparent;color:var(--ink);font:inherit}
.pairrow:hover:not(:disabled){background:var(--panel2,#1e1c27)}
.pairrow.on{background:var(--panel2,#1e1c27)}
.pairrow.off{opacity:.45;cursor:not-allowed}
.pairwhy{margin:0;margin-left:auto;text-align:right;flex:none;max-width:45%}
/* the confirmation that replaces the form once a launch lands */
#step-done .donehead{display:flex;align-items:flex-start;gap:13px;margin-bottom:18px}
#step-done .donehead .ic-check{width:30px;height:30px;flex:none;color:var(--accent)}
#step-done .donehead h3{margin:0 0 3px}
#step-done .donehead .sub{margin:0}
#step-done .tokenline{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
#step-done .tokenline .av{width:44px;height:44px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--panel2,#1e1c27);font-weight:600}
#step-done .tokenline .av img{width:100%;height:100%;object-fit:cover}
#step-done .tokenline .nm{font-weight:600}
#step-done .tokenline .tk{color:var(--dim);font-size:13px}
#step-done .field{margin-top:16px}
.doneaddr{display:flex;align-items:center;gap:8px;margin-top:6px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel2,#1e1c27)}
.doneaddr code{flex:1;min-width:0;overflow-wrap:anywhere;font-size:12.5px}
.doneaddr .btn{flex:none}
.navrow.donerow{flex-wrap:wrap}
.navrow.donerow .btn.primary{margin-left:auto}
@media(max-width:980px){
  .create-grid{grid-template-columns:1fr}
  .card.preview{max-width:none}
}
@media(max-width:700px){
  .board{padding:16px 16px 30px}
  .createpage{padding:22px 16px 30px}
  .create-title h1{font-size:28px}
  .fgrid.two,.fgrid.three,.fgrid.buyrow{grid-template-columns:1fr;gap:0}
}

/* ---------- responsive ---------- */
@media(max-width:1180px){
  .hero{grid-template-columns:1fr;padding:20px}
  .hero-art{max-width:560px}
  .steps{width:calc(100% - 40px)}
  .grid{grid-template-columns:minmax(0,1fr) 330px}
}
@media(max-width:980px){
  .grid,.coin{grid-template-columns:1fr}
  .steps{flex-direction:column;align-items:flex-start;gap:14px}
  .dash,.stepchains{display:none}
  .mcap{margin-left:0;text-align:left}
}
@media(max-width:700px){
  .top{grid-template-columns:minmax(0,1fr) auto;height:auto;padding:10px 16px;gap:8px}
  .top .search{grid-column:1/-1;grid-row:2}
  .top .right{grid-column:2;grid-row:1}
  .pill #chain-label{display:none}
  .hero{padding:16px;gap:16px}
  .lede{font-size:15px}
  .hero-art{min-height:0;padding:4px 0 0}
  .demo-stage{height:196px}
  .demo-scene{padding:14px 16px}
  .demo-steps{padding:9px 16px 12px;gap:8px}
  .demo-card .a{display:none}
  .demo-chip{display:none}
  .demo-addr{font-size:13.5px}
  .hero-hide{right:16px;top:8px}
  .hb-sub{display:none}
  .steps{width:calc(100% - 32px);padding:16px}
  .grid{padding:18px 16px 40px;gap:18px}
  .feed-head h2{font-size:22px}
  .seg,.sorts{flex-wrap:wrap}
  .cards{grid-template-columns:1fr;gap:10px}
  .page{padding:14px 12px 60px}
  .panel{padding:18px}
  .frow{grid-template-columns:1fr;gap:6px}
  .coinhead .mcap{width:100%}
  .profilepage,.feespage,.addrpage{padding:18px 16px 40px}
}
@media(max-width:440px){
  .toggle.two,.toggle.three,.toggle.four{grid-template-columns:1fr}
}

/* made-to-order vanity address (create step 2) */
.quote .mto{color:var(--violet,#a78bfa);font-weight:600}
.founding{margin:10px 0 4px;padding:10px 14px;border:1px solid var(--accent);border-radius:12px;background:var(--field);display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:14px}
.founding .sub{flex-basis:100%}
.orderbox{margin-top:12px;padding:12px 14px;border:1px dashed var(--line2);border-radius:12px;background:var(--field);display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.orderbox .orderline{display:flex;flex-direction:column;gap:2px}
.orderbox .progress{width:100%;margin-top:2px}
.orderbox code{font-size:13px;overflow-wrap:anywhere}
.orderbox .ok{color:var(--accent);display:inline-flex;align-items:center;gap:6px;font-weight:600}
.orderbox .warn{color:var(--warn);font-weight:600}
.spin{display:inline-block;width:12px;height:12px;border:2px solid var(--line2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-1px;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}
button.link{background:none;border:0;padding:0;color:var(--dim);text-decoration:underline;cursor:pointer;font:inherit;font-size:12px}
.btn:disabled{opacity:.45;cursor:not-allowed}

/* token chart (frontend/chart.js) */
.chartpanel{padding:10px 12px 8px}
.kchart{position:relative}
.kc-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:2px 2px 10px;border-bottom:1px solid var(--line);margin-bottom:6px}
.kc-bar button{background:none;border:0;color:var(--dim);font:500 12.5px var(--sans);padding:5px 7px;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.kc-bar button:hover{color:var(--ink);background:var(--field)}
.kc-bar button.on{color:var(--accent);background:var(--accent-soft)}
.kc-group{display:flex;gap:1px}
.kc-toggle{display:flex;align-items:center;gap:0;color:var(--faint);font-size:12px}
.kc-toggle button.on{background:none;color:var(--accent)}
.kc-sep{width:1px;height:18px;background:var(--line2);margin:0 4px}
.kc-grow{flex:1}
.kc-drop{position:relative}
.kc-indbtn .ic{width:14px;height:14px}
.kc-count{color:var(--accent)}
.kc-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:20;min-width:200px;padding:6px;border:1px solid var(--line2);border-radius:10px;background:var(--panel2,#0c1114);box-shadow:0 12px 32px rgba(0,0,0,.5)}
.kc-menu .kc-item{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:9px;margin:0;padding:7px 9px;border-radius:7px;font-size:13px;color:var(--ink2);cursor:pointer;white-space:nowrap;text-align:left}
.kc-menu .kc-item input{width:auto;margin:0;padding:0;height:auto;flex:none}
.kc-item:hover{background:var(--field)}
.kc-item input{accent-color:#f4f3f8}
.kc-stage{position:relative}
.kc-canvas{position:absolute;inset:0}
.kc-stage{min-height:300px}
.kc-legend{position:absolute;left:6px;top:4px;z-index:5;pointer-events:none;font-size:12px;color:var(--dim);display:flex;flex-direction:column;gap:3px}
.kc-title{color:var(--ink2);font-weight:500}
.kc-ohlc{display:flex;gap:10px;flex-wrap:wrap}
.kc-ohlc b,.kc-vol b{font-weight:500;font-family:var(--mono);font-size:11.5px}
.kc-ind{display:flex;gap:10px;flex-wrap:wrap;font-family:var(--mono);font-size:11px}
.kc-legend .up{color:var(--up)} .kc-legend .down{color:var(--down)}
.kc-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:13px;margin:0;z-index:4}
.kc-empty.hidden{display:none}
@media (max-width:640px){.kc-sep{display:none}.kc-grow{display:none}.kc-bar button{padding:5px 6px}}

/* ---------- accounts & social (spec/10 R6-R8) ---------- */
.ic-mail{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Crect x=%273%27 y=%275%27 width=%2718%27 height=%2714%27 rx=%272.5%27/%3E%3Cpath d=%27M4 7l8 6 8-6%27/%3E%3C/svg%3E")}
.ic-user{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%278.5%27 r=%273.8%27/%3E%3Cpath d=%27M4.5 20c1.2-3.6 4-5.4 7.5-5.4s6.3 1.8 7.5 5.4%27/%3E%3C/svg%3E")}
.ic-edit{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M4 20h4L19 9l-4-4L4 16z%27/%3E%3Cpath d=%27M13.5 6.5l4 4%27/%3E%3C/svg%3E")}
.ic-out{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M15 4h3.5A1.5 1.5 0 0 1 20 5.5v13a1.5 1.5 0 0 1-1.5 1.5H15%27/%3E%3Cpath d=%27M10 16l-4-4 4-4M6 12h10%27/%3E%3C/svg%3E")}
.ic-heart{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M12 20s-7.5-4.4-7.5-10A4.2 4.2 0 0 1 12 7.5 4.2 4.2 0 0 1 19.5 10c0 5.6-7.5 10-7.5 10z%27/%3E%3C/svg%3E")}
.ic-reply{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M20 15.5a2.5 2.5 0 0 1-2.5 2.5H9l-5 3.5V6.5A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5z%27/%3E%3C/svg%3E")}
.ic-trophy{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M8 4h8v5a4 4 0 0 1-8 0z%27/%3E%3Cpath d=%27M8 6H4.5a3 3 0 0 0 3.5 4M16 6h3.5a3 3 0 0 1-3.5 4M12 13v4M8.5 20h7%27/%3E%3C/svg%3E")}
.ic-apple{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Cpath d=%27M16.4 12.6c0-2.6 2.1-3.8 2.2-3.9-1.2-1.8-3.1-2-3.7-2-1.6-.2-3.1.9-3.9.9s-2-.9-3.4-.9c-1.7 0-3.3 1-4.2 2.6-1.8 3.1-.5 7.7 1.3 10.2.9 1.2 1.9 2.6 3.2 2.6 1.3-.1 1.8-.8 3.3-.8s2 .8 3.4.8c1.4 0 2.3-1.3 3.1-2.5 1-1.4 1.4-2.8 1.4-2.9 0 0-2.7-1-2.7-4.1zM13.9 5c.7-.9 1.2-2 1-3.2-1 0-2.2.7-2.9 1.5-.6.7-1.2 1.9-1 3.1 1.1.1 2.2-.6 2.9-1.4z%27/%3E%3C/svg%3E")}
.ic-github{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Cpath d=%27M12 .5a11.5 11.5 0 0 0-3.64 22.41c.58.1.79-.25.79-.56v-2c-3.2.7-3.87-1.37-3.87-1.37-.53-1.33-1.28-1.69-1.28-1.69-1.05-.72.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.03 1.76 2.7 1.25 3.36.96.1-.75.4-1.25.73-1.54-2.56-.29-5.25-1.28-5.25-5.69 0-1.26.45-2.28 1.19-3.09-.12-.29-.52-1.46.11-3.05 0 0 .97-.31 3.17 1.18a11 11 0 0 1 5.77 0c2.2-1.49 3.17-1.18 3.17-1.18.63 1.59.23 2.76.11 3.05.74.81 1.19 1.83 1.19 3.09 0 4.42-2.69 5.39-5.26 5.68.41.36.78 1.06.78 2.14v3.17c0 .31.21.67.8.56A11.5 11.5 0 0 0 12 .5z%27/%3E%3C/svg%3E")}
.ic-google{background:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 48 48%27%3E%3Cpath fill=%27%23FFC107%27 d=%27M43.6 20.5H42V20H24v8h11.3C33.7 32.7 29.2 36 24 36c-6.6 0-12-5.4-12-12s5.4-12 12-12c3.1 0 5.8 1.2 7.9 3l5.7-5.7C34 6.1 29.3 4 24 4 12.9 4 4 12.9 4 24s8.9 20 20 20 20-8.9 20-20c0-1.3-.1-2.4-.4-3.5z%27/%3E%3Cpath fill=%27%23FF3D00%27 d=%27M6.3 14.7l6.6 4.8C14.7 15.1 19 12 24 12c3.1 0 5.8 1.2 7.9 3l5.7-5.7C34 6.1 29.3 4 24 4 16.3 4 9.7 8.3 6.3 14.7z%27/%3E%3Cpath fill=%27%234CAF50%27 d=%27M24 44c5.2 0 9.9-2 13.4-5.2l-6.2-5.2C29.2 35.1 26.7 36 24 36c-5.2 0-9.6-3.3-11.3-8l-6.5 5C9.5 39.6 16.2 44 24 44z%27/%3E%3Cpath fill=%27%231976D2%27 d=%27M43.6 20.5H42V20H24v8h11.3c-.8 2.2-2.2 4.2-4.1 5.6l6.2 5.2C37 39.2 44 34 44 24c0-1.3-.1-2.4-.4-3.5z%27/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:none;mask:none}
body.modal-open{overflow:hidden}
.modal-back{position:fixed;inset:0;z-index:100;background:rgba(10,9,14,.72);backdrop-filter:blur(6px);display:grid;place-items:center;padding:16px;overflow:auto;animation:fadein .15s}
@keyframes fadein{from{opacity:0}}
.modal{position:relative;width:min(420px,100%);background:linear-gradient(180deg,#10171a,#0a0f11);border:1px solid var(--line2);border-radius:22px;padding:30px 26px 22px;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.modal-x{position:absolute;right:14px;top:12px;background:none;border:0;color:var(--dim);font-size:24px;line-height:1;cursor:pointer;padding:4px 8px}
.modal-x:hover{color:var(--ink)}
.modal h2{font-size:22px;text-align:center;margin:12px 0 2px}
.modal .sub{text-align:center}
.modal-logo{display:block;margin:0 auto;width:44px;height:44px;border-radius:12px}
.signin{display:flex;flex-direction:column;gap:10px}
.signin .sub{margin-bottom:8px}
.btn.sso{width:100%;padding:12px;font-weight:600;border-radius:12px}
.btn.sso.google{background:#fff;color:#111;border-color:#fff}
.btn.sso.google:hover:not(:disabled){background:#eef1f0}
.btn.sso:disabled{opacity:.45;cursor:not-allowed}
.btn.sso .ic{width:18px;height:18px}
.social-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.emailrow{display:flex;align-items:center;gap:8px;border:1px solid var(--line2);border-radius:12px;background:var(--field);padding:4px 4px 4px 12px}
.emailrow .ic{color:var(--faint)}
.emailrow input{flex:1;border:0;background:none;box-shadow:none;padding:8px 0;min-width:0}
.emailrow input:focus{box-shadow:none}
.perk{display:flex;flex-direction:column;gap:3px;border:1px solid var(--line2);border-radius:12px;padding:12px 14px;background:rgba(244,243,248,.05);font-size:12.5px;color:var(--dim);text-align:center}
.perk b{color:var(--ink);display:inline-flex;gap:7px;align-items:center;justify-content:center;font-size:13px}
.perk .ic{color:var(--accent)}
.divider{display:flex;align-items:center;gap:10px;color:var(--faint);font-size:12px;margin:6px 0 2px}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line2)}
.wallets{display:flex;flex-direction:column;gap:8px}
.walletrow{display:flex;align-items:center;gap:12px;width:100%;border:1px solid var(--line2);background:rgba(255,255,255,.02);color:var(--ink);border-radius:12px;padding:11px 14px;cursor:pointer;font:600 14px var(--sans);text-align:left}
.walletrow:hover:not(:disabled){border-color:var(--line3);background:rgba(255,255,255,.045)}
.walletrow:disabled{opacity:.6;cursor:not-allowed}
.walletrow img,.walletrow .wl{width:28px;height:28px;border-radius:8px;flex:none}
.walletrow em{margin-left:auto;font-style:normal;font-size:10.5px;letter-spacing:.04em;padding:3px 8px;border-radius:999px;font-weight:600}
.walletrow .detected{color:#74e08c;background:rgba(116,224,140,.1);border:1px solid rgba(116,224,140,.25)}
.walletrow .soon{color:var(--dim);border:1px solid var(--line2)}
.wl{display:inline-block;background:#222}
.wl-phantom{background:linear-gradient(135deg,#ab9ff2,#534bb1)}
.wl-solflare{background:linear-gradient(135deg,#ffc10b,#fb3f2e)}
.wl-backpack{background:linear-gradient(135deg,#e33e3f,#a02727)}
.wl-metamask{background:linear-gradient(135deg,#f6851b,#e2761b)}
.wl-burner{background:repeating-linear-gradient(45deg,#e8c46b 0 5px,#1a1f1c 5px 10px)}
.wl-generic{background:linear-gradient(135deg,#3b4a47,#1c2523)}
.nowallet{text-align:center}
.onboard form{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.handle{display:flex;align-items:center;border:1px solid var(--line2);border-radius:9px;background:var(--field);margin-top:6px}
.handle span{padding-left:12px;color:var(--faint)}
.handle input{border:0;background:none;box-shadow:none!important;flex:1;margin:0}
.perks{list-style:none;margin:4px 0;padding:0;display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--ink2)}
.perks li{display:flex;gap:9px;align-items:flex-start}
.perks .ic{color:var(--accent);margin-top:2px}
.onboard .skip{align-self:center}
.onboard .agree{display:flex;gap:9px;align-items:flex-start;font-size:13px;color:var(--ink2);cursor:pointer}
.onboard .agree input{margin:2px 0 0;flex:none;accent-color:var(--accent)}
.onboard .agree a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}
.avatar-edit{display:flex;align-items:center;gap:14px}
/* avatars and people */
/* The letter of a default picture is centred BOTH ways whichever box model an outer rule leaves this in: a rule
   that turned an avatar into a flex column (.lb-who > span did, before it was narrowed) keeps align-items for the
   cross axis and drops justify-items entirely, which pushed every leaderboard letter to the top of its circle
   (measured 2026-09-25: 5 px above, 19 px below in a 33 px avatar). justify-content pins the main axis too. */
.avatar{display:inline-grid;place-items:center;justify-content:center;align-content:center;flex:none;width:32px;height:32px;border-radius:50%;overflow:hidden;color:#fff;font-weight:700;font-size:13px;background:#1b2522;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.avatar.sm{width:22px;height:22px;font-size:10px}
.avatar.md{width:36px;height:36px;font-size:14px}
.avatar.lg{width:64px;height:64px;font-size:22px}
.avatar.xl{width:88px;height:88px;font-size:30px;box-shadow:0 0 0 4px var(--bg),0 0 0 5px rgba(255,255,255,.08)}
.userchip{display:inline-flex;align-items:center;gap:7px;color:var(--ink);min-width:0;font-weight:600}
a.userchip:hover .uname{text-decoration:underline}
.uname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uhandle{color:var(--dim);font-weight:400;font-size:.9em;margin-left:4px}
.userbtn{padding:6px 12px 6px 6px;gap:8px}
.userbtn .avatar{width:26px;height:26px}
.menu.acct{top:calc(100% + 8px);right:0;z-index:50}
.count{color:var(--dim);font-size:12px}
/* clauses */
.clauses{display:flex;flex-direction:column}
.clause{display:flex;gap:12px;padding:16px 2px;border-bottom:1px solid var(--line)}
.clause:last-child{border-bottom:0}
.c-rail{display:flex;flex-direction:column;align-items:center}
.c-line{flex:1;width:1px;background:var(--line2);margin-top:8px}
.c-main{flex:1;min-width:0}
.c-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.c-head .grow,.c-foot .grow,.composer-row .grow{flex:1}
.ctoken{display:inline-flex;align-items:center;gap:6px;padding:2px 8px 2px 3px;border:1px solid var(--line2);border-radius:999px;color:var(--ink2);font-size:12px}
.ctoken img{width:18px;height:18px;border-radius:50%;object-fit:cover}
.c-body{margin:6px 0 10px;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink);font-size:14.5px}
.posbox{display:grid;grid-template-columns:1fr 1fr;gap:10px;border:1px solid var(--line2);border-radius:12px;padding:12px 14px;background:rgba(255,255,255,.018);max-width:520px}
.posbox > div{display:flex;flex-direction:column;gap:1px}
.posbox .pos-r{text-align:right;align-items:flex-end}
.posbox b{font-size:16px}
.posbox .pill{font-style:normal;font-size:11px;padding:1px 6px;border-radius:6px;margin-left:4px;vertical-align:2px}
.posbox .pill.up{background:rgba(50,213,131,.12)} .posbox .pill.down{background:rgba(240,98,93,.14)}
.c-foot{display:flex;align-items:center;gap:14px;margin-top:10px}
.iconbtn{display:inline-flex;align-items:center;gap:6px;background:none;border:0;color:var(--dim);cursor:pointer;font:500 12.5px var(--sans);padding:4px 2px}
.iconbtn:hover{color:var(--ink)}
.iconbtn.c-like.on{color:#ff6b8b}
.iconbtn .ic{width:15px;height:15px}
.c-del{margin-left:auto;font-size:12px}
.c-more{margin-top:8px}
.c-updates{margin-top:6px;border-left:1px dashed var(--line2);padding-left:10px}
.c-thread{margin-top:10px;display:flex;flex-direction:column;gap:10px}
.reply{display:flex;gap:9px}
.reply .c-body{margin:2px 0 0;font-size:13.5px}
.replyform{display:flex;gap:8px}
.replyform input{flex:1;padding:8px 10px}
.composer{display:flex;flex-direction:column;gap:8px;padding:6px 0 12px;border-bottom:1px solid var(--line)}
.composer textarea{resize:vertical;min-height:58px}
.composer-row{display:flex;align-items:center;gap:10px}
.clause-sort{display:flex;gap:4px;margin:10px 0 0}
.clause-sort .tab{padding:5px 10px;font-size:12.5px}
#t-clauses{margin-top:12px}
.scrolly{max-height:560px;overflow:auto}
#c-creator{display:inline-flex;align-items:center;gap:6px}
#c-creator .sub{margin:0}
/* profile v2 */
.profilepage.v2{display:block}
.profile-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px;align-items:start}
.profile-grid > *{min-width:0}
.p-col > .panel+.panel,.p-side > .panel+.panel{margin-top:18px}
.p-card{padding:0;overflow:hidden}
.p-banner{height:120px;border-bottom:1px solid var(--line)}
.p-top{display:flex;justify-content:space-between;align-items:flex-end;padding:0 22px;margin-top:-44px;gap:12px;flex-wrap:wrap}
.p-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-bottom:6px}
.chipaddr{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line2);border-radius:8px;padding:3px 4px 3px 9px;background:var(--field)}
.p-card h1{font-size:24px;padding:10px 22px 0;margin:0}
.p-meta{display:flex;gap:16px;flex-wrap:wrap;padding:6px 22px 0;font-size:13px;color:var(--ink2)}
.p-meta .ic{width:13px;height:13px;vertical-align:-2px}
.p-bio{padding:8px 22px 0;margin:0;color:var(--ink2);white-space:pre-wrap}
.p-bio:empty{display:none}
.p-card > .sub{padding:8px 22px 0}
.p-card::after{content:"";display:block;height:20px}
.p-pnl-head{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}
.bigmoney{font-size:34px;font-weight:700;letter-spacing:-.02em;line-height:1.1}
.caps{text-transform:uppercase;letter-spacing:.08em;font-size:11px}
.p-profit-line{margin-top:6px;font-size:13px}
.p-rank{margin-top:4px;font-size:13px;color:var(--ink2)}
.seg.small .tab{padding:5px 10px;font-size:12px}
.seg.small{align-self:flex-start}
.p-spark{height:70px;margin:14px 0 4px}
.p-spark svg{width:100%;height:100%;display:block}
.p-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 12px;margin-top:12px}
.p-stats > div{display:flex;flex-direction:column;gap:2px}
.p-stats b{font-size:15px}
.tokcell{display:inline-flex;align-items:center;gap:9px;color:var(--ink)}
.tokcell .av.sm{width:28px;height:28px;border-radius:50%}
.toptrades{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.tt{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}
.tt:last-child{border-bottom:0}
.tt .r{text-align:right}
.ttrank{color:var(--faint);font-size:12px;width:22px}
/* leaderboard */
.lbpage{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr) minmax(300px,380px);gap:14px;padding:22px 20px 70px;align-items:start}
.lb-col{min-width:0}
.lb-head{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}
.lb-tabs{display:flex;gap:16px}
.lb-tabs button{background:none;border:0;color:var(--faint);font:700 20px var(--sans);cursor:pointer;padding:0}
.lb-tabs button.on{color:var(--ink)}
.lb-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.lb-row{display:flex;align-items:center;gap:12px;padding:10px 10px;border-radius:12px;cursor:pointer}
.lb-row:hover{background:rgba(255,255,255,.03)}
.lb-row.on{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line)}
.lb-row .rank{width:24px;text-align:center;color:var(--dim);font-size:13px;flex:none}
.lb-who{display:flex;flex-direction:column;min-width:0;flex:1}
.lb-who b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-who .uhandle{margin:0;font-size:12px}
.lb-val{margin-left:auto;text-align:right;display:flex;flex-direction:column;align-items:flex-end}
.lb-me{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line2);border-radius:14px;margin-bottom:10px;background:rgba(255,255,255,.02)}
.lb-foot{margin-top:12px}
.lb-rows.compact .lb-row{padding:7px 4px;cursor:default}
.lb-preview{padding:0;overflow:hidden}
.pv-banner{height:92px;background:radial-gradient(120% 140% at 30% 0%,rgba(244,243,248,.2),transparent 60%),linear-gradient(120deg,#16151d,#0a0f12);border-bottom:1px solid var(--line)}
.pv-top{display:flex;justify-content:space-between;align-items:flex-end;padding:0 20px;margin-top:-44px}
.pv-actions{display:flex;gap:8px;padding-bottom:6px}
.pv-name{padding:10px 20px 0;margin:0;font-size:20px}
.lb-preview .p-meta{padding:4px 20px 0}
.lb-preview .p-bio{padding:8px 20px 0}
.panel.inset{margin:16px 20px 0;padding:16px;background:rgba(255,255,255,.015)}
.p-stats.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.pv-h{margin:18px 20px 4px;font-size:14px}
.lb-preview .tt{margin:0 20px}
.lb-preview .empty-row{padding:60px 20px}
.lb-preview::after{content:"";display:block;height:16px}
.lb-trades h2{font-size:20px;margin:0}
.tradecard{position:relative;border:1px solid var(--line2);border-radius:14px;padding:14px 14px 12px;background:linear-gradient(180deg,rgba(30,28,39,.92),rgba(26,24,34,.92))}
.ttbadge{position:absolute;top:-9px;left:10px;font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;background:var(--panel2);border:1px solid var(--line2);color:var(--ink2)}
.tradecard:nth-child(1) .ttbadge{background:#d4a017;color:#1a1204;border-color:#d4a017}
.tc-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.tc-top .r{display:flex;flex-direction:column;align-items:flex-end}
.tc-bot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;margin-top:10px}
.tc-bot b{color:var(--ink2);font-weight:600}
.tc-who{margin-top:8px;font-size:12.5px}
/* clauses page */
.clausepage{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:14px;padding:22px 20px 70px;align-items:start}
.clausepage > *{min-width:0}
.cl-title h1{font-size:30px;margin:0}
.cl-title .sub{max-width:600px;margin-bottom:16px}
#cl-feed{display:inline-flex;margin-bottom:8px}
.cl-side > .panel+.panel{margin-top:18px}
@media (max-width:1180px){
  .lbpage{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .lb-trades{grid-column:1/-1}
  .toptrades.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
}
@media (max-width:900px){
  .profile-grid,.clausepage{grid-template-columns:minmax(0,1fr)}
  .lbpage{grid-template-columns:minmax(0,1fr);padding:18px 16px 60px}
  .clausepage{padding:18px 16px 60px}
  .p-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .bigmoney{font-size:28px}
}

.p-meta .sub{margin:0}
/* one account can act from several wallets: each is listed, and the one this browser signed in with is marked */
.walletchip{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono,ui-monospace,monospace);font-size:12px}
.walletchip.on{color:var(--ink)}
.walletchip .here{font-family:inherit;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  color:var(--bg,#16151d);background:var(--accent);border-radius:4px;padding:1px 5px}
.walletchip .made{font-family:inherit;font-size:10px;font-weight:600;letter-spacing:.02em;
  color:var(--dim);border:1px solid var(--line);border-radius:4px;padding:1px 5px}
.walletlink{font-size:12px}
.menu .menuhead{display:flex;flex-direction:column;gap:2px;padding:9px 12px;border-bottom:1px solid var(--line);max-width:240px}
.menu .menuhead b{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.menu .menuhead .caps{letter-spacing:.06em;text-transform:uppercase;font-size:10px}
.ctoken .av,.ctoken > span:first-child{width:18px;height:18px;border-radius:50%;font-size:8px;display:inline-grid;place-items:center;overflow:hidden;background:#272433}
.posbox .pos-r b{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap;white-space:nowrap}
.btn.sso{min-height:46px}
.btn.sso:disabled,.btn.sso.google:disabled{background:rgba(255,255,255,.025);color:var(--faint);border-color:var(--line2);opacity:1;cursor:not-allowed}
.btn.sso:disabled .ic-google{filter:grayscale(1);opacity:.5}
.emailrow:has(input:disabled){opacity:.6}
.soonchip{font-style:normal;font-size:10px;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line2);border-radius:999px;padding:1px 7px;color:var(--dim)}
.bycreator{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--dim);margin-top:2px}
.bycreator .avatar.sm{width:16px;height:16px;font-size:8px}
.ic-eye{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.8%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z%27/%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%273%27/%3E%3C/svg%3E")}
.viewers{display:inline-flex;align-items:center;gap:5px;color:var(--dim);font-size:12.5px}
.viewers .ic{width:14px;height:14px}
.viewers b{color:var(--ink2)}
.c-views{cursor:default}
.composer.locked textarea{opacity:.55}
.composer .gate{color:var(--warn)}
/* char clubs (spec/11 G6) */
.clubpill{display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;letter-spacing:.03em;padding:2px 8px;border-radius:999px;border:1px solid;white-space:nowrap}
.clubpill.c6{color:#9fd2ff;border-color:rgba(159,210,255,.4);background:rgba(159,210,255,.08)}
.clubpill.c7{color:#d4b8ff;border-color:rgba(212,184,255,.45);background:rgba(212,184,255,.1)}
.clubpill.c8{color:#ffd76a;border-color:rgba(255,215,106,.55);background:linear-gradient(90deg,rgba(255,215,106,.16),rgba(255,160,60,.1));box-shadow:0 0 14px rgba(255,200,80,.18)}
.clubspage{padding:22px 20px 70px}
.clubs-title h1{font-size:30px;margin:0}
.club-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.club-head .clubpill{font-size:13px;padding:4px 12px}
.club-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.clubcard{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:16px;border:1px solid var(--line2);background:linear-gradient(180deg,rgba(30,28,39,.92),rgba(26,24,34,.92));color:var(--ink)}
.club.c8 .clubcard{border-color:rgba(255,215,106,.35);box-shadow:0 0 0 1px rgba(255,215,106,.06),0 10px 40px -18px rgba(255,190,70,.35)}
.club.c7 .clubcard{border-color:rgba(212,184,255,.3)}
.clubcard:hover{transform:translateY(-1px)}
.cc-top{display:flex;align-items:center;gap:10px}
.cc-top .av{width:48px;height:48px;border-radius:12px;overflow:hidden}
.cc-mcap{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end}
.cc-addr{font-size:12.5px;overflow-wrap:anywhere;padding:9px 10px;border-radius:9px;background:var(--field);border:1px solid var(--line)}
.cc-foot{display:flex;align-items:center;gap:10px;justify-content:space-between}
@media (max-width:640px){.clubspage{padding:18px 16px 60px}.club-grid{grid-template-columns:minmax(0,1fr)}}
.opspage{padding:22px 20px 70px}
.opspage h1{font-size:28px;margin:0}
.opspage .panel{margin-top:18px}
.payfind{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.payfind .input{flex:1;min-width:240px}
#pay-result h4{margin:16px 0 6px;font-size:13px;color:var(--dim)}

/* ---------- create (UX/concepts/10-bump.html): numbered sections, chain cards, the grind drawn ---------- */
.create-title h1{font-size:clamp(24px,2.6vw,30px)}
#step-1{counter-reset:fld}
#step-1 .fld::before{counter-increment:fld;content:counter(fld) " · ";color:var(--dim)}
.fld,.fldgroup{font:500 10.5px/1.4 var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink2)}
.fld > .opt,.fld .opt{font:400 12.5px var(--sans);letter-spacing:0;text-transform:none}
.fldgroup{margin:18px 0 -4px}
.fld > .fgrid,.fld > .picks,.fld > .toggle,.fld > .dropzone,.fld > .hint,.fld > .pairpick{font:15px/1.5 var(--sans);letter-spacing:0;text-transform:none}
.field.fld{margin-top:18px}
.picks{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin-top:9px}
.opt-btn.pick{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:0;padding:13px;border-radius:12px;
  background:var(--s1);border:1px solid var(--line);text-align:left;color:var(--ink);text-transform:none;letter-spacing:0}
.opt-btn.pick:hover:not(:disabled){background:var(--s2);border-color:var(--line2)}
.opt-btn.pick.on{border-color:var(--c);background:var(--s2);box-shadow:inset 0 0 0 1px var(--c)}
.pick .n{display:flex;align-items:center;gap:8px;font:700 15px/1.1 var(--disp);letter-spacing:-.03em}
.pick .n .ic{width:18px;height:18px}
.pick .d{display:block;font:500 11px var(--mono);color:var(--dim);margin-top:7px}
/* a tile's detail line wraps rather than running out of its tile (the Grind page's narrower tiles cut "case-sensitive"
   and the Robinhood Chain name; UI review 2026-09-21) */
.opt-btn.pick{white-space:normal}
.hint{font:14px/1.5 var(--sans);color:var(--dim);margin:10px 0 0;max-width:72ch;text-transform:none;letter-spacing:0}
.hint b{color:var(--ink2);font-weight:600}
.field.links .fgrid{margin-top:9px}
.grindvis:empty{display:none}
.grindvis{background:var(--sunk);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-top:14px}
.grindvis .ghd{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 16px;border-bottom:1px solid var(--line);background:var(--s1)}
.grindvis .gbody{padding:26px 18px;text-align:center}
.grindvis .big{font:400 clamp(14px,2.1vw,24px)/1.6 var(--mono);overflow-wrap:anywhere;letter-spacing:-.02em;color:var(--faint)}
.grindvis .big .hit,.job .hit{color:var(--cc,var(--amber));font-weight:700;text-shadow:0 0 18px color-mix(in srgb,var(--cc,#f4f3f8) 40%,transparent)}
.grindvis .gft{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}
.grindvis .gft div{padding:12px 16px;border-right:1px solid var(--line);min-width:0}
.grindvis .gft div:last-child{border-right:0}
.grindvis .gft b{display:block;font:700 17px/1.1 var(--disp);letter-spacing:-.03em;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ladder{display:grid;gap:3px;margin-top:10px}
.lrow{display:grid;grid-template-columns:90px 1fr auto;gap:10px;align-items:center;padding:9px 12px;border-radius:10px;font-size:13.5px}
.lrow .c{font-weight:600}
.lrow .w{font:12px var(--mono);color:var(--dim)}
.lrow .p{text-align:right;font-weight:700}
.lrow.on{background:var(--amber-soft);box-shadow:inset 3px 0 0 var(--amber)}
.create-side .panel + .panel{margin-top:12px}
.card.preview{max-width:none}
@media(max-width:1180px) and (min-width:1081px){.create-grid{grid-template-columns:1fr}}

/* ---------- grind (was Addresses) ---------- */
.secthd{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin:0 0 16px}
.secthd h1{font-size:clamp(24px,2.6vw,30px)}
.addrpage.grindpage{display:block}
.grindgrid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:start}
.grindmain > .panel + .panel{margin-top:12px}
.three{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:12px}
.three .panel{margin:0}
.three .hint{margin:8px 0 0}
.addrlist{margin-top:10px;display:grid;gap:8px}
.addritem.job{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:16px 18px;
  background:var(--sunk);border:1px solid var(--line);border-radius:13px;box-shadow:inset 3px 0 0 var(--cc)}
.job .jmain{min-width:0;display:grid;gap:8px}
.job .jtop{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.job .pat{font:800 26px/1 var(--disp);letter-spacing:-.04em}
.job .pat .ell{color:var(--faint);font-weight:500}
.job .lab .ic{width:12px;height:12px;vertical-align:-1px}
.job .jaddr{font-size:13px;color:var(--ink2);overflow-wrap:anywhere;background:none;padding:0}
.job .actions{display:flex;gap:8px}

/* ---------- portfolio (was Profile), round 2: fomo.family's page (user, 2026-09-16) ----------
   No box around the identity; three columns so the width is filled with content instead of stretched gaps; one left
   edge; sentence-case labels; the headline number neutral with its cents quiet; colour only on change. */
.bannertools{position:absolute;right:12px;bottom:12px;display:flex;gap:6px}
.bannerbtn{background:rgba(12,11,17,.72);border-color:rgba(255,255,255,.12);backdrop-filter:blur(6px);cursor:pointer}
/* the list: one line per token, the address run under its name -- the artifact's cards, compacted */
.tbl.compact{width:100%;border-collapse:collapse}
.tbl.compact th{font:500 10px var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--faint);padding:10px 8px;border-bottom:1px solid var(--line);text-align:left}
.tbl.compact th.r,.tbl.compact td.r{text-align:right}
.tbl.compact td{padding:9px 8px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:middle}
.tbl.compact tbody tr:hover{background:var(--s2)}
.tbl.compact tbody tr:last-child td{border-bottom:0}
.tokcell{display:flex;align-items:center;gap:10px;min-width:0;color:var(--ink)}
.tokcell .av.sm{width:34px;height:34px;border-radius:10px;overflow:hidden;flex:none}
.tokname{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:6px;min-width:0}
.tokname b{font-weight:600}
.tokaddr{flex-basis:100%;font-size:11.5px;color:var(--faint)}
.tokaddr .hit{color:var(--ink2)}
.pf2{padding:16px 20px 60px}
.pf-shell{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;align-items:start}
.pf-shell > *{min-width:0}
.pf-head .p-banner{position:relative;height:128px;border-radius:14px;border:1px solid var(--line)}
.pf-head .p-top{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;padding:0 4px;margin-top:-34px;position:relative;z-index:1}
.pf-head #p-avatar .avatar.xl{width:92px;height:92px;font-size:30px;box-shadow:0 0 0 4px var(--bg)}
.pf-id{min-width:0;padding-bottom:6px}
.pf-id h1{margin:0;font:700 22px/1.2 var(--disp);letter-spacing:-.02em}
.pf-handle{color:var(--dim);font-size:14px}
.pf-counts{display:flex;margin-left:auto;padding-bottom:6px}
.pf-counts a{display:flex;flex-direction:column;align-items:center;padding:0 16px;font-size:12.5px;color:var(--dim)}
.pf-counts a + a{border-left:1px solid var(--line)}
.pf-counts b{font:700 18px/1.2 var(--disp);color:var(--ink)}
.pf-head .p-actions{display:flex;gap:8px;padding-bottom:8px}
.pf-facts{display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap;margin:10px 4px 0;font-size:13px;color:var(--dim)}
.pf-facts .ic{width:13px;height:13px;vertical-align:-2px;margin-right:4px}
.pf-facts .walletchip{background:none;border:0;padding:0;color:var(--dim);cursor:pointer}
.pf-facts .walletchip:hover,.pf-facts .walletchip.on{color:var(--ink2)}
.pf-facts .walletchip .here{background:none;color:var(--dim);border:1px solid var(--line2);border-radius:5px;padding:0 4px;margin-left:5px}
.pf-facts .walletchip .ic{filter:grayscale(1);opacity:.7}
.pf-facts .walletchip .made{color:var(--faint);margin-left:5px;font-weight:500}
.pf-head .p-bio{margin:8px 4px 0;padding:0;color:var(--ink2);white-space:pre-wrap}
.pf-head .p-bio:empty,.pf-head .status:empty{display:none}
.pf-head > .sub,.pf-head > .status{margin:8px 4px 0}
.pf-badges{display:flex;gap:10px;flex-wrap:wrap;margin:14px 4px 0}
.pf-badges:empty{display:none}
.pf-badge{display:flex;flex-direction:column;gap:6px;padding:9px 12px;border-radius:12px;background:var(--s1);color:var(--ink)}
.pf-badge:hover{background:var(--s2)}
.pf-badge .rk{align-self:flex-start;font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:5px;background:var(--s3);color:var(--ink2)}
.pf-badge .rk.m1{background:color-mix(in srgb,var(--gold) 16%,transparent);color:var(--gold)}
.pf-badge .rk.m2{background:color-mix(in srgb,var(--silver) 14%,transparent);color:var(--silver)}
.pf-badge .rk.m3{background:color-mix(in srgb,var(--bronze) 16%,transparent);color:var(--bronze)}
.pf-badge .bl{display:flex;align-items:center;gap:7px;font-size:14px}
.pf-badge .av.sm{width:20px;height:20px;border-radius:50%;overflow:hidden}
.pf-badge .sub{font-size:12px}

.pf-cols{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:28px;margin-top:22px;padding-top:22px;border-top:1px solid var(--line);align-items:start}
.pf-cols > *{min-width:0}
.pf-charthd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.pf-big{font:700 clamp(30px,2.6vw,38px)/1.05 var(--disp);letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}
.pf-big .cents{color:var(--dim)}
.pf-delta{margin-top:4px;font-size:13.5px;min-height:20px;font-variant-numeric:tabular-nums}
.pf-delta .up,.pf-stats .up{color:var(--up)} .pf-delta .down,.pf-stats .down{color:var(--down)}
.seg.small{border:0;background:var(--s1);border-radius:10px}
.seg.small .tab{padding:5px 10px;font-size:12px;border-radius:7px}
.pf-plot{position:relative;height:220px;margin:14px -2px 0;touch-action:pan-y;cursor:crosshair}
.pf-plot svg{display:block;overflow:visible}
.pf-plot .pf-line{fill:none;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.pf-plot .pf-future{fill:none;stroke:var(--line3);stroke-width:2;opacity:.8}
.pf-plot .up .pf-line{stroke:var(--up)} .pf-plot .down .pf-line{stroke:var(--down)}
.pf-plot .up .pf-dot{fill:var(--up)} .pf-plot .down .pf-dot{fill:var(--down)}
.pf-plot .pf-area{fill:url(#pf-fill);stroke:none}
.pf-plot .up .f0{stop-color:var(--up);stop-opacity:.16} .pf-plot .down .f0{stop-color:var(--down);stop-opacity:.16}
.pf-plot .f1{stop-color:var(--bg);stop-opacity:0}
.pf-plot .pf-zero{stroke:var(--line);stroke-dasharray:2 4}
.pf-plot .pf-guide{stroke:var(--line3);stroke-dasharray:2 3}
.pf-plot .pf-dot{stroke:var(--bg);stroke-width:2.5}
.pf-plot .hidden{display:none}
.pf-noplot{display:grid;place-items:center;height:100%;margin:0}
.pf-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-top:16px}
.pf-stats > div{display:flex;flex-direction:column;gap:2px;min-width:0}
.pf-stats span{font-size:12px;color:var(--dim)}
.pf-stats b{font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.pf-stats small{color:var(--dim);font-weight:400;font-size:12px}

.pf-sect{margin-top:0}
.pf-colL .pf-sect{margin-top:26px}
.pf-secthd{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:34px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.pf-secthd h3{margin:0;font:600 15px var(--sans)}
.pf-secthd h3 .n{color:var(--faint);font-weight:500;margin-left:4px}
.pf-toggle{display:flex;gap:2px;padding:2px;border-radius:9px;background:var(--s1)}
.pf-toggle button{border:0;background:none;color:var(--dim);font:500 12.5px var(--sans);padding:4px 10px;border-radius:7px;cursor:pointer}
.pf-toggle button.on{background:var(--s3);color:var(--ink)}
.pf-tabs{display:flex;gap:2px;flex-wrap:wrap}
.pf-tabs .tab{padding:6px 10px;font-size:13.5px}
.pf-tabs .tab.on{background:none;color:var(--ink)}
.pf-rows{display:flex;flex-direction:column}
.pf-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;padding:10px 6px;border-bottom:1px solid rgba(255,255,255,.035);border-radius:8px}
.pf-row:hover{background:var(--s1)}
.pf-row.pf-pos{grid-template-columns:minmax(0,1fr) auto auto auto}
.pf-share{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;border:1px solid transparent;background:none;color:var(--dim);cursor:pointer}
.pf-share:hover,.pf-row:hover .pf-share{color:var(--ink);border-color:var(--line);background:var(--s2)}
.pf-row .tokcell .av.sm{width:36px;height:36px;border-radius:50%}
.pf-row .tokname{flex-direction:column;align-items:flex-start;flex-wrap:nowrap;gap:1px}
.pf-row .tokname b{font-size:14.5px}
.pf-row .tokaddr{font-size:12px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pf-row .tokaddr .mono{color:var(--faint)}
.pf-num{display:flex;flex-direction:column;align-items:flex-end;gap:1px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pf-num b{font-weight:600;font-size:14.5px}
.pf-num > span{font-size:12.5px}
.pf-num .up{color:var(--up)} .pf-num .down{color:var(--down)} .pf-num .flat{color:var(--dim)}
.pf-num.pf-wide b{font-weight:500;color:var(--ink2);font-size:13px}
.tbl.swaps{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.tbl.swaps th{font:500 12px var(--sans);color:var(--dim);text-align:left;padding:10px 8px 8px}
.tbl.swaps th.r,.tbl.swaps td.r{text-align:right}
.tbl.swaps td{padding:8px;font-size:13.5px;border-top:1px solid rgba(255,255,255,.035)}
.tbl.swaps tbody tr:hover{background:var(--s1)}
.swaptok{display:flex;align-items:center;gap:8px;color:var(--ink)}
.swaptok .av.sm{width:22px;height:22px;border-radius:50%;overflow:hidden;flex:none}
.act{display:inline-block;font-size:11.5px;font-weight:600;padding:1px 7px;border-radius:5px}
.act.buy{color:var(--up);background:rgba(50,213,131,.12)} .act.sell{color:var(--down);background:rgba(249,112,102,.12)}
.pf-colR #p-tab-body .clauses{margin-top:10px}

.pf-aside{position:sticky;top:78px;display:flex;flex-direction:column;gap:26px}
.pf-aside .kv{margin-top:10px}
.pf-aside #p-collect{margin-top:12px}
.pf-traders{display:flex;flex-direction:column;margin-top:4px}
.pf-trader{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 2px}
.pf-trader > a{display:flex;align-items:center;gap:10px;min-width:0;color:var(--ink)}
.pf-trader .avatar{width:38px;height:38px}
.pf-trader .who{display:flex;flex-direction:column;min-width:0}
.pf-trader .who b{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-trader .who .sub{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-trader .who .up{color:var(--up)} .pf-trader .who .down{color:var(--down)}
.pf-trader .btn{flex:none}

@media(max-width:1480px){.pf-shell{grid-template-columns:minmax(0,1fr)}.pf-aside{position:static;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
  .pf-stats{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:12px}}
@media(max-width:1100px){.pf-cols{grid-template-columns:minmax(0,1fr)}.pf-colR{margin-top:10px}}
@media(max-width:640px){.pf2{padding:12px 16px 40px}.pf-head .p-banner{height:96px}.pf-counts{margin-left:0;order:3}.pf-counts a:first-child{padding-left:0}
  .pf-head .p-actions{order:4;width:100%}.pf-row{grid-template-columns:minmax(0,1fr) auto}.pf-num.pf-wide{display:none}.pf-row.pf-pos{grid-template-columns:minmax(0,1fr) auto auto}
  .pf-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.pf-plot{height:180px}}
.soon:empty{display:none}

/* ---------- round 3: one design language on every page (user, 2026-09-16) ----------
   Labels in sentence case in the text face (small spaced capitals read as a terminal); panels drop their borders and
   sit as a faint surface; stats are one strip divided by hairlines, not a row of boxes. */
.lab{font:500 12px/1.4 var(--sans);letter-spacing:0;text-transform:none;color:var(--dim)}
.cstat span{font:500 11.5px var(--sans);letter-spacing:0;text-transform:none;color:var(--dim)}
/* the create page's preview card still uses the stats strip the board cards dropped: without these its labels ran into
   the values ("Market Cap$3.3K", "24hnew"; UI review 2026-09-21) */
.cstats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}
.cstat{display:flex;flex-direction:column;gap:2px;min-width:0}.cstat b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fld,.fldgroup{font:600 13px/1.4 var(--sans);letter-spacing:0;text-transform:none}
.caps{text-transform:none;letter-spacing:0;font-size:12px}
.tbl.compact th{font:500 12px var(--sans);letter-spacing:0;text-transform:none;color:var(--dim)}
.tag{font:600 11px var(--sans);letter-spacing:0;text-transform:none}
.held{font:600 11px var(--sans);letter-spacing:0;text-transform:none}
.kc-grad .poolnote,.kc-grad .pct{font:500 12px var(--sans)}
.kc-grad .lab{letter-spacing:0}
.qbc{font-family:var(--sans)}
.panel{border-color:transparent;background:var(--bg2)}
.tiles{display:flex;flex-wrap:wrap;gap:12px 0;margin:4px 0 20px}
.tile{flex:1 1 150px;background:none;border:0;border-radius:0;border-left:1px solid var(--line);padding:2px 22px}
.tile:first-child{border-left:0;padding-left:2px}
.tile b{font-size:21px;margin-top:4px}

/* leaderboard: the preview unboxed; top trades as rows */
.lbpage{grid-template-columns:minmax(300px,380px) minmax(0,1fr) minmax(320px,420px);gap:28px}
.lb-row.on{background:var(--s2);box-shadow:none}
.lb-preview{padding:0;overflow:visible;background:none}
.lb-preview::after{display:none}
.lb-preview .pv-top{display:flex;align-items:center;gap:14px;margin:0;padding:6px 0 0}
.lb-preview .pv-id{min-width:0;flex:1}
.lb-preview .pv-name{padding:0;margin:0;font:700 20px/1.2 var(--disp)}
.pv-sub{color:var(--dim);font-size:13px;margin-top:2px}
.pv-sub b{color:var(--ink);font-weight:600}
.lb-preview .p-bio{padding:0;margin:10px 0 0}
.pv-money{margin:20px 0 22px;padding-top:18px;border-top:1px solid var(--line)}
.pv-plot{height:90px;margin:12px 0 4px}
.pv-plot svg{width:100%;height:100%;display:block}
.pv-plot .pv-line{fill:none;stroke-width:2}
.pv-plot .up .pv-line{stroke:var(--up)} .pv-plot .down .pv-line{stroke:var(--down)}
.pv-plot .pv-area{stroke:none;opacity:.08} .pv-plot .up .pv-area{fill:var(--up)} .pv-plot .down .pv-area{fill:var(--down)}
.pv-stats{grid-template-columns:repeat(5,minmax(0,1fr))}
.lb-trade{grid-template-columns:22px minmax(0,1fr) auto}
.lb-n{color:var(--faint);font-size:12.5px;text-align:center;font-variant-numeric:tabular-nums}
.lb-n.top{color:var(--ink2);font-weight:600}
.pf-row .tokaddr a{color:var(--ink2)}
.pf-row .tokaddr a:hover{color:var(--ink)}
.lb-trades .pf-secthd{margin-bottom:4px}
@media(max-width:1400px){.lbpage{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.pv-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.lbpage{grid-template-columns:minmax(0,1fr)}}

/* clubs: a list per club, the address the widest column */
.clubspage .club{margin-bottom:30px}
.club-head{margin-bottom:4px}
.club-head .clubpill{font-size:12.5px;padding:3px 11px}
.club-row{grid-template-columns:minmax(200px,1fr) minmax(0,1.6fr) auto}
.club-addr{font-size:13px;color:var(--ink2);overflow-wrap:anywhere;line-height:1.5}
.club-addr:hover{color:var(--ink)}
.club-empty{margin:12px 6px 0;font-size:13.5px}
@media(max-width:900px){.club-row{grid-template-columns:minmax(0,1fr) auto}.club-addr{grid-column:1/-1;order:3}}
.tokcell .tokname > a{color:var(--ink)}
.tokcell .tokname > a:hover{text-decoration:underline;text-decoration-color:var(--line3)}

/* grind: orders and notes sit on the page; only the order form stays a surface */
.grindmain > .panel{background:none;padding:0}
.grindmain > .panel > h3{display:flex;align-items:center;min-height:34px;padding-bottom:8px;margin:0 0 4px;border-bottom:1px solid var(--line);font:600 15px var(--sans)}
.grindmain > .panel + .panel{margin-top:26px}
.grindmain .addrlist > .sub{margin:12px 2px 0}
.three{gap:28px;margin-top:34px}
.three .panel{background:none;padding:14px 0 0;border-top:1px solid var(--line);border-radius:0}
.three .panel h3{font:600 14px var(--sans)}
.three .hint{font-size:13px;color:var(--dim)}

/* coin: the header, chart and tabs on the page; the trade box the one surface on the right */
.coin .coinhead{background:none;padding:4px 0 18px;border-radius:0;border-bottom:1px solid var(--line)}
.coin .coinhead .av.xl{border-radius:50%;overflow:hidden}
.coin .chartpanel{background:none;padding:10px 0 4px}
.coin > section > .panel:last-child{background:none;padding:6px 0 0}
.coin > section > .panel + .panel{margin-top:14px}
.coin .rail > .panel{background:none;padding:18px 2px 0;border-top:1px solid var(--line);border-radius:0}
.coin .rail > .panel:first-child{background:var(--s1);padding:18px;border-top:0;border-radius:var(--r)}
.coin .rail > .panel h3{font:600 15px var(--sans)}
.coin{gap:28px}

/* alpha: posts in two columns so the width carries content; the side notes unboxed */
.clausepage{gap:28px}
.clausepage #cl-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(440px,1fr));column-gap:28px;align-items:start}
.clausepage .cl-side > .panel{background:none;box-shadow:none;border:0;border-top:1px solid var(--line);border-radius:0;padding:16px 0 0}
.clausepage .cl-side > .panel + .panel{margin-top:26px}
.clausepage .cl-side .panel::before,.clausepage .cl-side .panel::after{display:none}
@media(max-width:1100px){.clausepage #cl-list{grid-template-columns:minmax(0,1fr)}}

/* fees: each claim a column divided by a hairline, not a box */
.feespage{gap:28px}
.feespage > .panel{background:none;padding:16px 0 0;border-top:1px solid var(--line);border-radius:0}
.feespage > .panel h3{font:600 15px var(--sans);display:flex;align-items:center;gap:6px}

/* /token: the picture, as large as the window allows */
/* /token -- "There is no Kontract token." The statement and the picture are ONE object, so they sit
   in a frost card; the two explainers under it are sections, separated by their heading and a
   hairline like every other section on the site (user, 2026-09-17). */
.tokenpage{padding:18px 20px 70px;display:grid;gap:26px;align-content:start}
.ntp{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:34px;align-items:center;padding:24px;border-radius:var(--r)}
.ntp img{display:block;width:100%;height:auto;aspect-ratio:1;border-radius:16px}
.ntp h1{font-size:clamp(30px,3.8vw,46px);line-height:1.03;letter-spacing:-.035em;margin-top:10px}
.ntp .sub{font-size:16px;line-height:1.5;max-width:56ch;margin-top:12px}
.ntp-cta{display:flex;gap:9px;margin-top:22px;flex-wrap:wrap}
.ntp-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,430px);gap:26px 44px;align-items:start}
.ntp-two h3{font-size:17px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.faq > div{padding:14px 0;border-top:1px solid var(--line)}
.faq > div:first-child{border-top:0}
.faq b{display:block;margin-bottom:4px}
.faq p{margin:0;color:var(--ink2);font-size:13.5px;line-height:1.5}
.ntp-have{margin-top:2px}
.ntp-have .kv{grid-template-columns:auto 1fr;gap:0}
.ntp-have .kv > *{padding:11px 0;border-top:1px solid var(--line)}
.ntp-have .kv > b{padding-left:16px}
.ntp-have .kv > :nth-child(-n+2){border-top:0}
.ntp-have .kv a{color:var(--ink);border-bottom:1px dotted var(--dim)}
.ntp-have .kv a:hover{border-bottom-style:solid;border-bottom-color:var(--accent)}
@media(max-width:1000px){.ntp{grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:24px}
  .ntp-two{grid-template-columns:minmax(0,1fr) minmax(0,340px);gap:24px}}
@media(max-width:820px){.ntp,.ntp-two{grid-template-columns:1fr}}

/* ---------- the address builder: a box at the start of the address, a box at the end, the random middle between ---------- */
.addrbuild{--cc:var(--amber);display:flex;align-items:center;gap:2px;min-width:0;padding:12px 14px;border-radius:12px;background:var(--sunk);
  border:1px solid var(--line2);font:500 clamp(15px,1.5vw,19px)/1.2 var(--mono);cursor:text;transition:border-color .15s,box-shadow .15s}
.addrbuild:focus-within{border-color:color-mix(in srgb,var(--cc) 60%,var(--line2));box-shadow:0 0 0 3px color-mix(in srgb,var(--cc) 16%,transparent)}
.addrbuild .ab-0x{color:var(--dim);flex:none}
.addrbuild .ab-in{flex:none;font:inherit;color:var(--cc);background:color-mix(in srgb,var(--cc) 9%,transparent);border:0;border-bottom:2px dashed color-mix(in srgb,var(--cc) 45%,transparent);
  border-radius:6px 6px 2px 2px;padding:3px 5px;margin:0;min-width:0;width:auto;outline:none;letter-spacing:.02em}
.addrbuild .ab-in::placeholder{color:var(--faint);font-family:var(--sans);font-size:.72em;letter-spacing:0}
.addrbuild .ab-in:focus{border-bottom-style:solid;border-bottom-color:var(--cc);background:color-mix(in srgb,var(--cc) 14%,transparent)}
.addrbuild .ab-fill{flex:1 1 0;min-width:3ch;overflow:hidden;white-space:nowrap;color:var(--line3);letter-spacing:.06em;text-align:center;user-select:none}
.ab-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:12.5px;color:var(--dim)}
.ab-foot b{color:var(--ink)}
.ab-labels{display:flex;justify-content:space-between;margin:0 2px 6px;font-size:12px;color:var(--dim)}
.grindvis .big .hit + .hit{margin-left:0}
fieldset{min-width:0}
.grindvis .gbody .big{overflow-wrap:anywhere;word-break:break-all}
@media(max-width:640px){.addrbuild{padding:10px;font-size:15px}.addrbuild .ab-in{padding:2px 3px}}
.grindgrid > *{min-width:0}
.three{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}

/* ---------- the position popup (position.js): a portfolio's token opens the trader's position over the page ---------- */
body.pp-open{overflow:hidden}
.ic-expand{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-7 7M10 20H4v-6M4 20l7-7'/%3E%3C/svg%3E")}
.ic-globe{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cpath d='M3.5 12h17M12 3.5c2.4 2.4 3.6 5.2 3.6 8.5s-1.2 6.1-3.6 8.5c-2.4-2.4-3.6-5.2-3.6-8.5s1.2-6.1 3.6-8.5z'/%3E%3C/svg%3E")}
.ic-candles{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='M6 3v3M6 16v5M12 2v5M12 15v3M18 5v4M18 17v3'/%3E%3Crect x='4' y='6' width='4' height='10' rx='1'/%3E%3Crect x='10' y='7' width='4' height='8' rx='1'/%3E%3Crect x='16' y='9' width='4' height='8' rx='1'/%3E%3C/svg%3E")}
.ic-line{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 17l5-6 4 4 5-8 4 5'/%3E%3C/svg%3E")}
/* glass, as fomo's: the page shows through, blurred, behind a lightly tinted panel */
.pp-back{grid-template-columns:minmax(0,1fr);place-items:start center;padding-block:48px 24px;background:rgba(8,7,12,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.pp{position:relative;width:min(1080px,100%);box-sizing:border-box;border-radius:22px;padding:16px 20px 20px;text-align:left;
  background:linear-gradient(180deg,rgba(38,36,50,.58),rgba(20,19,28,.62));border:1px solid rgba(255,255,255,.09);
  backdrop-filter:blur(26px) saturate(135%);-webkit-backdrop-filter:blur(26px) saturate(135%);
  box-shadow:0 30px 80px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.pp{background:rgba(24,23,33,.97)}}
.pp-x{position:absolute;right:-14px;top:-40px;width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.14);background:rgba(30,29,40,.7);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--ink);font-size:20px;line-height:1;cursor:pointer}
.pp-x:hover{background:rgba(50,48,64,.85)}
.pp-top{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.pp-trader{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-size:14.5px}
.pp-trader .chev{color:var(--dim);font-size:18px;line-height:1}
.pp-trader:hover b{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line3)}
.pp-icon{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;color:var(--dim);border:1px solid transparent}
.pp-icon:hover{color:var(--ink);background:var(--s1);border-color:var(--line)}
.pp-icon.sm{width:24px;height:24px;border-radius:7px}
.pp-icon.sm .ic{width:13px;height:13px}
.pp-share .ic{width:15px;height:15px}
.pp-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:22px}
.pp-main,.pp-side{min-width:0}
.pp-tok{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;min-height:52px}
.pp-tokav{display:block;width:48px;height:48px;border-radius:50%;overflow:hidden;background:var(--s2);transition:box-shadow .15s}
.pp-tokav:hover{box-shadow:0 0 0 2px var(--accent-line)}
.pp-tokav img,.pp-tokav .art,.pp-tokav > svg{display:block;width:100%;height:100%;object-fit:cover}
.pp-tokname{display:flex;align-items:baseline;gap:8px;min-width:0}
.pp-tokname > a{font:700 19px/1.2 var(--display,var(--sans));color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-tokname > a:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line3)}
.pp-tokid{min-width:0}
.pp-addr{display:inline-flex;align-items:center;gap:4px;min-width:0;overflow:hidden;background:none;border:0;padding:0;color:var(--dim);font-size:12px;cursor:pointer;white-space:nowrap}
.pp-addr:hover{color:var(--ink2)}
.pp-addr .ic{width:12px;height:12px}
.pp-badges{display:flex;align-items:center;gap:6px;margin-top:4px}
.pp-status{font-size:11.5px;font-weight:600;padding:1px 8px;border-radius:6px}
.pp-status.open{color:#9ab4ff;background:rgba(110,140,255,.14)}
.pp-status.closed{color:var(--dim);background:var(--s2)}
.pp-mc{display:flex;flex-direction:column;align-items:flex-end;gap:2px;white-space:nowrap}
.pp-mc b{font:700 20px/1.2 var(--display,var(--sans))}
.pp-mc small{font-size:12px;color:var(--dim);font-weight:500}
.pp-mc > span{font-size:13px}
.pp-mc > span.sub{font-size:12px}
.pp-chartwrap{position:relative;margin-top:10px}
/* the chart's overlay: marks, the market-cap pill, $0, the hover tip */
.pp-ov{position:absolute;left:0;right:0;top:0;height:300px;pointer-events:none;overflow:visible}
.pp-mk{position:absolute;z-index:2;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;display:grid;place-items:center;pointer-events:auto;cursor:default;
  font:800 11px/1 var(--display,var(--sans));color:#0b0a0f;box-shadow:0 0 0 2px rgba(14,13,20,.9);transition:transform .12s}
.pp-mk:hover,.pp-mk:focus{transform:scale(1.25);outline:none}
.pp-mk.buy{background:var(--up)} .pp-mk.sell{background:var(--down)}
.pp-mk.alpha{width:26px;height:26px;margin:-13px 0 0 -13px;background:var(--accent);padding:2px;box-sizing:border-box;box-shadow:0 0 0 2px rgba(14,13,20,.9),0 4px 12px rgba(0,0,0,.4)}
.pp-mk.alpha .avatar{width:100%;height:100%;font-size:10px}
.pp-tipimg{display:block;max-width:100%;max-height:140px;margin-top:6px;border-radius:8px;object-fit:cover}
.pp-mk[data-n]::after{content:attr(data-n);position:absolute;right:-7px;top:-7px;min-width:13px;height:13px;padding:0 3px;box-sizing:border-box;border-radius:7px;
  background:#fff;color:#0b0a0f;font:700 9px/13px var(--sans);text-align:center}
.pp-pill{position:absolute;right:0;z-index:1;transform:translateY(-50%);padding:3px 8px;border-radius:7px;font:700 12px/1.3 var(--sans);color:#fff}
.pp-pill.up{background:#1fae6a} .pp-pill.down{background:#e5533f}
.pp-zero{position:absolute;right:6px;transform:translateY(-110%);font:600 11px var(--sans);color:var(--dim)}
.pp-tip{position:absolute;z-index:3;max-width:280px;padding:8px 10px;border-radius:10px;background:rgba(20,19,28,.94);border:1px solid rgba(255,255,255,.12);
  box-shadow:0 12px 30px rgba(0,0,0,.5);font-size:12.5px;line-height:1.35;white-space:normal}
.pp-tip > div + div{margin-top:6px;padding-top:6px;border-top:1px solid rgba(255,255,255,.07)}
.pp-tip .sub{display:block;font-size:11px}
.pp-tv{position:absolute;right:4px;top:0;pointer-events:auto;font-size:10px;color:var(--faint);opacity:.7}
.pp-tv:hover{color:var(--dim);opacity:1}
.pp-chart{height:300px}
.pp-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;pointer-events:none}
.pp-bar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:8px}
.pp-seg{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09)}
.pp-seg button{background:none;border:0;color:var(--dim);font:600 12px var(--sans);padding:5px 10px;border-radius:7px;cursor:pointer}
.pp-seg button:hover{color:var(--ink)}
.pp-seg button.on{background:rgba(255,255,255,.12);color:var(--ink)}
.pp-kind button{padding:4px 7px}
.pp-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink2);cursor:pointer}
.pp-check input{width:15px;height:15px;accent-color:var(--accent);margin:0}
.pp-alpha{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.pp-alphahd{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:6px}
.pp-tag{font-size:11px;font-weight:600;padding:1px 7px;border-radius:6px;color:var(--accent);background:var(--accent-soft)}
.pp-composer .composer{border-bottom:0;padding-bottom:4px}
.pp-composer textarea{background:transparent;border:0;box-shadow:none;padding:4px 0;font-size:15px;min-height:48px;resize:none;caret-color:var(--accent)}
.pp-composer textarea:focus{outline:none;box-shadow:none}
.pp-posts .clause:first-child{border-top:0}
.pp-trade{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pp-trade.one{grid-template-columns:1fr}
.pp-trade .btn{padding:11px;font-weight:700;font-size:15px}
.pp-buy{background:rgba(50,213,131,.16);border-color:rgba(50,213,131,.28);color:var(--up)}
.pp-buy:hover{background:rgba(50,213,131,.24);border-color:rgba(50,213,131,.4)}
.pp-sell{background:rgba(249,112,102,.16);border-color:rgba(249,112,102,.28);color:var(--down)}
.pp-sell:hover{background:rgba(249,112,102,.24);border-color:rgba(249,112,102,.4)}
.pp-pos{display:grid;grid-template-columns:1fr auto;gap:2px 12px;margin-top:12px;padding:14px 16px;border-radius:14px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09)}
.pp-posl,.pp-posr{display:flex;flex-direction:column;gap:2px}
.pp-posr{align-items:flex-end}
.pp-val{font:700 22px/1.2 var(--display,var(--sans))}
.pp-posr b{font:700 18px/1.3 var(--display,var(--sans))}
.pp-posl .sub,.pp-posr span{font-size:13px}
.pp-posfoot{grid-column:1/-1;display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 14px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line2);font-size:12.5px;color:var(--dim)}
.pp-posfoot b{color:var(--ink);font-weight:600}
.pp-txhd{margin:18px 0 6px;font-weight:600;font-size:14px}
.pp-txs{max-height:340px;overflow:auto}
.pp-tx{display:grid;grid-template-columns:auto minmax(0,1fr) auto 18px;align-items:center;gap:10px;padding:7px 2px;border-bottom:1px solid rgba(255,255,255,.035);font-size:13.5px}
.pp-txamt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--dim)}
.pp-txamt b{color:var(--ink);font-weight:600}
.pp-txwhen{font-size:12px;white-space:nowrap}
.pp-txlink{text-align:center}
.pp-txlink:hover{color:var(--ink)}
.pf-row.pf-pos{cursor:pointer}
@media(max-width:860px){
  .pp-back{padding:44px 10px 10px}
  .pp{padding:14px}
  .pp-x{right:0;top:-40px}
  .pp-grid{grid-template-columns:minmax(0,1fr)}
  .pp-main{display:contents}
  .pp-tok{order:1} .pp-chartwrap{order:2} .pp-bar{order:3} .pp-side{order:4} .pp-alpha{order:5}
  .pp-chart{height:240px}
  .pp-ov{height:240px}
  .pp-mc small.sub{display:none}
  .pp-mc b{font-size:17px}
  .pp-tokav{width:40px;height:40px}
  .pp-tx{grid-template-columns:auto minmax(0,1fr) auto 14px;gap:8px}
}

/* ---------- the token hover card ---------- */
.tk-hover{position:fixed;z-index:120;width:268px;box-sizing:border-box;padding:12px 14px;border-radius:14px;background:var(--s1);border:1px solid var(--line2);
  box-shadow:0 18px 44px rgba(0,0,0,.55);font-size:13px}
.tkh-top{display:grid;grid-template-columns:36px minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:center;gap:2px 10px}
.tkh-av{grid-row:1/3;width:36px;height:36px;border-radius:50%;overflow:hidden;background:var(--s2)}
.tkh-av img,.tkh-av .art,.tkh-av > svg{display:block;width:100%;height:100%;object-fit:cover}
.tkh-id{display:flex;align-items:baseline;gap:6px;min-width:0}
.tkh-id b{font-size:14.5px}
.tkh-id .sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}
.tkh-top > .ic{grid-column:3;grid-row:1;justify-self:end;width:14px;height:14px}
.tkh-mc{grid-column:2/4;display:flex;justify-content:space-between;gap:8px}
.tkh-mc b{font-weight:700}
.tkh-kv{display:grid;grid-template-columns:auto 1fr;gap:5px 10px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.tkh-kv span{color:var(--dim)}
.tkh-kv b{justify-self:end;font-weight:600;border-bottom:1px dotted transparent}
.tkh-copy{display:inline-flex;align-items:center;gap:4px;background:none;border:0;padding:0;color:var(--ink);font-size:12px;cursor:pointer}
.tkh-copy:hover{color:var(--accent)}
.tkh-copy .ic{width:12px;height:12px}

/* ---------- a picture on an Alpha post, and the full-size view ---------- */
.ic-image{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'%3E%3Crect x='3.5' y='4.5' width='17' height='15' rx='2.5'/%3E%3Ccircle cx='9' cy='10' r='1.8'/%3E%3Cpath d='M4 17l5-4.5 3.5 3 3-2.5L20 17'/%3E%3C/svg%3E")}
.c-img{display:block;max-width:min(100%,520px);margin:8px 0 4px;padding:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--sunk);cursor:zoom-in}
.c-img img{display:block;max-width:100%;max-height:360px;width:auto;height:auto;object-fit:contain}
.c-img:hover{border-color:var(--line2)}
.composer-attach{cursor:pointer;color:var(--dim);display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px}
.composer-attach:hover{color:var(--ink);background:var(--s1)}
.composer.locked .composer-attach{opacity:.4;pointer-events:none}
.composer-pic{position:relative;display:inline-flex;align-items:flex-end;gap:8px;align-self:flex-start}
.composer-pic img{display:block;max-height:140px;max-width:240px;border-radius:10px;border:1px solid var(--line2);object-fit:cover}
.composer-unpic{position:absolute;left:6px;top:6px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(10,9,14,.8);color:#fff;font-size:16px;line-height:1;cursor:pointer}
.composer.drop{outline:2px dashed var(--accent-line);outline-offset:4px;border-radius:12px}
.lightbox{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:24px;background:rgba(6,5,9,.88);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:fadein .12s;cursor:zoom-out}
.lightbox figure{margin:0;display:flex;flex-direction:column;gap:8px;max-width:100%;max-height:100%;cursor:default}
.lightbox img{display:block;max-width:calc(100vw - 48px);max-height:calc(100vh - 90px);width:auto;height:auto;object-fit:contain;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.lightbox figcaption{display:flex;justify-content:space-between;gap:12px;font-size:13px}
.lightbox figcaption a{color:var(--ink2)}
.lightbox-x{position:fixed;right:16px;top:14px;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:rgba(30,29,40,.8);color:#fff;font-size:22px;cursor:pointer}

/* ---------- round 4: dark frost over a moving ground (user, 2026-09-17; UX prototype "kontract.fun Prototype") ----------
   The ground is a hex-dot canvas (#bg, drawn by common.js) with a slow scan band. Surfaces are FAUX frost: a near-opaque
   ink tint plus a baked grain tile (--noise), no backdrop blur -- a real blur re-samples the moving canvas under every
   card on every frame. Elements keep the fomo shape: no parent pane around a list; each card, panel and bar is its own
   frosted object, so the ground runs through the gutters between them. Colours darken toward fomo's ink panes. */
:root{
  --bg:#060509; --bg2:#0b0a10; --sunk:#09080d; --field:#09080d;
  --s1:#0f0e15; --s2:#15141c; --s3:#1f1d29; --panel:#0f0e15; --panel2:#17161f;
  --line:rgba(255,255,255,.062); --line2:rgba(255,255,255,.11); --line3:rgba(255,255,255,.17);
  --ink:#f4f3f8; --ink2:#aba7ba; --dim:#7d7992; --faint:#55516a;
  --pane:rgba(11,10,16,.94); --pane-hi:rgba(18,17,25,.96); --pane-bump:rgba(17,16,28,.96);
  --hover:rgba(255,255,255,.035); --active:rgba(255,255,255,.065);
  --noise:none;
}
body{background:radial-gradient(ellipse 70% 40% at 60% -6%,rgba(244,243,248,.05),transparent 70%),var(--bg);background-attachment:fixed}
#bg{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;pointer-events:none}
.app{position:relative;z-index:1}

/* the frame: rail, top bar and footer are flat frosted bars */
.siderail,.top,.footbar{background-color:var(--pane);background-image:var(--noise)}
.top{background-color:rgba(8,7,12,.9)}
.footbar{background-color:rgba(8,7,12,.92)}
.railnav a:hover,.fr:hover{background:var(--hover)}
.railnav a.on{background:var(--active)}

/* Frost is for OBJECTS ONLY -- a board card, a club tier, a podium place, the rail/top/footer bars. A SECTION of a page
   is not an object: it keeps round 3's shape, separated by a hairline and its heading, never wrapped in a box
   (user, 2026-09-17: "it looks cleaner when there is no wrapping around a section, and only lines are used"). */
.card,.hero,.frost{background-color:var(--pane);background-image:var(--noise);border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 12px 32px rgba(0,0,0,.35)}
.card:hover{background-color:var(--pane-hi);border-color:var(--line2)}
.card.bumped{background-color:var(--pane-bump);border-color:var(--amber)}
.hero{background-image:linear-gradient(100deg,rgba(244,243,248,.09),transparent 50%),var(--noise)}
/* controls sit in the inset ink, and "on" is a lift of white, not another grey */
.seg,.sorts,.seg.small,.pf-toggle{background:rgba(9,8,13,.92);border:1px solid var(--line)}
.tab:hover{color:var(--ink2)}
.tab.on,.qbc.on{background:rgba(255,255,255,.085);color:var(--ink)}
.sorts .tab.on.live{background:var(--accent);color:var(--accent-ink)}
.btn,.btn.outline,.btn.ghost,.top #connect.btn.primary{background:rgba(255,255,255,.035);border-color:var(--line2)}
.btn:hover,.btn.outline:hover,.btn.ghost:hover,.top #connect.btn.primary:hover{background:rgba(255,255,255,.075)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.primary:hover{background:var(--amber2);border-color:var(--amber2)}
.search{background:rgba(9,8,13,.9);border-color:var(--line)}
.searchres,.menu,.kc-menu,.tk-hover{background-color:#121119;background-image:var(--noise)}
input,select,textarea{background:var(--sunk)}
input:focus,select:focus,textarea:focus{background:var(--sunk)}
.pf-row:hover,.tbl.swaps tbody tr:hover,.tbl.compact tbody tr:hover{background:var(--hover)}
.pf-badge{background:rgba(255,255,255,.035)}
.pf-badge:hover{background:var(--active)}

/* the rail's trending list: rank, token, its window volume; market cap and the window's move on the right */
.fr{grid-template-columns:14px 28px minmax(0,1fr) auto;gap:8px;will-change:transform}
.fr .rk{font:600 11px var(--mono);color:var(--faint);text-align:center}
/* Anything placed 1-2-3 wears a medal, here and on every other ranked list: the colours are
   read before the numbers are, and they mean the same thing on every page. */
.fr:nth-child(1) .rk{color:var(--gold)}
.fr:nth-child(2) .rk{color:var(--silver)}
.fr:nth-child(3) .rk{color:var(--bronze)}
.fr .t > span em{font-style:normal;color:var(--ink2);font-weight:500}
.fr .v{color:var(--ink)}
.fr .v small{font:500 11px var(--sans);text-align:right}
.fr .v small.up{color:var(--up)} .fr .v small.down{color:var(--down)}
.fr.hot .t > span em{animation:volflash 1.1s ease-out}
@keyframes volflash{0%{color:var(--amber)}100%{color:var(--ink2)}}
.fr.new{animation:slidein .42s cubic-bezier(.2,.9,.3,1)}
@media(prefers-reduced-motion:reduce){.fr.hot .t > span em,.fr.new{animation:none}}

/* alpha, round 4: posts stay hairline-separated rows; Most discussed is a list under its heading */
.posbox{background:rgba(255,255,255,.016);border-color:var(--line)}
.md-rows{display:flex;flex-direction:column;margin-top:6px}
.md-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 2px;border-top:1px solid var(--line);color:var(--ink)}
.md-row:first-child{border-top:0}
.md-row:hover b{text-decoration:underline;text-decoration-color:var(--line3)}
.md-row .av{width:28px;height:28px;border-radius:8px;overflow:hidden;font-size:11px}
.md-row .av img,.md-row .av svg{display:block;width:100%;height:100%;object-fit:cover}
.md-row b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-row .sub{font-size:13px;color:var(--dim)}

/* leaderboard, round 4 (UX prototype): a title row with period and ranking switches, a podium of three, then one table
   that sits on the page -- rows divided by hairlines, no box around them */
.lb4{display:block;padding:22px 20px 70px}
.lb-top{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin:0 2px 16px}
.lb-top h1{font-size:clamp(24px,2.8vw,30px);letter-spacing:-.035em}
.lb-top .sub{margin-top:4px;max-width:60ch}
.podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:6px}
.frost{border-radius:14px}
.pod{display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 16px;text-align:center;color:var(--ink);transition:border-color .16s,background-color .16s}
.pod:hover{border-color:var(--line2);background-color:var(--pane-hi)}
.pod .rk{font:800 13px var(--mono);color:var(--dim)}
.pod:nth-child(1) .rk{color:var(--gold)}
.pod:nth-child(2) .rk{color:var(--silver)}
.pod:nth-child(3) .rk{color:var(--bronze)}
.pod:nth-child(1){border-color:color-mix(in srgb,var(--gold) 34%,transparent)}
.pod:nth-child(2){border-color:color-mix(in srgb,var(--silver) 26%,transparent)}
.pod:nth-child(3){border-color:color-mix(in srgb,var(--bronze) 26%,transparent)}
.pod .avatar{margin:4px 0 2px}
.pod-name{font:700 17px/1.2 var(--disp);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pod-big{font:800 clamp(22px,2.4vw,28px)/1.1 var(--disp);letter-spacing:-.04em}
/* your own row, called out where you stand rather than in a card */
.lb4 .lb-me{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin:18px 2px 0;padding:10px 0 10px 12px;border:0;border-radius:0;
  background:none;box-shadow:inset 2px 0 0 var(--amber)}
.lb4 .lb-me.hidden{display:none}
.lb4 .lb-me .lb-who,.lb4 .lb-me .lb-val{display:flex;flex-direction:column;align-items:flex-start;margin:0}
.lb4 .lb-me .lb-who{margin-right:auto}
.lb-table{margin-top:6px}
.lb-table .tblwrap{overflow-x:auto}
.lb-table table{width:100%;border-collapse:collapse;font-size:13.5px}
.lb-table th{font:500 12px var(--sans);color:var(--dim);text-align:left;padding:10px 14px 10px 0;white-space:nowrap;border-bottom:1px solid var(--line)}
.lb-table th:last-child{padding-right:0}
.lb-table th.on{color:var(--ink)}
.lb-table td{padding:11px 14px 11px 0;border-top:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums}
.lb-table td:last-child{padding-right:0}
.lb-table tr:first-child td{border-top:0}
.lb-table .r{text-align:right}
.lb-table td.rank{color:var(--dim);width:34px}
/* one rule for every ranked list that prints its own number */
.m1{color:var(--gold)!important;font-weight:700}
.m2{color:var(--silver)!important;font-weight:700}
.m3{color:var(--bronze)!important;font-weight:700}
.lb-table tr.lb-row{display:table-row;cursor:pointer;padding:0;border-radius:0;gap:0}
.lb-table tr.lb-row:hover td{background:rgba(255,255,255,.02)}
.lb-table tr.me td{background:rgba(244,243,248,.07)}
.lb-who{display:inline-flex;align-items:center;gap:10px;color:var(--ink);min-width:0}
.lb-table .lb-who,.lb-below .lb-who{flex:none;flex-direction:row}
.lb-who b{font-weight:600}
.lb-who > span:not(.avatar){display:flex;flex-direction:column;min-width:0}   /* the name+sub stack, never the picture */
.tag.you{background:var(--amber-soft);color:var(--amber);padding:3px 6px;border-radius:5px}
.lb-best{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:500}
.lb-best .av{width:22px;height:22px;border-radius:6px;overflow:hidden;display:grid;place-items:center;font-size:9px;flex:none}
.lb-best .av img,.lb-best .av svg{display:block;width:100%;height:100%;object-fit:cover}
.lb-best:hover{text-decoration:underline;text-decoration-color:var(--line3)}
.lb4 .lb-foot{margin:12px 2px 30px;max-width:90ch}
.lb-below{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;align-items:start}
@media(max-width:1280px){.lb-below{grid-template-columns:repeat(2,minmax(0,1fr))}.lb-communities{grid-column:1/-1}}
.lb-n.lbtop{font-weight:700}
/* the leaderboard's pictures, half again as large as the shared row style (user, 2026-09-21) */
.lb4 .pf-row .tokcell .av.sm{width:54px;height:54px}
.lb4 .lb-below .avatar.md{width:54px;height:54px;font-size:20px}
.lb4 .lb-table .avatar.sm{width:33px;height:33px;font-size:13px}
.lb4 .lb-best .av{width:33px;height:33px}
.lb4 .lb-me .avatar.md{width:54px;height:54px;font-size:20px}
.lb-trade{grid-template-columns:24px minmax(0,1fr) auto}
.lb4 .pf-row .tokname{min-width:0;max-width:100%}
.lb4 .pf-row .tokname b{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-below .pf-row:last-child{border-bottom:0}
@media(max-width:900px){.podium{grid-template-columns:minmax(0,1fr)}.lb-below{grid-template-columns:minmax(0,1fr);gap:24px}.lb4{padding:16px 16px 60px}}

/* clubs, round 4 (UX prototype): a card per character count -- those ARE objects -- then the chosen tier's tokens as
   rows on the page under one heading */
.clubspage .clubs-title{margin-bottom:16px}
.tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:22px}
.tier{text-align:left;cursor:pointer;padding:14px 16px;border-radius:13px;color:var(--ink);font:inherit;
  background-color:var(--pane);background-image:var(--noise);border:1px solid var(--line);box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 12px 32px rgba(0,0,0,.35);
  transition:border-color .16s,background-color .16s}
.tier:hover{border-color:var(--line2);background-color:var(--pane-hi)}
.tier.on{border-color:var(--amber);background-color:var(--pane-bump)}
.tier .n{font:800 30px/1 var(--disp);letter-spacing:-.05em}
.tier .n small{font:600 12px var(--sans);color:var(--dim);letter-spacing:0;margin-left:5px}
.tier .m{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;margin-top:12px;font-size:12px;color:var(--dim)}
.tier .m b{display:block;color:var(--ink);font-weight:600;font-size:13.5px;white-space:nowrap}
/* Odds are two lines of equal weight -- hex chains, then Solana -- each ending in the chains it is the answer for
   (user, 2026-09-25). The icons are small enough that "1 in 4.3 billion" plus four of them still fits the narrowest
   card (180px, 148px of content). */
.tier .odds58{display:block}
/* the chains come after the number and are the point of the line, so THEY never shrink: the number is what gives way
   on the narrowest card (180px, 148px of content) */
.tier .odds b{display:flex;align-items:center;min-width:0;white-space:nowrap;font-size:12px}
.tier .odds .onum{min-width:0;overflow:hidden;text-overflow:ellipsis}
.tier .oddsic{display:inline-flex;align-items:center;gap:2px;margin-left:6px;flex:none}
.tier .oddsic .ic{width:12px;height:12px;vertical-align:0}
/* the odds need the card's full width (both chains' numbers), and nothing in a card may widen the page */
.tier{min-width:0;overflow:hidden}
.tier .m > div{min-width:0}
.tier .m > div:last-child{grid-column:1/-1}
.tier .m b{overflow:hidden;text-overflow:ellipsis}
.tierlist .pf-row:last-child{border-bottom:0}

/* a picture that opens at full size: the token's on its page, a profile's avatar (user, 2026-09-17) */
.zoomable{cursor:zoom-in}
.zoomable:hover{box-shadow:0 0 0 2px var(--line3)}
#p-avatar.zoomable{border-radius:50%;display:inline-block}
/* the P&L headline in the text face, as fomo's is -- the display face at 800 read as clunky at this size (user) */
.pf-big{font:600 clamp(30px,2.6vw,38px)/1.08 var(--sans);letter-spacing:-.02em}

/* round 4b (user, 2026-09-17): a wider rail so a trending row has room and its icon can be bigger, matching fomo's;
   and cards that are darker and more translucent, so the ground reads through them */
:root{
  --pane:rgba(6,5,10,.74); --pane-hi:rgba(13,12,19,.82); --pane-bump:rgba(18,17,32,.82);
  --bar:rgba(6,5,10,.88);
}
.siderail,.top,.footbar{background-color:var(--bar)}
.app{grid-template-columns:320px minmax(0,1fr)}
@media(max-width:1080px){.app{grid-template-columns:1fr}}
.railfeed{padding:0 12px 10px}
.fr{grid-template-columns:16px 36px minmax(0,1fr) auto;gap:10px;padding:8px 10px}
.fr .t b{font-size:14px}
.fr .t > span{font-size:11.5px}
.fr .v{font-size:13.5px}
.railhd{padding-left:20px;padding-right:20px}
.brand{padding:0 20px}
.railnav{padding:10px 12px}

/* ══ round 5 (user, 2026-09-17) ═══════════════════════════════════════════════════════════════════════════════════
   The board says "Live" and nothing else; quick buy folds into one pill; buy/sell read green/red at the top of the
   trade box; the clubs page opens on every club; and the grind order form sits between the two lists. */

/* the board note: a status light and a word. The held-buy count joins it only while a card is being read. */
.bnote{margin-bottom:12px}
.bnote #bn-rule{color:var(--dim);font-weight:600;letter-spacing:.01em}

/* quick buy: one pill, and the ladder as a menu under it on hover (or click, for touch and keyboard) */
.qb{position:relative;display:flex;align-items:center}
.qbpill{display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border:1px solid var(--line2);border-radius:999px;
  background:rgba(255,255,255,.035);color:var(--dim);font:600 12.5px var(--sans);cursor:pointer;white-space:nowrap}
.qbpill:hover,.qb.open .qbpill,.qb:hover .qbpill{color:var(--ink);background:rgba(255,255,255,.075)}
.qbpill b{font:600 12.5px var(--mono);color:var(--amber);letter-spacing:-.02em}
.qbmenu{display:none;position:absolute;top:100%;right:0;z-index:40;padding-top:8px}  /* the pad bridges pill → menu */
.qb:hover .qbmenu,.qb:focus-within .qbmenu,.qb.open .qbmenu{display:block}
.qbmenu .seg{flex-wrap:nowrap;width:max-content;
  background-color:#121119;background-image:var(--noise);border-color:var(--line2);box-shadow:0 16px 38px rgba(0,0,0,.55)}
@media(max-width:820px){.qbmenu .seg{flex-wrap:wrap;width:auto;max-width:min(92vw,330px);justify-content:flex-end}}

/* the side tabs carry the direction's colour, so the box says what it will do before you read it */
#t-side .tab[data-side="buy"].on{background:rgba(50,213,131,.16);color:var(--up)}
#t-side .tab[data-side="sell"].on{background:rgba(249,112,102,.16);color:var(--down)}

/* a club's Solana odds are a statistic, not a footnote: same size as the hex odds beside them (the size is set
   with the odds block above, so the two lines cannot drift apart) */
.tier .m .odds58{font-weight:600;color:var(--dim);margin-top:1px}

/* clubs: with nothing picked the page lists every club, largest few tokens each */
.clublists .tierlist + .tierlist{margin-top:30px}
.clublists .more{margin-top:12px;justify-content:flex-start}
.clublists .more .btn{font-size:13px}

/* grind: the order form is a card between "Ready to launch" and "Grinding" (the page is one column now). It lies
   ACROSS the page rather than down it -- chain on the left, the address you are ordering on the right, so the whole
   order is one horizontal read instead of a tall column with the width unused (user, 2026-09-17). */
/* "New order" is a SECTION heading like "Ready to launch" and "Grinding" -- above the card, on the page, divided by a
   hairline (user, 2026-09-17). The card below holds only the form. */
.neworder{display:grid;grid-template-columns:minmax(280px,1fr) minmax(320px,1.15fr);gap:0 28px;align-items:start;
  padding:16px 20px 18px;margin-top:12px}
.neworder > .field.fld,.neworder > #a-fields{margin-top:0;min-width:0}
.neworder > .status{grid-column:1/-1}
.neworder .picks{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.neworder #a-fields > .field:first-child{margin-top:0}
.neworder .grindvis{margin-top:12px}
@media(max-width:900px){.neworder{grid-template-columns:minmax(0,1fr)}}

/* Panes take the "ready to launch" address bar's colour (user, 2026-09-17): `--sunk`, the flat ink the job bar sits in,
   rather than the white veil a card used to carry -- the veil read hazy and lighter than the bar beside it. The rail,
   top bar and ticker keep their own `--bar` -- content scrolls under those, so they have to cover it. */
:root{
  --pane:var(--sunk); --pane-hi:#0f0e16; --pane-bump:#13121f;
}
.card,.hero,.frost{box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 10px 26px rgba(0,0,0,.28)}
/* and the frost grain comes OFF a pane: over this ink it composites ~3/255 lighter and grainy, which is exactly the
   haze that set a card apart from the bar. The grain stays on the rail, top bar and ticker, where it still earns its
   keep over scrolling content, and the hero keeps its amber wash. */
.card,.frost,.coin .rail > .panel:first-child,.createpage .panel,.create-side > .panel,
.panel.create,.tier{background-image:none}
.hero{background-image:linear-gradient(100deg,rgba(244,243,248,.09),transparent 50%)}
/* the two surfaces that are still boxes take the same veil: the coin trade box and the create page's steps. Every
   other `.panel` was already unboxed in round 4 and keeps its `background:none` -- these rules name their surfaces. */
.coin .rail > .panel:first-child,.createpage .panel,.create-side > .panel,.panel.create,.empty{
  background-color:var(--pane);background-image:none;border-color:var(--line)}

/* ══ round 8 (user, 2026-09-17) ═══════════════════════════════════════════════════════════════════════════════════ */

/* A liked heart is SOLID red, not an outline: the mask swaps to a filled path, so `currentColor` fills the shape. */
.iconbtn.c-like.on{color:var(--down)}
.iconbtn.c-like.on .ic-heart{--i:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27black%27%3E%3Cpath d=%27M12 20s-7.5-4.4-7.5-10A4.2 4.2 0 0 1 12 7.5 4.2 4.2 0 0 1 19.5 10c0 5.6-7.5 10-7.5 10z%27/%3E%3C/svg%3E")}

/* Your own leaderboard line: the name sits WITH the picture and the three numbers stay beside them, rather than
   being flung to the far edge of a wide table (user, 2026-09-17). */
.lb4 .lb-me{gap:26px;align-items:center}
.lb4 .lb-me .lb-mewho{display:flex;align-items:center;gap:11px;color:var(--ink);min-width:0}
.lb4 .lb-me .lb-meid{display:flex;flex-direction:column;min-width:0}
.lb4 .lb-me .lb-meid b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb4 .lb-me .lb-val{margin:0}
.lb4 .lb-me .lb-val:first-of-type{margin-left:8px}

/* ══ round 9 (user, 2026-09-17) ═══════════════════════════════════════════════════════════════════════════════════ */

/* The banner's own buttons were only clickable along their top edge: `.p-top` is pulled 34px UP over the banner and
   carries z-index 1, so it lay across the lower two thirds of the tools and swallowed the clicks. The tools sit above
   it now -- and `.p-top`'s empty left gutter no longer catches the pointer at all, only the things inside it do. */
.pf-head .bannertools{z-index:3}
.pf-head .p-top{pointer-events:none}
.pf-head .p-top > *{pointer-events:auto}

/* A link someone typed, in a bio, an Alpha post, a reply, or the chart's Alpha card. `a` is colourless site-wide
   (every card is one big link), so a real hyperlink has to say so. */
.xlink{color:var(--amber);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;overflow-wrap:anywhere}
.xlink:hover{color:var(--amber2)}
.pp-tipbody{display:inline}

/* the position card grows a middle column for the sparkline; it collapses on a phone, where there is no blank to fill */
.posbox{grid-template-columns:minmax(0,1fr) minmax(0,120px) minmax(0,1fr);align-items:center}
/* `.posbox > div` already sets display:flex on every child, so these must out-specify it or they lose silently */
.posbox > .pos-spark{height:34px;min-width:0;display:flex;flex-direction:row;align-items:center;justify-content:center}
.posbox > .pos-spark:empty{display:none}
.posbox > .pos-spark .spark{width:100%;height:34px;display:block}
@media(max-width:560px){.posbox{grid-template-columns:1fr 1fr}.posbox > .pos-spark{display:none}}

/* ══ round 10 (user, 2026-09-17) ═══════════════════════════════════════════════════════════════════════════════════ */

/* The top bar had 62px and 20px of side padding for a search field, a Create button, an account pill and now a cash
   pill: it read as crowded. More height, more gutter, more space between the controls. */
.top{height:70px;padding:0 26px;gap:18px}
.right{gap:12px}

/* fomo's account pill: a rounded surface carrying the picture and the name, not an outlined button */
.top .userbtn{display:inline-flex;align-items:center;gap:9px;height:42px;padding:0 12px 0 6px;border-radius:999px;
  background:var(--s1);border:1px solid var(--line);font-weight:600}
.top .userbtn:hover{background:var(--s2);border-color:var(--line2)}
.top .userbtn .avatar{width:30px;height:30px}
.top .userbtn > span:not(.caret){max-width:15ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* the cash pill beside it: the dollars this account is holding, the value loud and the label quiet */
.cashpill{display:inline-flex;align-items:baseline;gap:6px;height:42px;padding:0 14px;border-radius:999px;
  background:var(--s1);border:1px solid var(--line);color:var(--ink);white-space:nowrap;box-sizing:border-box;
  align-self:center;line-height:40px}
.cashpill:hover{background:var(--s2);border-color:var(--line2)}
.cashpill b{font:700 14.5px var(--sans);letter-spacing:-.01em}
.cashpill span{font-size:12px;color:var(--dim)}
.cashpill.hidden{display:none}
@media(max-width:900px){.top{padding:0 16px;gap:12px}.cashpill{display:none}}

/* the X mark beside a profile name, the size a token card's link icons are */
.p-x{display:inline-flex;align-items:center;color:var(--dim);vertical-align:2px;margin-left:7px}
.p-x:hover{color:var(--ink)}
.p-x .ic{width:15px;height:15px}

/* ══ round 11 (user, 2026-09-17) ═══════════════════════════════════════════════════════════════════════════════════ */

/* THE SEAM. Round 10 raised the top bar to 70px but left the rail's brand block at 62px, so the hairline under the
   brand and the hairline under the top bar ran at two different heights and met the rail's right border at a step --
   the exact corner the user circled. The two bars are one frame: the brand block's height is the top bar's height,
   and it is stated once here so a future change to one cannot desynchronise the other.

   Second cause, same corner: the top bar carried `backdrop-filter:blur(14px)` while the rail did not. Both are the
   same translucent colour over the same fixed radial-gradient ground, but only one was blurring what showed through,
   so their fills differed slightly where they meet. This theme's frost is faux by rule (a flat tint, never a real
   blur) -- the leftover filter is dropped. */
:root{--topbar-h:70px}
.top{height:var(--topbar-h)}
.brand{height:var(--topbar-h)}
.top{backdrop-filter:none;-webkit-backdrop-filter:none}
/* one continuous surface, so the corner reads as a frame and not as two panes that happen to touch */
.siderail,.top{background-color:var(--bar);background-image:var(--noise)}
@media(max-width:1080px){.brand{height:auto}}

/* Taller pills, and one shared shape so cash, value and account read as a set */
.top .userbtn,.cashpill,.valuepill{height:48px;border-radius:999px;box-sizing:border-box;
  background:var(--s1);border:1px solid var(--line)}
.top .userbtn:hover,.cashpill:hover,.valuepill:hover{background:var(--s2);border-color:var(--line2)}

/* the account pill: name first, picture to its right (user: "the profile picture should be to the right of the name") */
.top .userbtn{display:inline-flex;align-items:center;gap:9px;padding:0 10px 0 14px;font-weight:600}
.top .userbtn .avatar{width:32px;height:32px}
.top .userbtn .caret{margin-left:-2px}

/* cash: one line, the value loud and the label quiet */
.cashpill{display:inline-flex;align-items:baseline;gap:6px;padding:0 16px;color:var(--ink);white-space:nowrap;
  line-height:46px}

/* portfolio value: the total, with the last 24 hours' profit under it -- two lines, so the pill is stacked, not baseline */
.valuepill{display:inline-flex;flex-direction:column;justify-content:center;gap:1px;padding:0 16px;color:var(--ink);
  white-space:nowrap;text-align:left}
.valuepill.hidden,.cashpill.hidden{display:none}
.cashpill b,.valuepill b{font:700 15px var(--sans);letter-spacing:-.01em;line-height:1.15}
.cashpill span{font-size:12px;color:var(--dim)}
.valuepill small{font:600 11.5px var(--sans);line-height:1.15;color:var(--dim)}
.valuepill small.up{color:var(--up)}
.valuepill small.down{color:var(--down)}
.valuepill small i{font-style:normal;color:var(--faint);font-weight:500}

/* a value that changed flashes once, so a number that ticks while you look at it is visibly live */
@keyframes pilltick{from{background:rgba(244,243,248,.18)}to{background:var(--s1)}}
.cashpill.tick,.valuepill.tick{animation:pilltick .7s ease-out}
/* tool mode: one chip per chain in its coin (account.js paintWealth) */
.cashpill .cp-amt{display:inline-flex;align-items:center;gap:10px}
.cashpill .fchip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--dim);white-space:nowrap}
.cashpill .fchip b{font:700 13px var(--sans);color:var(--ink);letter-spacing:-.01em;line-height:1.15}
.cashpill .fchip i{width:7px;height:7px;border-radius:50%;display:inline-block;flex:none}
.cashpill .fchip.off{opacity:.55}
@media (max-width:720px){.cashpill .fchip{font-size:11px}.cashpill .fchip b{font-size:12px}}
@media(prefers-reduced-motion:reduce){.cashpill.tick,.valuepill.tick{animation:none}}

/* narrow: the account pill is the one that must survive, so cash goes first and the total goes second */
@media(max-width:1180px){.cashpill{display:none}}
@media(max-width:900px){.top{padding:0 16px;gap:12px}.valuepill{display:none}}

/* The top bar's right column was `minmax(0,1fr)`: it could not grow past its share, so once the pills got taller and a
   third pill joined them the group overflowed and `justify-self:end` spilled it LEFTWARDS, drawing the Create button
   on top of the search field (seen 2026-09-17, 1600px). The right column must be at least as wide as what it holds;
   the search gives up the width instead, down to its 220px floor. */
.top{grid-template-columns:minmax(0,1fr) minmax(220px,520px) minmax(max-content,1fr)}
.top .right{flex:none}
/* and the Create button joins the set rather than sitting a third shorter than everything beside it */
.top .topcreate{height:48px;border-radius:999px;padding:0 20px;display:inline-flex;align-items:center;font-size:14.5px}
/* the search is part of the same row, so it stands at the same height as the pills beside it */
.top .search{height:48px;border-radius:999px;padding:0 18px}
.top .search input{padding:0}

/* `--topbar-h` is the DESKTOP height. Stating it as `.top{height:...}` above re-broke the two narrow layouts, which
   wrap the search onto its own row and need the bar to grow with them: at 400px the search hung 38px out the bottom
   of a bar still 70px tall (caught 2026-09-17 by measuring the boxes, not by looking). These restate `height:auto`
   AFTER it, because the earlier media blocks lose on order, not on specificity. */
@media(max-width:1080px){.top{height:auto}}
@media(max-width:868px){.top{height:auto}}
@media(max-width:700px){.top{height:auto}}

/* ══ round 12 (user, 2026-09-17) ═══════════════════════════════════════════════════════════════════════════════════ */

/* TWO pills, not three. The portfolio value and the account control are one pill: the wrapper carries the chrome, and
   the button inside holds only the picture and the caret. Signed out, the wrapper is bare and the Sign in button is
   its own primary button as before. */
.acctpill{display:inline-flex;align-items:center;position:relative}
.acctpill.on{gap:10px;height:48px;padding:0 6px 0 16px;border-radius:999px;box-sizing:border-box;
  background:transparent;border:1px solid var(--line)}
.acctpill.on:hover{border-color:var(--line2);background:var(--hover)}
.acctpill.on .userbtn{display:inline-flex;align-items:center;gap:6px;height:auto;padding:0;background:none;border:0;
  border-radius:999px;color:var(--ink);cursor:pointer}
.acctpill.on .userbtn:hover{background:none}
.acctpill .userbtn .avatar{width:34px;height:34px}
.acctpill .valuepill{border:0;background:none;padding:0;height:auto}
.acctpill .valuepill:hover{background:none}

/* The pills sit on the SAME colour as the bar they are in, outlined rather than filled (user: "the background color
   of the pill should be the same as the header bar, not a lighter color"). */
.cashpill{background:transparent;border:1px solid var(--line);height:48px}
.cashpill:hover{background:var(--hover);border-color:var(--line2)}
.top .topcreate{height:48px}

/* cash is two lines now: the amount, and the deposit link under it */
.cashpill{display:inline-flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:0;
  padding:0 16px;line-height:1.15}
.cashpill .cp-amt{display:inline-flex;align-items:baseline;gap:6px}
.cashpill .cp-dep{background:none;border:0;padding:0;cursor:pointer;font:600 11.5px var(--sans);color:var(--amber);
  text-align:left}
.cashpill .cp-dep:hover{text-decoration:underline}

/* THE FUNDS PILL, segmented (tool mode; owner 2026-10-02, option A of the "Funds Pill Options" page): one centred
   line, each chain its own segment with a hairline after it, and "Add funds" as a round + at the end. */
.cashpill:has(> .cp-plus){flex-direction:row;align-items:center;padding:0 8px 0 4px}
.cashpill:has(> .cp-plus) .cp-amt{align-items:center;gap:0}
.cashpill:has(> .cp-plus) .fchip{gap:8px;padding:0 14px;height:22px;border-right:1px solid var(--line);font-size:12px}
.cashpill:has(> .cp-plus) .fchip b{font:600 14px var(--sans);letter-spacing:-.01em}
.cashpill:has(> .cp-plus) .fchip em{font:500 10.5px var(--mono);font-style:normal;color:var(--dim);letter-spacing:.06em}
.cashpill:has(> .cp-plus) .cp-plus{width:30px;height:30px;margin-left:10px;border-radius:50%;border:1px solid var(--line2);display:grid;
  place-items:center;color:var(--ink);font:500 18px/1 var(--sans);text-align:center;flex:none;transition:background .15s,border-color .15s}
.cashpill:has(> .cp-plus) .cp-plus:hover{background:var(--s2);border-color:var(--line3);text-decoration:none}
@media (max-width:1400px){.cashpill:has(> .cp-plus) .fchip{padding:0 10px;gap:6px}.cashpill:has(> .cp-plus) .fchip em{display:none}}

/* the menu opens on hover, so it must not leave a dead gap the pointer falls through on its way down */
.menu.acct{top:calc(100% + 2px)}
.menu.acct::before{content:"";position:absolute;left:0;right:0;top:-10px;height:10px}

/* ---- deposit sheet ---- */
.deposit{display:flex;flex-direction:column;gap:14px;min-width:min(380px,84vw)}
.deposit h2{font:700 18px var(--disp);text-align:center;margin:0}
.dep-chain{display:block}
.dep-chain select{width:100%;height:44px;border-radius:12px;background:var(--s1);border:1px solid var(--line2);
  color:var(--ink);padding:0 12px;font:600 14px var(--sans)}
.dep-note{text-align:center;margin:0;font-size:13px;line-height:1.5}
.dep-qr{background:#fff;border-radius:16px;padding:14px;align-self:center;width:210px;box-sizing:border-box}
.dep-qr svg{display:block;width:100%;height:auto}
.dep-addr{display:flex;align-items:center;gap:8px;background:var(--s1);border:1px solid var(--line);
  border-radius:12px;padding:10px 12px}
.dep-addr code{flex:1;min-width:0;font:500 12px var(--mono);color:var(--ink2);word-break:break-all;line-height:1.45}
@media(max-width:560px){.deposit{min-width:0}.dep-qr{width:170px}}
/* a native select with the platform arrow suppressed reads as a plain box: draw the caret back on */
.dep-chain{position:relative}
.dep-chain::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;margin-top:-6px;
  border-right:2px solid var(--dim);border-bottom:2px solid var(--dim);transform:rotate(45deg);pointer-events:none}
.dep-chain select{appearance:none;-webkit-appearance:none;padding-right:36px}
/* the escape hatch on a failed OAuth return: a half-finished Privy session cannot be cleared any other way, because
   signing out needs a kontract session and there isn't one yet */
.oauthback{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
.oauth-reset{margin-top:6px;align-self:center}

/* the followers / following list behind the profile's two counts */
.followlist{min-width:min(360px,82vw)}
.followlist h2{font:700 17px var(--disp);margin:0 0 12px;text-align:center}
.fl-body{max-height:60vh;overflow:auto;display:flex;flex-direction:column;gap:2px}
.fl-row a,.fl-row .fl-plain{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;color:var(--ink)}
.fl-row a:hover{background:var(--hover)}
.fl-row .who{min-width:0;display:flex;flex-direction:column;gap:1px}
.fl-row .who b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fl-row .who .sub{font:400 12px var(--mono);color:var(--faint)}

/* which chain, for a wallet that ships both providers: two addresses, two accounts, so it must be asked not guessed */
.walletpick{display:flex;flex-direction:column;gap:8px;padding:10px 12px;margin:2px 0 6px;
  background:var(--s1);border:1px solid var(--line2);border-radius:12px}
.walletpick .sub{line-height:1.45}
.walletpick .wp-row{display:flex;gap:8px}
.walletpick .wp-row .btn{flex:1;justify-content:center;gap:7px}
.walletpick .wp-addr{font:500 11px var(--mono);color:var(--faint)}

/* the acting wallet in the account menu: which address this browser would actually trade with */
.menuhead .mh-wallet{display:flex;align-items:center;gap:6px;margin-top:4px}
.menuhead .mh-wallet code{font:500 11px var(--mono);color:var(--faint)}
.menuhead .mh-wallet.unlinked code{color:var(--warn)}
.menuhead .mh-wallet.unlinked b{font:600 9.5px var(--sans);letter-spacing:.06em;text-transform:uppercase;
  color:var(--warn);background:rgba(232,196,107,.14);border-radius:5px;padding:1px 5px}

/* ── low liquidity is a warning, not a refusal (user, 2026-09-17) ────────────────────────────────────────────────────
   "the creator should be able to pair against anything and we can just provide a warning about low liquidity on the
   pair. that goes for all chains." A thin asset is SELECTABLE and carries its measured cost; the amber marks it
   without dimming it, because `.off` (opacity .45) is what "you cannot have this" looks like here and a thin asset is
   very much on offer. Only the mechanically impossible keeps `.off`. */
.pairrow.warn .pairwhy{color:var(--warn)}
.pairrow.warn .pairwhy::before{content:"⚠ ";opacity:.9}
.pairwarn{margin:8px 0 0;padding:9px 11px;border:1px solid rgba(232,196,107,.3);border-radius:8px;
  background:linear-gradient(160deg,rgba(232,196,107,.07),rgba(26,24,34,.92) 60%);
  color:var(--ink2);font-size:12.5px;line-height:1.5}

/* ══ THE PHONE LAYOUT (user, 2026-09-18) ═══════════════════════════════════════════════════════════════════════════
   A phone gets the board and nothing else until the native app exists. Four surfaces earn their space on a desktop
   and cost a whole screen on a phone, so they go: the trending rail (the board below it is a superset), the six stat
   tiles (two of which read $0 before launch), the search's own row, and the price ticker (prices you cannot act on
   here, pinned to 36px of a small screen). Detected by VIEWPORT, not by user agent -- a 400px window is a 400px
   window whoever is holding it, UA strings lie about tablets and desktop-narrow, and an HTML response that varies by
   device cannot be cached. common.js reads the same 700px breakpoint and does not start the pollers behind them. */
@media(max-width:700px){
  .railhd,.railfeed{display:none}
  .siderail{border-bottom:1px solid var(--line)}
  .tiles{display:none}
  .sitefoot{display:none}
  body.has-footbar{padding-bottom:0}

  /* ONE header row, where round 6 gave the search a row of its own. The old fix was needed because the
     bar was a grid whose right column could not grow; as a nowrap flex row with `flex:none` on the
     actions, the search is the only thing that can shrink, so the group can no longer overflow. */
  .top{flex-wrap:nowrap;padding:8px 12px;gap:8px}
  .top .search{order:1;flex:1 1 auto;min-width:0;height:42px;padding:0 14px}
  .top .search input{font-size:16px}      /* 16px or Safari zooms the page when it takes focus */
  .top .right{order:2;flex:none;flex-wrap:nowrap;gap:7px}
  .top .topcreate{height:42px;padding:0 15px;font-size:14px}
  .top #connect{height:42px;padding:0 15px}
  .top .userbtn{height:42px}

  /* the sort and chain pickers scroll sideways rather than wrapping to two rows each, which cost
     ~150px of a phone screen between them. Same idiom as the nav strip above. */
  .sorts,#chain-tabs{flex-wrap:nowrap;overflow-x:auto;max-width:100%;scrollbar-width:none}
  .sorts::-webkit-scrollbar,#chain-tabs::-webkit-scrollbar{display:none}
  .sorts .tab,#chain-tabs .tab{flex:none}
  .bar{gap:8px}

  /* the board starts immediately, and a card is a row: picture, then everything else under it */
  .board{padding:12px 12px 34px}
  .bnote{margin-bottom:10px}
  .cards{--img:64px;--af:17px;gap:9px}
  .cards[data-size=l]{--img:84px;--af:18px}
  .card{padding:11px;gap:11px}
  .kc-wm{display:none}                    /* the paired disc needs width a phone does not have */
  .kc-foot .kc-pair .kc-pw{display:none}   /* the logo and symbol say it; the words do not fit */
  .nm{font-size:15px}
  .mc{font-size:17px}
}

/* Referrals (referrals.html) */
.refpage{padding:22px 20px 70px;max-width:980px;display:flex;flex-direction:column;gap:14px}
.reflink{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.reflink code{flex:1 1 280px;min-width:0;overflow-wrap:anywhere;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--field);font-size:13px}
.refcode{margin-top:12px}

.refstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.refstats .stat{background:var(--s1);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:4px}
.refstats .stat b{font-size:22px}.refstats .stat small{color:var(--dim);font-size:12px}
.refpay{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}.refpay select{flex:1 1 220px;min-width:0}
.refpayout{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;padding:8px 0;border-top:1px solid var(--line);font-size:13px}
.reftable{width:100%;border-collapse:collapse;font-size:13px}
.reftable th,.reftable td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.tablewrap{overflow-x:auto}
.refattest{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--ink2);margin-top:10px}
/* Terms (terms.html) */
.termspage{padding:22px 20px 70px;max-width:820px;line-height:1.6}
.termspage h2{margin-top:28px}.termspage li{margin:6px 0}

/* create page: who the creator's fee share goes to */
.feemode{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.feemode .opt-btn{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px;text-align:left;padding:10px 12px;
  min-width:0;height:auto;white-space:normal;line-height:1.35}
.feemode .opt-btn .sub{white-space:normal;text-align:left;overflow-wrap:anywhere}
.feemode .opt-btn:disabled{opacity:.45;cursor:not-allowed}
@media (max-width:560px){.feemode{grid-template-columns:1fr}}

/* FROST (user, 2026-09-21): every window -- sign-in, share, following/followers -- is the same translucent black glass
   over a blurred page, never a coloured panel, with the close button as a disc outside the top corner. fomo's look. */
.modal-back{background:rgba(4,4,7,.52);backdrop-filter:blur(10px) saturate(120%);-webkit-backdrop-filter:blur(10px) saturate(120%)}
.modal{background:rgba(16,15,22,.66);backdrop-filter:blur(28px) saturate(150%);-webkit-backdrop-filter:blur(28px) saturate(150%);
  border:1px solid rgba(255,255,255,.09);border-radius:26px;box-shadow:0 30px 90px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.05)}
.modal-x{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;padding:0;font-size:22px;color:var(--ink);
  background:rgba(22,21,30,.78);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.modal-x:hover{background:rgba(40,38,52,.9)}
@media (min-width:760px){.modal.frost > .modal-x{right:-54px;top:-54px}
  /* the share window is tall and sits near the top of the screen: its disc goes beside it, not above */
  .modal.frost.share-modal > .modal-x{right:-58px;top:0}}
@media (min-width:760px) and (max-width:1140px){.modal.frost.share-modal > .modal-x{right:12px;top:12px}}
.followmodal{width:min(640px,100%);padding:26px 18px 14px}
.fm-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid rgba(255,255,255,.08);margin:0 6px 8px}
.fm-tabs button{background:none;border:0;color:var(--dim);font:600 15px var(--sans);padding:12px 8px;cursor:pointer;position:relative}
.fm-tabs button.on{color:var(--ink)}
.fm-tabs button.on::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:2px;background:var(--accent,#7c6cff)}
.followmodal .fl-body{max-height:min(62vh,560px);overflow:auto;padding:0 6px}
.followmodal .fl-row{display:flex;align-items:center;gap:12px;padding:10px 4px;border-radius:12px}
.followmodal .fl-row:hover{background:rgba(255,255,255,.035)}
.followmodal .fl-row > a,.followmodal .fl-row > .fl-plain{display:flex;align-items:center;gap:12px;flex:1;min-width:0;color:var(--ink)}
.followmodal .fl-row .avatar{width:44px;height:44px}
.followmodal .who{display:flex;flex-direction:column;min-width:0}
.followmodal .who b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.followmodal .who .sub{text-align:left;font-size:13px}
.followmodal .fl-empty{text-align:center;padding:24px 0}

/* /ops panels (Business, Traffic): headline tiles, per-day / per-hour bars, and a responsive grid of breakdowns */
.opspage .kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-top:12px}
.opspage .kpis > div{background:var(--pane,rgba(255,255,255,.03));border:1px solid var(--line);border-radius:10px;padding:10px 12px;
  display:flex;flex-direction:column;gap:4px;font-size:12px}
.opspage .kpis > div b{font-size:18px;font-weight:600;text-align:left}
.opspage .kpis > div b .sub{font-size:11px;font-weight:400}
.an-bars{display:flex;align-items:flex-end;gap:2px;height:64px;margin:10px 0 4px;padding-bottom:2px;border-bottom:1px solid var(--line)}
.an-bars i{flex:1 1 0;min-width:2px;max-width:28px;background:var(--accent);opacity:.75;border-radius:2px 2px 0 0}
.an-bars i:hover{opacity:1}
.an-bars i.err{background:var(--down,#f97066)}
.an-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:18px 28px;margin-top:16px}
.an-grid > div{min-width:0}
.an-grid h4{margin:0 0 6px;font-size:13px;font-weight:600}
.an-grid .tablewrap{overflow-x:auto}
#ops-business .an-grid > div:has(#bz-chains){grid-column:1/-1}
/* tool mode: a venue's own create options (venue-form.js) */
#venue-form{display:flex;flex-direction:column;gap:12px}
#venue-form .vinfo{margin:0}
#venue-form .vnote{color:var(--dim)}
#venue-form .vcheck{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .12s,background .12s}
#venue-form .vcheck:hover{border-color:var(--line2)}
#venue-form .vcheck.on{border-color:var(--accent-line);background:var(--accent-soft)}
#venue-form .vcheck > input{margin-top:1px}
#venue-form .vcheck-body{display:flex;flex-direction:column;gap:4px;min-width:0}
#venue-form .vcheck-title{color:var(--ink);font-size:14px}
#venue-form .vcheck-body p{margin:0}
#venue-form .vpanel{margin-top:8px;border:1px solid var(--line);border-radius:12px;overflow:hidden}
#venue-form .vtabs{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;padding:6px;border:1px solid var(--line);border-radius:12px}
#venue-form .vtab{padding:6px 10px;border:0;border-radius:8px;background:transparent;color:var(--dim);font:inherit;font-weight:600;cursor:pointer}
#venue-form .vtab span{font-weight:400;font-size:11px;margin-left:3px}
#venue-form .vtab.on{background:var(--panel2,#1e1c27);color:var(--ink)}
#venue-form .vsearch{border:1px solid var(--line);border-radius:10px;margin-top:8px}
#venue-form .vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:8px;max-height:340px;overflow-y:auto}
#venue-form .vcard{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--line2);border-radius:10px;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-width:0}
#venue-form .vcard.on{border-color:var(--accent-line);background:var(--accent-soft)}
#venue-form .vrec{margin-top:6px;align-items:center}
#venue-form .vrecpct{display:flex;gap:8px;align-items:center}
#venue-form .vrecpct input{max-width:90px}
#venue-form .vnothere ul{margin:6px 0 0;padding-left:18px}

/* Profile, tool mode (spec/20; profile.js toolLayout): one column -- the head, then the tokens this account launched,
   largest market cap first. Each row: the token, the launchpad it went out on (.vlogo is styled with the venues), and
   its market cap over the launch day. On a phone the launchpad drops under the token. */
.pf-shell.pf-tool{grid-template-columns:minmax(0,1fr)}
.pf-launched{margin-top:22px;padding-top:22px;border-top:1px solid var(--line)}
.pf-launched .pf-secthd .sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-row.pf-launch{grid-template-columns:minmax(0,1fr) auto minmax(96px,auto)}
.pf-venue{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink2);white-space:nowrap}
.pf-launched .empty-row .btn{margin-left:8px}
@media(max-width:640px){.pf-row.pf-launch{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}
  .pf-row.pf-launch .pf-venue{grid-row:2;grid-column:1;padding-left:46px;font-size:12px}
  .pf-row.pf-launch .pf-num{grid-row:1;grid-column:2}}
/* the platform a tool-mode token launches and trades on: its own mark beside its name (common.js venueLogo) */
.vlogo{width:16px;height:16px;border-radius:4px;object-fit:contain;flex:none;vertical-align:-3px;margin-right:6px}
.vlogo.md{width:20px;height:20px;border-radius:5px;margin-right:8px;vertical-align:-5px}
.kc-venue{display:inline-flex;align-items:center;gap:0;color:var(--ink2);white-space:nowrap}
.kc-venue .vlogo{width:14px;height:14px;margin-right:5px}
.opt-btn.pick .n{display:flex;align-items:center}
.opt-btn.pick .d .ic{width:12px;height:12px;margin-right:5px;vertical-align:-1px}
.btn .vlogo{vertical-align:-3px}
/* tool mode: the four platforms sit in one row (2x2 on a phone), never 3 + 1; pons's grey mark needs a light chip */
#cf-chain.venues{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:720px){#cf-chain.venues{grid-template-columns:repeat(2,minmax(0,1fr))}}
#cf-chain.venues .opt-btn.pick .d{font-size:11px}
.vlogo[src$="pons.png"]{background:#e9e8ee;padding:1px}
.opt-btn[hidden]{display:none}

/* The create form in panes (owner 2026-10-01): each section is its own card with a numbered heading and a rule under
   it, so the page does not read as one dense column. A pane's heading is the pane itself when it is a labelled field
   (.fpane.fld), else its first child (a group heading, or a venue field). */
.fpane{border:1px solid var(--line2,var(--line));border-radius:14px;padding:18px 20px 20px;margin-top:16px;background:var(--sunk,rgba(0,0,0,.25))}
.fpane.field.fld,.fpane.fgrid{margin-top:16px}
.fpane > .fldgroup:first-child,.fpane > .field:first-child{margin-top:0}
#step-1 :is(.fpane.fld, .fpane > .fld:first-child){font:700 19px/1.3 var(--sans);letter-spacing:-.01em;text-transform:none;color:var(--sec-c,var(--ink))}
#step-1 :is(.fpane.fld, .fpane > .fld:first-child)::before{content:counter(fld, decimal-leading-zero) " / ";font:500 12px var(--mono,monospace);letter-spacing:.04em;color:var(--sec-c,var(--ink));opacity:.7;vertical-align:2px;margin-right:4px}
#step-1 :is(.fpane.fld, .fpane > .fld:first-child) > .opt{font:400 13px var(--sans);margin-left:6px}
:where(#step-1 .fpane.fld, #step-1 .fpane > .field.fld:first-child) > :where(:not(.opt)){font:400 15px/1.5 var(--sans);letter-spacing:0;color:var(--ink)}
#step-1 .fpane > .fldgroup:first-child{padding-bottom:12px;border-bottom:1px solid var(--line);margin-bottom:4px}
#step-1 :is(.fpane.fld, .fpane > .field.fld:first-child) > :is(.opt + :not(.opt), :first-child:not(.opt)){border-top:1px solid var(--line);margin-top:12px;padding-top:14px}
#venue-form > .vbound{margin-top:16px}
/* The first step has no outer box (owner 2026-10-01): "Token details" is a heading over a hairline, as on the Grind
   page, and each section floats on its own so the animated ground shows between them. The later steps keep the box. */
.panel.create:has(> #step-1:not(.hidden)){background:none;border-color:transparent;padding:0;box-shadow:none}
#step-1 > h3{display:flex;align-items:center;min-height:34px;padding-bottom:8px;margin:0 0 4px;border-bottom:1px solid var(--line);font:600 15px var(--sans)}
#step-1 .fpane{background:var(--pane);border-color:var(--line)}
.wl.wl-sm{width:18px;height:18px;border-radius:5px;vertical-align:-3px;margin-right:8px}
/* a launchpad paused until a change there is reviewed (backend/venue_status.py): the badge turns amber */
.opt-btn.paused .soon{color:var(--warn,#e0a64a);border:1px solid currentColor;background:var(--panel)}
/* the official Kontract token's card (owner 2026-10-04): first on the board with a soft violet-to-green glow, the X
   brand's Solana run; static, so it reads as a mark rather than a bump. A bump's own flash still plays over it. */
.card.official{border-color:rgba(153,69,255,.5);
  box-shadow:0 0 0 1px rgba(20,241,149,.12),0 0 26px -8px rgba(153,69,255,.55),0 0 40px -14px rgba(20,241,149,.4)}
.card.official:hover{border-color:rgba(153,69,255,.7)}

/* ---------- create: SEE YOUR ADDRESS, before a launchpad, details or a wallet (owner 2026-10-04) ---------- */
.tryaddr{--cc:var(--amber);margin:0 0 22px;padding:18px;border-radius:16px;border:1px solid var(--line2);
  background:linear-gradient(180deg,color-mix(in srgb,var(--cc) 5%,var(--s1)),var(--s1))}
.tryaddr .try-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.tryaddr .try-hd h3{margin:0}
.tryaddr > .sub{margin:6px 0 12px}
.try-fam{display:inline-flex;padding:3px;border-radius:999px;background:var(--sunk);border:1px solid var(--line2)}
.try-fam button{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:0;border-radius:999px;background:none;color:var(--dim);font:500 13px var(--sans);cursor:pointer}
.try-fam button .ic{width:14px;height:14px}
.try-fam button.on{background:var(--s3);color:var(--ink)}
.try-addr{container-type:inline-size;margin:14px 0 0;padding:14px 4px 4px;font:500 clamp(13px,1.45vw,19px)/1.35 var(--mono);color:var(--dim);
  overflow-wrap:anywhere;word-break:break-all;letter-spacing:.01em;min-height:1.4em}
.try-addr .stem{color:var(--faint)}
.try-addr .hit{color:var(--cc);font-weight:700;text-shadow:0 0 18px color-mix(in srgb,var(--cc) 40%,transparent)}
.try-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}
.try-quote{font-size:13px;color:var(--dim);display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:20px}
.try-quote .ok{color:var(--up);display:inline-flex;align-items:center;gap:5px}
.try-quote .warn{color:var(--warn)}
.try-quote .feeval{color:var(--ink);font-weight:600}
.try-quote .ic-check{width:15px;height:15px;color:var(--up)}
#cf-chain .opt-btn.suggest:not(.on){border-color:color-mix(in srgb,var(--up) 55%,var(--line2));box-shadow:0 0 0 3px color-mix(in srgb,var(--up) 14%,transparent)}
@media(max-width:640px){.tryaddr{padding:14px}.try-foot .btn{width:100%;justify-content:center}}
