*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:88px;color-scheme:dark}
body{margin:0;background:var(--void);color:var(--text);font-family:var(--font-sans);font-size:16px;line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased}
h1,h2{margin:0;font-family:var(--font-serif);font-weight:600;letter-spacing:-.02em}
p{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
button{font:inherit;color:inherit}
a{color:inherit}
a,button{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--azure);outline-offset:3px}
code{font-family:var(--font-mono)}
.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.eyebrow{margin:0;display:block;color:var(--muted);font-size:10px;letter-spacing:.16em;text-transform:uppercase}

/* progress */
.progress{position:fixed;inset:0 0 auto 0;height:3px;z-index:50;background:transparent;pointer-events:none}
.progress i{display:block;height:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--deep),var(--azure),var(--ice))}

/* shell */
.top,main,.foot{width:min(1120px,calc(100% - var(--gutter) * 2));margin-inline:auto}
.top{position:sticky;top:max(12px,env(safe-area-inset-top));z-index:40;padding-top:12px}
.nav{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 8px 6px 20px;border:1px solid var(--line);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--void) 72%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.brand{display:inline-flex;align-items:center;min-height:var(--tap);text-decoration:none}
.brand strong{font-family:var(--font-serif);font-size:22px;font-weight:600;letter-spacing:-.02em;line-height:1}
.nav-links{display:flex;align-items:center;gap:4px}
.nav-links a{display:inline-flex;align-items:center;min-height:var(--tap);padding:0 14px;border-radius:var(--radius-pill);color:var(--muted);font-size:12px;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;transition:color .2s,background-color .2s}
.nav-links a:hover,.nav-links a.active{color:var(--text);background:color-mix(in srgb,var(--azure) 22%,transparent)}
.socials{display:flex;gap:8px}
.soc{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border:1px solid var(--line);border-radius:50%;color:var(--text);background:transparent;text-decoration:none;transition:border-color .2s,background-color .2s}
.soc svg{width:20px;height:20px;fill:currentColor}
a.soc:hover{border-color:var(--line-strong);background:color-mix(in srgb,var(--azure) 18%,transparent)}
.soc[aria-disabled="true"]{color:color-mix(in srgb,var(--mist) 55%,transparent);cursor:not-allowed}

/* contract slot */
.ca{margin-top:20px;padding:18px 20px;border:1px solid var(--line-strong);border-radius:var(--radius-card);background:var(--panel);position:relative;overflow:hidden}
.ca-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.ca-btn{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:var(--tap);padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius-row);background:var(--wash);color:var(--text);text-align:left;cursor:pointer;transition:border-color .2s,background-color .2s}
button.ca-btn:hover{border-color:var(--line-strong);background:color-mix(in srgb,var(--azure) 14%,transparent)}
.ca-btn code{flex:1;min-width:0;font-size:clamp(15px,2.4vw,30px);line-height:1.25;letter-spacing:.01em;overflow-wrap:anywhere;word-break:break-all}
.ca-act{flex:none;color:var(--accent);font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.ca-btn[aria-disabled="true"]{cursor:default;color:var(--muted)}
.ca-btn[aria-disabled="true"] code{color:var(--muted)}
.ca[data-copied="true"] .ca-act{color:var(--text)}

/* hero */
.hero{position:relative;display:grid;align-items:center;min-height:640px;padding:56px 0 40px}
.hero-art{position:absolute;inset:-40px calc(50% - 50vw) 0;pointer-events:none;overflow:hidden}
.layer{position:absolute;inset:0;will-change:transform}
.stars{width:100%;height:100%}
.mesh .blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;animation:drift 22s ease-in-out infinite alternate}
.b1{width:520px;height:520px;right:6%;top:2%;background:radial-gradient(circle,var(--deep),transparent 70%)}
.b2{width:420px;height:420px;right:30%;bottom:6%;background:radial-gradient(circle,color-mix(in srgb,var(--ember) 45%,transparent),transparent 70%);animation-duration:28s;animation-delay:-8s}
.b3{width:460px;height:460px;left:-4%;top:10%;background:radial-gradient(circle,var(--abyss),transparent 70%);animation-duration:34s;animation-delay:-14s}
.rings .ring{position:absolute;border:1px solid color-mix(in srgb,var(--sand) 26%,transparent);border-radius:50%;right:2%;top:50%;translate:0 -50%}
.r1{width:min(760px,86vw);height:min(300px,34vw);rotate:-8deg}
.r2{width:min(920px,100vw);height:min(400px,44vw);rotate:-8deg;border-color:color-mix(in srgb,var(--azure) 30%,transparent)}
.orb .planet{position:absolute;right:max(-60px,calc(50vw - 560px - 60px));top:50%;translate:0 -50%;width:min(520px,70vw);height:auto;filter:drop-shadow(0 0 60px var(--glow));animation:float 12s ease-in-out infinite alternate}
.hero-copy{position:relative}
.hero-copy>.eyebrow,.hero-copy>h1,.hero-copy>.lead{max-width:640px}
.hero h1{margin:8px 0 18px;font-size:clamp(36px,7vw,64px);line-height:.98}
.lead{max-width:38rem;margin-bottom:32px;color:var(--muted);font-size:18px;line-height:1.55}
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:24px}
.steps li,.stat{position:relative;overflow:hidden;padding:18px;border:1px solid var(--line);border-radius:var(--radius-tile);background:color-mix(in srgb,var(--void) 64%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.steps strong{display:block;margin:8px 0;font-size:20px;font-weight:600}
.steps li>span:last-child{display:block;color:var(--muted);font-size:14px;line-height:1.45}
.flow{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:28px;color:var(--muted);font-family:var(--font-mono);font-size:12px}
.flow em{color:var(--accent);font-style:normal}
.flow i{font-style:normal}
.cta{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 28px;border-radius:var(--radius-pill);background:var(--ice);color:var(--void);font-size:16px;letter-spacing:.04em;text-decoration:none;transition:transform .25s var(--ease-out),box-shadow .25s}
.cta:hover{transform:translateY(-2px);box-shadow:0 10px 36px var(--glow)}

/* spotlight */
.spot::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--azure) 28%,transparent),transparent 70%)}
.spot:hover::before{opacity:1}
.spot>*{position:relative}

