/* Layout: floating pill nav over a calm lilac ground; jelly-candy color is saved for keys, avatars and primary actions. */
:root{
  --bg:#f6f4fb;
  --surface:#ffffff;
  --sunk:#efecf7;
  --ink:#16132a;
  --muted:#5f5a78;
  --line:#e4e0f0;
  --cyan:#14b4ff;
  --violet:#8b3dff;
  --pink:#ff3d9a;
  --orange:#ff8a1f;
  --good:#0f9d63;
  --bad:#e5484d;
  --jelly:linear-gradient(120deg,var(--cyan),var(--violet) 38%,var(--pink) 68%,var(--orange));
  --shadow:0 18px 40px -22px rgba(60,30,120,.35);
  --display:"Unbounded","Arial Black",system-ui,sans-serif;
  --body:"Onest",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0f0d1c;--surface:#1a1730;--sunk:#14122a;--ink:#f3f0ff;--muted:#a9a3c6;--line:#2c2846;
  --good:#3ccf8e;--bad:#ff6b70;--shadow:0 18px 40px -22px rgba(0,0,0,.7);color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0f0d1c;--surface:#1a1730;--sunk:#14122a;--ink:#f3f0ff;--muted:#a9a3c6;--line:#2c2846;
  --good:#3ccf8e;--bad:#ff6b70;--shadow:0 18px 40px -22px rgba(0,0,0,.7);color-scheme:dark}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--body);padding-inline:16px;overflow-x:hidden;padding-bottom:env(safe-area-inset-bottom,0px)}
img{max-width:100%}
[hidden]{display:none!important}
.wrap{max-width:1120px;margin:0 auto}
a{color:inherit}
:focus-visible{outline:3px solid var(--violet);outline-offset:3px;border-radius:8px}
h1,h2,h3{font-family:var(--display);text-wrap:balance;margin:0;line-height:1.08}
p{margin:0}
.eyebrow{font:500 12px/1.2 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.grad{background:var(--jelly);-webkit-background-clip:text;background-clip:text;color:transparent}
.muted{color:var(--muted)}
.mono{font-family:var(--mono);font-size:.9em}
.num{font-variant-numeric:tabular-nums}
.up{color:var(--good)}.down{color:var(--bad)}

/* nav */
.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;padding-block:14px}
.bar{display:flex;align-items:center;gap:12px;background:color-mix(in srgb,var(--surface) 84%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:999px;padding:8px 8px 8px 16px}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;font:900 18px/1 var(--display);letter-spacing:-.02em}
.brand img{height:28px;width:auto}
.links{display:flex;gap:4px;margin-left:auto}
.links a{text-decoration:none;font-weight:500;color:var(--muted);padding:8px 14px;border-radius:999px}
.links a:hover{color:var(--ink);background:var(--sunk)}
.links a.on{color:var(--ink);background:var(--sunk)}
.banner{margin-top:8px;text-align:center;font-size:13px;font-weight:500;padding:8px 14px;border-radius:14px;background:var(--surface);border:1px dashed var(--line);color:var(--muted)}
.banner b{color:var(--ink)}
.banner button{font:inherit;font-weight:600;color:var(--violet);background:none;border:0;cursor:pointer;text-decoration:underline;padding:0}
.bar .btn{margin-left:auto}

/* section tabs (icon over label), shown on app pages */
.tabbar{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--sunk);border-radius:28px;padding:6px;margin-top:10px}
.tabbar a{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px 9px;border-radius:22px;text-decoration:none;color:var(--muted);font-weight:500;font-size:14px;text-align:center;line-height:1.2;min-width:0}
.tabbar a:hover{color:var(--ink)}
.tabbar a.on{background:var(--surface);color:var(--ink);box-shadow:0 2px 10px -4px rgba(60,30,120,.25)}
.tabbar a.on svg{stroke:var(--violet)}
.tabbar svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:420px){.tabbar a{font-size:12.5px}.tabbar svg{width:24px;height:24px}}

