:root{--bg:#0b1020;--bg2:#121a33;--card:rgba(20,28,54,.92);--line:rgba(140,160,220,.16);--tx:#eef2ff;--mut:#9aa6c8;--acc:#5b8cff;--acc2:#22d3a6;--up:#22c58b;--dn:#ff5c7a;--warn:#ffc857;--r:18px;--font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Inter,system-ui,sans-serif;--disp:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",Roboto,system-ui,sans-serif;--glow:0 10px 30px rgba(0,0,0,.35)}
[data-theme=space]{--bg:#05060f;--bg2:#0a0d22;--card:rgba(12,16,38,.8);--line:rgba(150,170,255,.18);--tx:#f1f4ff;--mut:#a3acd6;--acc:#8b7bff;--acc2:#48e0ff;--up:#4ef0b0;--dn:#ff6b8b;--disp:"Avenir Next","Futura","SF Pro Display",system-ui,sans-serif;--glow:0 0 0 1px rgba(139,123,255,.12),0 12px 40px rgba(20,10,80,.45)}
[data-theme=neon]{--bg:#120a1f;--bg2:#1d0f33;--card:rgba(32,16,56,.92);--line:rgba(255,80,200,.2);--tx:#fff0fb;--mut:#c9a6d8;--acc:#ff4fd8;--acc2:#00e5ff;--up:#3dffb5;--dn:#ff5577;--glow:0 0 24px rgba(255,79,216,.15)}
[data-theme=paper]{--bg:#f5f3ee;--bg2:#ece8de;--card:#ffffff;--line:rgba(30,30,50,.12);--tx:#1b1d2a;--mut:#5f6478;--acc:#2f5bea;--acc2:#0f9d75;--up:#0f9d58;--dn:#d93654;--warn:#b7791f;--glow:0 6px 20px rgba(30,30,60,.08)}
[data-theme=forest]{--bg:#0b1612;--bg2:#10201a;--card:rgba(18,36,29,.93);--line:rgba(140,220,170,.16);--tx:#ecfff4;--mut:#9cc2ad;--acc:#4cd38a;--acc2:#e8c15a;--up:#4cd38a;--dn:#ff7a6b}
[data-theme=sunset]{--bg:#1a0f14;--bg2:#2a141c;--card:rgba(44,22,30,.93);--line:rgba(255,170,120,.18);--tx:#fff3ec;--mut:#d6aa9a;--acc:#ff8a4c;--acc2:#ffd166;--up:#5fe3a1;--dn:#ff5c7a}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--bg);scroll-padding:70px 0 110px}
body{margin:0;font:15px/1.45 var(--font);color:var(--tx);background:radial-gradient(1200px 600px at 80% -10%,color-mix(in srgb,var(--acc) 22%,transparent),transparent 60%),radial-gradient(900px 500px at -10% 30%,color-mix(in srgb,var(--acc2) 12%,transparent),transparent 60%),var(--bg);background-attachment:fixed;min-height:100vh;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
[data-theme=paper] body{background:var(--bg)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.sky{position:fixed;inset:0;z-index:-1;pointer-events:none;display:none;overflow:hidden}
[data-theme=space] .sky{display:block}
.stars{position:absolute;inset:-50%;background-repeat:repeat}
.s1{background-image:radial-gradient(1px 1px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 120px 80px,#cfd8ff,transparent),radial-gradient(1.5px 1.5px at 200px 150px,#fff,transparent),radial-gradient(1px 1px at 260px 40px,#bcd,transparent),radial-gradient(1px 1px at 330px 210px,#fff,transparent),radial-gradient(1px 1px at 60px 240px,#dfe6ff,transparent);background-size:360px 280px;opacity:.75;animation:drift 160s linear infinite}
.s2{background-image:radial-gradient(2px 2px at 50px 90px,#fff,transparent),radial-gradient(1.5px 1.5px at 300px 300px,#9fe8ff,transparent),radial-gradient(2px 2px at 420px 120px,#e6dcff,transparent);background-size:520px 420px;opacity:.6;animation:drift 90s linear infinite reverse,twinkle 4s ease-in-out infinite alternate}
.neb{position:absolute;inset:0;background:radial-gradient(40% 30% at 75% 15%,rgba(139,123,255,.28),transparent 70%),radial-gradient(35% 28% at 15% 70%,rgba(72,224,255,.16),transparent 70%),radial-gradient(30% 25% at 60% 85%,rgba(255,110,200,.12),transparent 70%);filter:blur(10px);animation:breathe 14s ease-in-out infinite alternate}
@keyframes drift{to{transform:translate3d(-180px,-90px,0)}}
@keyframes twinkle{from{opacity:.35}to{opacity:.8}}
@keyframes breathe{from{opacity:.75}to{opacity:1}}
.sim-strip{position:sticky;top:0;z-index:30;text-align:center;font-size:11px;letter-spacing:.12em;font-weight:700;padding:calc(4px + env(safe-area-inset-top)) 8px 4px;background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--warn) 92%,#000) 0 14px,color-mix(in srgb,var(--warn) 78%,#000) 14px 28px);color:#1d1400}
.top{display:flex;align-items:center;gap:10px;padding:12px 16px 4px;max-width:880px;margin:0 auto}
.me{display:flex;align-items:center;gap:10px;background:none;border:0;padding:0;text-align:left;min-width:0;flex:1}
.av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:22px;background:linear-gradient(135deg,var(--acc),var(--acc2));box-shadow:0 0 0 2px var(--bg),0 0 0 3px color-mix(in srgb,var(--acc) 60%,transparent);flex:0 0 auto;font-weight:800;color:#fff}
.av.ini{font-size:15px;letter-spacing:.02em}
.nm{display:flex;flex-direction:column;min-width:0}.nm b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nm small{color:var(--mut);font-size:12px}
.brand{display:flex;align-items:center;gap:6px;font-weight:800;font-family:var(--disp);letter-spacing:.02em;color:var(--acc2)}.brand svg{width:22px;height:22px}.brand span{color:var(--tx)}
.icon{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--card);font-size:20px}
main{max-width:880px;margin:0 auto;padding:8px 12px 12px}
.view{display:grid;gap:12px;animation:in .25s ease-out}
.view[hidden]{display:none}
@media(min-width:760px){#v-home{grid-template-columns:1fr 1fr}#v-home .hero,#v-home #perfCard,#v-home #holdCard,#v-home #histCard{grid-column:1/-1}}
@keyframes in{from{opacity:0;transform:translateY(6px)}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--glow);min-width:0}
.card h2{margin:0 0 10px;font:700 13px/1.2 var(--disp);letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
[data-theme=space] .card h2{letter-spacing:.2em;color:color-mix(in srgb,var(--acc2) 70%,var(--tx))}
[data-theme=space] .card{position:relative}
[data-theme=space] .card:before,[data-theme=space] .card:after{content:"";position:absolute;width:14px;height:14px;border:2px solid color-mix(in srgb,var(--acc2) 70%,transparent);pointer-events:none}
[data-theme=space] .card:before{top:6px;left:6px;border-right:0;border-bottom:0;border-radius:6px 0 0 0}
[data-theme=space] .card:after{bottom:6px;right:6px;border-left:0;border-top:0;border-radius:0 0 6px 0}
.muted{color:var(--mut)}.small{font-size:13px}.tiny{font-size:11.5px}
.up{color:var(--up)}.dn{color:var(--dn)}
.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:700;background:linear-gradient(135deg,var(--acc),color-mix(in srgb,var(--acc) 60%,var(--acc2)));color:#fff;min-height:44px;white-space:nowrap}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--tx)}
.btn.buy{background:linear-gradient(135deg,var(--up),color-mix(in srgb,var(--up) 70%,#000))}
.btn.sell{background:linear-gradient(135deg,var(--dn),color-mix(in srgb,var(--dn) 70%,#000))}
.btn.sm{padding:7px 11px;min-height:34px;font-size:13px;border-radius:10px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid color-mix(in srgb,var(--acc2) 70%,transparent);outline-offset:2px}
input,select,textarea{background:color-mix(in srgb,var(--bg) 60%,transparent);border:1px solid var(--line);border-radius:12px;padding:11px 12px;min-height:44px;width:100%;font-size:16px}
[data-theme=paper] input,[data-theme=paper] select,[data-theme=paper] textarea{background:#fff}
label{display:block;font-size:12.5px;color:var(--mut);margin:10px 0 4px;font-weight:600}
.searchbox{display:flex;gap:8px}.searchbox input{flex:1;min-width:0}
.results{display:grid;gap:6px;margin-top:10px}
.row{display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 35%,transparent);text-align:left;width:100%;min-height:52px}
.row .sym{font-weight:800;font-family:var(--disp);min-width:58px}.row .nmx{flex:1;min-width:0;color:var(--mut);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .rt{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.seg{display:flex;background:color-mix(in srgb,var(--bg) 55%,transparent);border:1px solid var(--line);border-radius:12px;padding:3px;gap:3px;flex-wrap:wrap}
.seg button{flex:1;border:0;background:none;padding:8px 6px;border-radius:9px;font-weight:700;font-size:13px;color:var(--mut);min-height:36px}
.seg button.on{background:var(--acc);color:#fff}
.seg.buysell button.on[data-v=buy]{background:var(--up)}.seg.buysell button.on[data-v=sell]{background:var(--dn)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}
.kpi{border:1px solid var(--line);border-radius:14px;padding:10px 12px;background:color-mix(in srgb,var(--bg) 30%,transparent);min-width:0}
.kpi .l{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);font-weight:700}
.kpi .v{font:800 clamp(16px,4.6vw,20px)/1.2 var(--disp);font-variant-numeric:tabular-nums;margin-top:2px;overflow-wrap:anywhere}
[data-theme=space] .kpi .l:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--acc2);box-shadow:0 0 8px var(--acc2);margin-right:6px;vertical-align:1px;animation:blink 2.4s ease-in-out infinite}
@keyframes blink{50%{opacity:.35}}
.hero{position:relative;overflow:hidden}
.hero .eq{font:800 clamp(34px,10vw,48px)/1.05 var(--disp);font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin:4px 0}
[data-theme=space] .hero .eq{background:linear-gradient(90deg,#fff,#c9c2ff 50%,var(--acc2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero .lab{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:12.5px;font-weight:700;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 40%,transparent)}
.pill.sim{background:color-mix(in srgb,var(--warn) 18%,transparent);border-color:color-mix(in srgb,var(--warn) 50%,transparent);color:var(--warn);letter-spacing:.08em}
.pill.up{border-color:color-mix(in srgb,var(--up) 40%,transparent)}.pill.dn{border-color:color-mix(in srgb,var(--dn) 40%,transparent)}
.rocket{display:none;position:absolute;right:-6px;top:6px;width:96px;height:96px;opacity:.95;pointer-events:none}
[data-theme=space] .rocket{display:block;animation:hover 6s ease-in-out infinite}
@keyframes hover{50%{transform:translateY(-6px) rotate(-2deg)}}
.flame{transform-origin:50% 0;animation:flick .18s ease-in-out infinite alternate}
@keyframes flick{to{transform:scaleY(.75)}}
[data-theme=space] .hero .eq,[data-theme=space] .hero .lab{position:relative;z-index:1}
[data-theme=space] .hero .eqwrap{padding-right:70px}
.chart{width:100%;height:auto;display:block;touch-action:pan-y}
.chart .grid{stroke:var(--line);stroke-width:1}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--mut);margin-top:6px}.legend i{display:inline-block;width:10px;height:3px;border-radius:2px;margin-right:5px;vertical-align:middle}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);text-align:right;font-weight:700;padding:6px 4px;border-bottom:1px solid var(--line)}
th:first-child,td:first-child{text-align:left}
td{padding:10px 4px;border-bottom:1px solid var(--line);text-align:right;font-size:14px;vertical-align:top}
tr:last-child td{border-bottom:0}
td .sub{display:block;color:var(--mut);font-size:12px}
tr.click{cursor:pointer}tr.click:hover td{background:color-mix(in srgb,var(--acc) 7%,transparent)}
.empty{padding:18px 6px;text-align:center;color:var(--mut)}
.empty b{display:block;color:var(--tx);font-size:16px;margin-bottom:4px}
.donut{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.donut svg{width:150px;height:150px;flex:0 0 auto}
.dl{display:grid;gap:6px;flex:1;min-width:160px;font-size:13px}.dl div{display:flex;align-items:center;gap:8px}.dl i{width:10px;height:10px;border-radius:3px;flex:0 0 auto}.dl span{flex:1}
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.badge{border:1px solid var(--line);border-radius:14px;padding:10px;background:color-mix(in srgb,var(--bg) 30%,transparent)}
.badge .e{font-size:26px}.badge b{display:block;font-size:13.5px;margin-top:2px}.badge small{color:var(--mut);font-size:12px;display:block}
.badge.locked{opacity:.45;filter:grayscale(1)}
.themes{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.th{border:2px solid var(--line);border-radius:14px;padding:0;overflow:hidden;background:none;text-align:left}
.th.on{border-color:var(--acc2)}
.th .sw{height:54px;display:block}.th span{display:block;padding:7px 9px;font-weight:700;font-size:13px}
.emojis{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin-top:6px}
.emojis button{aspect-ratio:1;border-radius:10px;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 40%,transparent);font-size:22px;padding:0;min-height:38px}
.emojis button.on{border-color:var(--acc2);background:color-mix(in srgb,var(--acc2) 18%,transparent)}
.toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.toggle:last-child{border-bottom:0}.toggle b{display:block;font-size:14.5px}.toggle small{color:var(--mut)}
.sw2{position:relative;width:52px;height:32px;flex:0 0 auto}.sw2 input{opacity:0;position:absolute;inset:0;margin:0;min-height:0;cursor:pointer;z-index:1}
.sw2 i{position:absolute;inset:0;border-radius:999px;background:color-mix(in srgb,var(--mut) 35%,transparent);transition:.2s}
.sw2 i:after{content:"";position:absolute;width:26px;height:26px;border-radius:50%;background:#fff;top:3px;left:3px;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.sw2 input:checked+i{background:var(--up)}.sw2 input:checked+i:after{left:23px}
.sw2 input:focus-visible+i{outline:3px solid var(--acc2);outline-offset:2px}
.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);border-radius:999px;padding:6px 11px;font-size:13px;font-weight:700;background:color-mix(in srgb,var(--bg) 40%,transparent);min-height:34px}
.chip.on{background:var(--acc);border-color:var(--acc);color:#fff}
.asof{font-size:12px;color:var(--mut)}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:space-around;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid var(--line)}
.tabs button{flex:1;max-width:120px;display:flex;flex-direction:column;align-items:center;gap:3px;border:0;background:none;color:var(--mut);font-size:11px;font-weight:700;padding:6px 0;border-radius:12px;min-height:50px}
.tabs svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tabs button.on{color:var(--tx);background:color-mix(in srgb,var(--acc) 18%,transparent)}
.foot{text-align:center;color:var(--mut);font-size:12px;padding:8px 16px 18px;max-width:880px;margin:0 auto}
.sheet{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center}
.sheet[hidden]{display:none}
.sheet-bg{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.sheet-card{position:relative;width:100%;max-width:640px;max-height:92vh;overflow:auto;-webkit-overflow-scrolling:touch;background:var(--bg2);border:1px solid var(--line);border-radius:22px 22px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));animation:up .22s ease-out}
@media(min-width:700px){.sheet{align-items:center}.sheet-card{border-radius:22px}}
@keyframes up{from{transform:translateY(30px);opacity:0}}
.sheet-card .x{position:absolute;right:10px;top:10px;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--card);font-size:22px;line-height:1}
.sheet-card h3{margin:0 44px 4px 0;font:800 22px/1.2 var(--disp)}
.toast{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;z-index:70;background:var(--bg2);border:1px solid var(--line);color:var(--tx);padding:10px 16px;border-radius:14px;box-shadow:var(--glow);font-weight:600;max-width:92vw;text-align:center;transition:.25s}
.toast.on{opacity:1;transform:translateX(-50%)}
.note{border:1px dashed var(--line);border-radius:12px;padding:10px 12px;font-size:13px;color:var(--mut);margin-top:10px}
.warn{color:var(--warn)}
.ord{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.ord:last-child{border-bottom:0}.ord div{flex:1;min-width:0}
.tag{font-size:11px;font-weight:800;letter-spacing:.06em;padding:2px 7px;border-radius:6px;background:color-mix(in srgb,var(--acc) 22%,transparent);text-transform:uppercase}
.tag.buy{background:color-mix(in srgb,var(--up) 22%,transparent)}.tag.sell{background:color-mix(in srgb,var(--dn) 22%,transparent)}
.lb{display:grid;gap:6px}
.lbr{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--bg) 30%,transparent)}
.lbr.me{border-color:var(--acc2);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc2) 40%,transparent)}
.lbr .rk{width:28px;text-align:center;font:800 16px var(--disp)}.lbr .av{width:34px;height:34px;font-size:18px}.lbr .av.ini{font-size:13px}
.lbr .who{flex:1;min-width:0}.lbr .who b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lbr .who small{color:var(--mut);font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbr .ret{font:800 16px var(--disp);font-variant-numeric:tabular-nums}
.code{font:800 26px/1 ui-monospace,Menlo,monospace;letter-spacing:.18em;padding:10px 14px;border-radius:12px;border:1px dashed var(--acc2);display:inline-block}
textarea{min-height:110px;font:13px/1.4 ui-monospace,Menlo,monospace}
.range{margin-top:8px}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--mut);border-top-color:transparent;border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.row>button{min-width:0}.row button.nmx{display:block;flex:1 1 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mut)}
.row button.sym{color:var(--tx);font-size:15px;flex:0 0 auto}
html,body{overflow-x:hidden}
@supports (overflow:clip){html,body{overflow-x:clip}}
.view{grid-template-columns:minmax(0,1fr)}
@media(min-width:760px){#v-home{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.results,.lb,.badges{grid-template-columns:minmax(0,1fr)}
.badges{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.row{min-width:0;max-width:100%}