/* ticker */
.ticker{position:relative;overflow:hidden;margin:8px 0 24px;border-block:1px solid var(--line);mask-image:linear-gradient(90deg,transparent,black 8%,black 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,black 8%,black 92%,transparent)}
.track{display:flex;gap:8px;width:max-content;padding:10px 0;animation:slide var(--dur,45s) linear infinite}
.ticker:hover .track{animation-play-state:paused}
.tick{display:inline-flex;align-items:center;gap:10px;min-height:36px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:12px;white-space:nowrap}
.tick b{font-weight:500;color:var(--text)}
.tick span{color:var(--muted)}
.tick.skeleton{width:150px}

/* blocks */
.block{padding:56px 0 8px}
.block-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px}
.block-head h2{margin-top:6px;font-size:clamp(28px,4.4vw,44px);line-height:1}
.head-tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.tabs{display:inline-flex;padding:4px;border:1px solid var(--line);border-radius:var(--radius-pill)}
.tab{min-height:var(--tap);padding:0 16px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--muted);font-size:12px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:color .2s,background-color .2s}
.tab[aria-selected="true"]{color:var(--text);background:color-mix(in srgb,var(--azure) 28%,transparent)}
.tab:hover{color:var(--text)}
.status{display:inline-flex;align-items:center;gap:10px;min-height:var(--tap);padding:0 16px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--panel);color:var(--muted);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.dot{width:8px;height:8px;border-radius:50%;background:var(--sand);color:var(--sand)}
.status[data-state="live"] .dot{background:var(--ice);color:var(--ice);animation:pulse 1.8s ease-out infinite}
.status[data-state="syncing"] .dot{animation:pulse 1.2s ease-out infinite}
.status[data-state="error"]{color:var(--down)}
.status[data-state="error"] .dot{background:var(--down);color:var(--down)}
.status[data-state="paused"] .dot{background:var(--steel);color:var(--steel)}
.market-error{margin-bottom:12px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--ember) 45%,transparent);border-radius:var(--radius-row);color:var(--down);font-size:14px}

/* rows */
.rows-head,.row{display:grid;grid-template-columns:32px minmax(0,2.4fr) minmax(0,1.1fr) minmax(0,.9fr) minmax(0,1.1fr) minmax(0,1.1fr) var(--tap);align-items:center;gap:12px}
.rows-head{padding:0 16px 8px;color:var(--muted);font-size:10px;letter-spacing:.16em;text-transform:uppercase}
.rows-head span:nth-child(n+3):nth-child(-n+6){text-align:right}
.rows{display:flex;flex-direction:column;gap:8px}
.row{position:relative;overflow:hidden;min-height:68px;padding:10px 16px;border:1px solid var(--line);border-radius:var(--radius-row);background:color-mix(in srgb,var(--void) 60%,transparent);transition:border-color .25s,background-color .25s}
.row:hover{border-color:var(--line-strong)}
.row.is-in{animation:rowIn var(--fade) var(--ease-out) both;animation-delay:calc(var(--i,0) * var(--stagger))}
.rank{color:var(--muted);font-family:var(--font-mono);font-size:12px}
.tok{display:flex;align-items:center;gap:12px;min-width:0}
.logo{flex:none;width:40px;height:40px;border-radius:12px;object-fit:cover;background:var(--wash)}
.logo.fb{display:inline-flex;align-items:center;justify-content:center;color:var(--accent);font-family:var(--font-mono);font-size:15px;background:color-mix(in srgb,var(--abyss) 70%,transparent);border:1px solid var(--line)}
.names{min-width:0}
.names strong,.names span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.names strong{font-size:15px;font-weight:600}
.names span{color:var(--muted);font-size:12px}
.cell{font-family:var(--font-mono);font-size:13px;text-align:right;transition:color .3s}
.cell.up{color:var(--up)}
.cell.down{color:var(--down)}
.cell.flash-up{animation:flashUp 900ms var(--ease-out)}
.cell.flash-down{animation:flashDown 900ms var(--ease-out)}
.copy{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--accent);cursor:pointer;transition:border-color .2s,background-color .2s}
.copy:hover{border-color:var(--line-strong);background:color-mix(in srgb,var(--azure) 16%,transparent)}
.copy svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.copy[data-done="true"]{color:var(--text);border-color:var(--line-strong)}
.copy[disabled]{opacity:.4;cursor:default}
.skeleton{position:relative;overflow:hidden;background:var(--wash);color:transparent}
.skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ice) 9%,transparent),transparent);animation:shimmer 1.4s linear infinite}
.sk{display:block;height:14px;border-radius:7px;background:var(--wash);position:relative;overflow:hidden}
.sk::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ice) 9%,transparent),transparent);animation:shimmer 1.4s linear infinite}
.sk.logo-sk{width:40px;height:40px;border-radius:12px}
.sk.w60{width:60%;margin-left:auto}