/* bottom dock of jelly app tiles */
.dock{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:15;display:flex;gap:12px;padding:12px 14px 16px;background:#1b1830;border-radius:30px;box-shadow:0 18px 40px -16px rgba(20,10,50,.55)}
.tile{position:relative;width:58px;height:58px;border-radius:18px;display:grid;place-items:center;border:0;cursor:pointer;padding:0;text-decoration:none;box-shadow:inset 0 3px 0 rgba(255,255,255,.45),inset 0 -6px 12px rgba(0,0,0,.18),0 6px 14px -6px rgba(0,0,0,.5);transition:transform .15s ease}
.tile:hover{transform:translateY(-3px)}
.tile svg{width:30px;height:30px;fill:none;stroke:#fff;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 1px rgba(0,0,0,.25))}
.tile.t-home{background:#fff}
.tile.t-home img{height:38px;width:auto}
.tile.t-key{background:linear-gradient(160deg,#5fd0ff,var(--cyan) 45%,#2f6bff)}
.tile.t-wallet{background:linear-gradient(160deg,#3a3552,#232036)}
.tile.t-info{background:linear-gradient(160deg,#c08bff,var(--violet) 55%,#6a28d9)}
.tile.on::after{content:"";position:absolute;bottom:-9px;left:50%;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:#fff}
body.has-dock{padding-bottom:calc(110px + env(safe-area-inset-bottom,0px))}
@media (max-width:420px){.dock{gap:10px;padding:10px 12px 14px}.tile{width:54px;height:54px}}

/* buttons */
.btn{appearance:none;border:0;cursor:pointer;font:600 15px/1 var(--body);border-radius:999px;padding:12px 18px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .15s ease,opacity .15s;white-space:nowrap;color:var(--ink);background:transparent}
.btn:hover:not(:disabled){transform:translateY(-2px)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-dark{background:var(--ink);color:var(--bg)}
.btn-ghost{background:var(--sunk);color:var(--ink)}
.btn-jelly{background:var(--jelly);color:#fff;box-shadow:inset 0 2px 0 rgba(255,255,255,.45),inset 0 -4px 10px rgba(80,0,120,.25),0 12px 26px -10px var(--pink);text-shadow:0 1px 2px rgba(60,0,80,.3)}
.btn-jelly:disabled{background:var(--sunk);color:var(--muted);box-shadow:none;text-shadow:none;opacity:1}
.btn-sell{background:var(--surface);color:var(--bad);border:1.5px solid var(--bad)}
.btn-sm{padding:8px 12px;font-size:13px}
.btn-block{width:100%}

/* hero */
.hero{display:grid;grid-template-columns:1.15fr .85fr;align-items:center;gap:32px;padding-block:48px 64px}
.hero h1{font-size:clamp(42px,8vw,100px);font-weight:900;letter-spacing:-.04em}
.lede{font-size:clamp(17px,2vw,20px);color:var(--muted);max-width:32ch;margin-block:22px 30px!important}
.cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.chain{margin-top:26px;display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:6px;font:500 12px/1 var(--mono);border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 11px;color:var(--muted)}
.chip i{width:8px;height:8px;border-radius:50%;background:#f3ba2f}
.stage{position:relative;aspect-ratio:1/1.15;max-width:100%;display:grid;place-items:center}
.stage .logo{width:min(62%,290px);filter:drop-shadow(0 30px 40px rgba(139,61,255,.28));animation:bob 6s ease-in-out infinite}
.blob{position:absolute;box-shadow:inset 0 6px 10px rgba(255,255,255,.6),inset 0 -10px 18px rgba(0,0,0,.12);animation:bob 7s ease-in-out infinite}
.blob::after{content:"";position:absolute;top:16%;left:20%;width:30%;height:18%;border-radius:50%;background:rgba(255,255,255,.7)}
.b1{width:70px;height:70px;background:var(--pink);top:6%;right:8%;animation-delay:-2s;border-radius:22px}
.b2{width:46px;height:46px;background:var(--cyan);bottom:12%;left:4%;animation-delay:-4s;border-radius:50%}
.b3{width:38px;height:38px;background:var(--orange);top:30%;left:2%;animation-delay:-1s;border-radius:12px}
.b4{width:56px;height:56px;background:var(--violet);bottom:4%;right:14%;animation-delay:-3s;border-radius:50% 50% 50% 14px}
@keyframes bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-14px) rotate(4deg)}}
@media (max-width:820px){.hero{grid-template-columns:1fr;padding-block:16px 40px}.stage{order:-1;max-width:300px;margin:0 auto;width:100%}}

/* sections */
.sec{padding-block:56px;border-top:1px solid var(--line)}
.head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:16px;margin-bottom:28px}
.head h2{font-size:clamp(28px,4.4vw,48px);font-weight:700;letter-spacing:-.03em;max-width:18ch}
.head p{color:var(--muted);max-width:42ch}
.page-title{padding-block:28px 24px;display:flex;flex-wrap:wrap;gap:16px;align-items:end;justify-content:space-between}
.page-title h1{font-size:clamp(32px,5vw,56px);font-weight:900;letter-spacing:-.04em}

.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.step{background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:24px;display:flex;flex-direction:column;gap:10px;min-width:0}
.step .n{font:700 14px var(--mono);width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#fff;box-shadow:inset 0 2px 0 rgba(255,255,255,.5),inset 0 -4px 8px rgba(0,0,0,.15)}
.step:nth-child(1) .n{background:var(--cyan)}.step:nth-child(2) .n{background:var(--violet)}.step:nth-child(3) .n{background:var(--orange)}
.step h3{font-size:20px;font-weight:700}
.step p{color:var(--muted)}
@media (max-width:820px){.steps{grid-template-columns:1fr}}

/* key cards */
.keys{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.key{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:18px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow);min-width:0;text-decoration:none;transition:transform .2s ease}
.key:hover{transform:translateY(-4px)}
.who{display:flex;align-items:center;gap:10px;min-width:0}
.who>div{min-width:0}
.who b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who>div>span{display:block;font:500 12px var(--mono);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.av{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font:900 18px var(--display);color:#fff;box-shadow:inset 0 3px 0 rgba(255,255,255,.45),inset 0 -6px 10px rgba(0,0,0,.15);overflow:hidden;position:relative}
.av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.av.lg{width:88px;height:88px;border-radius:26px;font-size:36px}
.av.sm{width:32px;height:32px;border-radius:10px;font-size:13px}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-variant-numeric:tabular-nums}
.stats div{background:var(--sunk);border-radius:12px;padding:8px 10px;min-width:0}
.stats small{display:block;font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.stats strong{font-weight:600;font-size:15px;white-space:nowrap}
.supply{height:8px;border-radius:99px;background:var(--sunk);overflow:hidden}
.supply i{display:block;height:100%;background:var(--jelly);border-radius:99px;min-width:4px}
.meta{display:flex;justify-content:space-between;gap:8px;font:500 12px var(--mono);color:var(--muted)}
@media (max-width:980px){.keys{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.keys{grid-template-columns:1fr}}

/* explore toolbar */
.tools{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}
.input,.select,textarea.input{font:500 15px var(--body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px;min-width:0}
.tools .input{flex:1 1 220px}
.seg{display:flex;background:var(--sunk);border-radius:999px;padding:4px;gap:2px}
.seg button{font:600 13px var(--body);border:0;background:transparent;color:var(--muted);padding:8px 12px;border-radius:999px;cursor:pointer}
.seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}

/* layout grids */
.split2{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:900px){.split2{grid-template-columns:1fr}}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:22px;min-width:0}
.panel h3{font-size:16px;font-weight:700;margin-bottom:14px}
.stack{display:flex;flex-direction:column;gap:20px;min-width:0}

/* club page */
.profile{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.profile h1{font-size:clamp(28px,4.4vw,44px);font-weight:900;letter-spacing:-.03em;overflow-wrap:anywhere}
.profile .sub{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.bio{margin-top:16px!important;color:var(--muted);max-width:60ch;overflow-wrap:anywhere}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:20px}
.kpi{background:var(--sunk);border-radius:16px;padding:12px 14px;min-width:0}
.kpi small{display:block;font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.kpi strong{font:700 18px var(--body);font-variant-numeric:tabular-nums;white-space:nowrap}
@media (max-width:600px){.kpis{grid-template-columns:repeat(2,1fr)}}
.curve svg{width:100%;height:auto;display:block}
.curve text{font:500 10px var(--mono);fill:var(--muted)}

.trade .tabs{display:grid;grid-template-columns:1fr 1fr;background:var(--sunk);border-radius:999px;padding:4px;margin-bottom:16px}
.trade .tabs button{font:700 14px var(--body);border:0;background:transparent;color:var(--muted);padding:10px;border-radius:999px;cursor:pointer}
.trade .tabs button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.stepper{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.stepper button{width:44px;height:44px;border-radius:14px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:700 20px var(--body);cursor:pointer}
.stepper input{flex:1;text-align:center;font:700 22px var(--body);font-variant-numeric:tabular-nums}
.rows{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;font-size:14px}
.rows div{display:flex;justify-content:space-between;gap:10px}
.rows dt{color:var(--muted)}
.rows dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.rows .total{border-top:1px dashed var(--line);padding-top:8px;font-size:16px}
.note{font-size:13px;color:var(--muted);margin-top:10px!important}

.list{display:flex;flex-direction:column}
.li{display:flex;align-items:center;gap:12px;padding-block:10px;border-top:1px solid var(--line);min-width:0;text-decoration:none}
.li:first-child{border-top:0}
.li .grow{flex:1;min-width:0}
.li .grow b{display:block;font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.li .grow span{display:block;font-size:12px;color:var(--muted)}
.li .right{text-align:right;font-variant-numeric:tabular-nums;font-size:14px;font-weight:600;white-space:nowrap}
.li .right .tag{display:inline-block;margin-bottom:4px}
.li .right span:not(.tag){display:block;font-size:12px;font-weight:500;color:var(--muted)}
.tag{font:700 11px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;padding:5px 8px;border-radius:8px}
.tag.buy{background:color-mix(in srgb,var(--good) 16%,transparent);color:var(--good)}
.tag.sell{background:color-mix(in srgb,var(--bad) 16%,transparent);color:var(--bad)}
.empty{padding:28px 10px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:4px}

/* forms */
.form{display:grid;gap:18px}
.field{display:grid;gap:6px;min-width:0}
.field label{font-weight:600;font-size:14px}
.field .hint{font-size:13px;color:var(--muted)}
.field .input{width:100%}
textarea.input{resize:vertical;min-height:90px;font-family:var(--body)}
.range{display:flex;align-items:center;gap:12px}
.range input{flex:1;accent-color:var(--violet)}
.range output{font:700 15px var(--body);font-variant-numeric:tabular-nums;min-width:56px;text-align:right}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:560px){.two{grid-template-columns:1fr}}

/* fees */
.fees{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
.splitbar{display:flex;height:72px;border-radius:22px;overflow:hidden;box-shadow:var(--shadow)}
.splitbar div{display:flex;align-items:center;justify-content:center;color:#fff;font:700 15px var(--display);box-shadow:inset 0 3px 0 rgba(255,255,255,.4)}
.legend{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:12px}
.legend li{display:flex;gap:12px;align-items:baseline}
.legend i{flex:none;width:12px;height:12px;border-radius:4px}
.legend span{color:var(--muted)}
.big{font:900 clamp(64px,10vw,120px)/1 var(--display);letter-spacing:-.05em}
@media (max-width:820px){.fees{grid-template-columns:1fr}}

.faq{display:grid;gap:10px;max-width:780px}
details{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:4px 20px}
summary{cursor:pointer;list-style:none;font-weight:600;font-size:17px;padding-block:16px;display:flex;justify-content:space-between;gap:16px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font:700 20px var(--mono);color:var(--violet);transition:transform .2s}
details[open] summary::after{transform:rotate(45deg)}
details p{margin:0 0 18px;color:var(--muted);max-width:62ch}

.closer{text-align:center;padding-block:72px}
.closer img{height:96px;width:auto;margin:0 auto 20px;display:block}
.closer h2{font-size:clamp(32px,6vw,64px);font-weight:900;letter-spacing:-.04em;margin-bottom:24px}

.foot{border-top:1px solid var(--line);padding-block:28px 40px;margin-top:40px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;color:var(--muted);font-size:14px}
.foot a{text-decoration:none}
.foot{align-items:center}
.foot-ca{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;font:500 13px var(--mono)}
.foot-ca a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}
.foot-ca b{font-family:var(--body);color:var(--ink)}
.foot-links{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.foot-note{flex-basis:100%;margin:0;font:400 13px/1.5 var(--body);color:var(--muted)}
.foot .chip{cursor:pointer;text-decoration:none;color:var(--ink)}

/* portfolio */
.sum{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}
.sum .panel{display:flex;flex-direction:column;gap:6px}
.sum strong{font:900 clamp(22px,3vw,30px) var(--display);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
@media (max-width:760px){.sum{grid-template-columns:1fr}}

/* toast + modal */
.toast{position:fixed;left:50%;bottom:calc(104px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:16px;font-weight:500;font-size:14px;max-width:calc(100% - 32px);width:max-content;text-align:center;z-index:40;box-shadow:var(--shadow)}
.toast a{color:inherit;font-weight:700}
.toast.err{background:var(--bad);color:#fff}

.modal{position:fixed;inset:0;z-index:50;background:rgba(15,10,30,.45);display:grid;place-items:center;padding:16px}
.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:24px;width:min(380px,100%);display:grid;gap:14px;box-shadow:var(--shadow)}
.modal-card h3{font-size:20px}
.wallet-list{display:grid;gap:8px}
.wallet-list button{display:flex;align-items:center;gap:12px;width:100%;border:1px solid var(--line);background:var(--sunk);color:var(--ink);border-radius:14px;padding:12px;font:600 15px var(--body);cursor:pointer;text-align:left}
.wallet-list button:hover{border-color:var(--violet)}
.wallet-list img{width:28px;height:28px;border-radius:8px}

.skeleton{background:linear-gradient(90deg,var(--sunk),var(--surface),var(--sunk));background-size:200% 100%;animation:sh 1.4s linear infinite;border-radius:22px;min-height:190px}
@keyframes sh{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