/* stat tiles */
.grid-4,.grid-3{display:grid;gap:14px}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px}
.stat{border-radius:var(--radius-card);padding:20px;background:var(--panel-solid)}
.stat strong{display:block;margin:8px 0 6px;font-family:var(--font-serif);font-size:32px;font-weight:600;letter-spacing:-.03em;line-height:1.05;overflow-wrap:anywhere}
.stat>span:not(.eyebrow):not(.bar){color:var(--muted);font-size:13px;line-height:1.4}
.stat strong.up{color:var(--up)}
.stat strong.down{color:var(--down)}
.coverage{margin-top:14px}
.bar{display:block;height:8px;margin-top:14px;border-radius:99px;background:var(--wash);overflow:hidden}
.bar i{display:block;height:100%;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--deep),var(--sand));transition:transform 900ms var(--ease-out)}

/* footer */
.foot{margin-top:72px;padding:28px 0 calc(40px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.foot-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
.foot-brand{font-family:var(--font-serif);font-size:20px;font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:8px;min-height:var(--tap);padding:0 16px;border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--muted);font-family:var(--font-mono);font-size:12px;text-decoration:none}
.chip b{font-weight:500;color:var(--text)}
a.chip:hover{border-color:var(--line-strong)}
.foot-note{margin-top:16px;color:var(--muted);font-size:13px}

/* motion primitives */
.js .reveal{opacity:0}
.js .reveal.in{opacity:1}
@keyframes shimmer{to{transform:translateX(100%)}}
@keyframes slide{to{transform:translateX(-50%)}}
@keyframes drift{from{transform:translate3d(-30px,-20px,0) scale(1)}to{transform:translate3d(40px,30px,0) scale(1.12)}}
@keyframes float{from{transform:translateY(-8px)}to{transform:translateY(10px)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,currentColor 55%,transparent)}100%{box-shadow:0 0 0 10px transparent}}
@keyframes rowIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes flashUp{0%{background:color-mix(in srgb,var(--ice) 28%,transparent)}100%{background:transparent}}
@keyframes flashDown{0%{background:color-mix(in srgb,var(--ember) 30%,transparent)}100%{background:transparent}}

/* responsive */
@media (max-width:1100px){
  .grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:960px){
  .steps{grid-template-columns:1fr}
  .lead{font-size:16px}
  .grid-3{grid-template-columns:1fr}
  .orb .planet{right:-24%;top:76%;width:min(460px,92vw);opacity:.4}
  .hero{min-height:0;padding:40px 0 24px}
  .nav{padding:6px 8px 6px 16px}
  .brand strong{font-size:18px}
}
@media (max-width:720px){
  .nav{flex-wrap:wrap;row-gap:0;border-radius:28px}
  .nav-links{order:3;width:100%;justify-content:center;border-top:1px solid var(--line);padding-top:2px;margin-top:2px}
  .rows-head{display:none}
  .row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) var(--tap);grid-template-areas:"tok tok copy" "price chg chg" "vol liq liq";row-gap:8px;padding:14px}
  .row .rank{display:none}
  .row .tok{grid-area:tok}
  .row .c-price{grid-area:price}
  .row .c-chg{grid-area:chg}
  .row .c-vol{grid-area:vol}
  .row .c-liq{grid-area:liq}
  .row .copy{grid-area:copy}
  .cell{text-align:left}
  .cell::before{content:attr(data-l);display:block;color:var(--muted);font-size:10px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:2px}
  .grid-4{grid-template-columns:1fr}
  .stat strong{font-size:26px}
  .head-tools{width:100%;justify-content:space-between}
}
@media (max-width:420px){
  .tab{padding:0 12px}
  .status{padding:0 12px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js .reveal{opacity:1}
  .track{width:auto;overflow-x:auto}
  .layer{transform:none!important}
  .bar i{transform:scaleX(var(--w,0))!important}
}
