*{box-sizing:border-box;margin:0;padding:0}
body{background:radial-gradient(1200px 600px at 80% -10%,#0E2233 0,transparent 60%),radial-gradient(900px 500px at -10% 10%,#1A1433 0,transparent 55%),#0B0F17;color:#E6EAF2;font:14px/1.5 Inter,"Noto Sans CJK TC","Noto Sans TC",sans-serif;font-feature-settings:"tnum";min-height:100vh}
.top{display:flex;align-items:center;gap:24px;padding:16px 40px;border-bottom:1px solid #ffffff0f;backdrop-filter:blur(16px);background:#0B0F17cc;position:sticky;top:0;z-index:5}
.brand{display:flex;gap:12px;align-items:center}.brand b{display:block;font-size:16px}.brand small{color:#7C869A;font-size:12px}
.logo{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#00E5FF,#B388FF);display:grid;place-items:center;font-weight:800;color:#0B0F17}
.tabs{display:flex;gap:8px;margin-left:24px}.tabs a,.bnav a{color:#7C869A;text-decoration:none;padding:8px 16px;border-radius:8px}.tabs a span{display:none}
.tabs a.on{color:#E6EAF2;background:#ffffff0d}
.lock{margin-left:auto;font-size:12px;color:#00FFA3;border:1px solid #00FFA340;background:#00FFA312;padding:6px 12px;border-radius:999px}
.ticker{display:flex;gap:8px;padding:12px 40px;overflow-x:auto;align-items:center;border-bottom:1px solid #ffffff0a}
.chip{display:flex;gap:8px;align-items:center;white-space:nowrap;background:#ffffff08;border:1px solid #ffffff10;border-radius:999px;padding:6px 12px;font-size:12px}
.chip b{font-weight:600}.chip em{font-style:normal;color:#5C667A}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#00FFA3;box-shadow:0 0 8px #00FFA3}
.src{color:#5C667A;font-size:11px;margin-left:auto;white-space:nowrap;padding-left:16px}
main{max-width:1360px;margin:0 auto;padding:32px 40px 48px;display:flex;flex-direction:column;gap:24px}
.card{background:linear-gradient(180deg,#151C2C,#121826);border:1px solid #ffffff0f;border-radius:16px;padding:24px;box-shadow:0 1px 0 #ffffff0a inset,0 8px 24px #00000040}
h3{font-size:14px;font-weight:600;margin-bottom:16px;display:flex;align-items:center;gap:8px}h3:before{content:"";width:8px;height:8px;border-radius:2px;background:var(--a);box-shadow:0 0 8px var(--a)}
.kpis{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:16px}
.kpi{background:linear-gradient(180deg,#151C2C,#121826);border:1px solid #ffffff0f;border-radius:16px;padding:24px}
.kpi.hero{background:linear-gradient(135deg,#2A1420,#121826 60%);border-color:#FF5C7A30}
.kpi label{color:#7C869A;font-size:12px;letter-spacing:.5px}.kpi small{display:block;color:#7C869A;font-size:12px;margin-top:8px}
.big{font-size:40px;font-weight:700;letter-spacing:-1px;margin-top:8px}.val{font-size:24px;font-weight:700;margin-top:8px;white-space:nowrap}
.neg{color:#FF5C7A}.pos{color:#00FFA3}.c{color:#00E5FF}.o{color:#F7931A}.g{color:#00FFA3}.p{color:#B388FF}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.donut{display:flex;gap:24px;align-items:center}.donut svg{width:168px;flex:none}
.dl{font-size:10px;font-weight:700;fill:#0B0F17;text-anchor:middle}.dc1{fill:#7C869A;font-size:11px;text-anchor:middle}.dc2{fill:#E6EAF2;font-size:14px;font-weight:700;text-anchor:middle}
.leg{list-style:none;flex:1;font-size:12px}.leg li{display:grid;grid-template-columns:8px 1fr auto 48px;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #ffffff0a}
.leg i{width:8px;height:8px;border-radius:2px}.leg em{font-style:normal;color:#7C869A;text-align:right}
.prog{margin-bottom:24px}.pt{display:flex;justify-content:space-between;font-size:13px;color:#A8B0C0}.pt b{color:#E6EAF2;font-weight:500}
.track{height:8px;background:#ffffff0d;border-radius:8px;margin-top:8px;overflow:hidden}.fill{height:100%;border-radius:8px;box-shadow:0 0 12px currentColor}
.trend{width:100%}.trend line{stroke:#ffffff0d}.tl1{fill:#E6EAF2;font-size:14px;text-anchor:middle;font-weight:600}.tl2{fill:#7C869A;font-size:12px;text-anchor:middle}
.tw{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{color:#7C869A;font-weight:500;text-align:left;padding:8px 16px;font-size:12px}
td{padding:16px;border-top:1px solid #ffffff0a;white-space:nowrap}.num{text-align:right}
.tag{font-size:11px;padding:2px 8px;border-radius:999px}.ti{background:#00FFA31a;color:#00FFA3}.tl{background:#B388FF1a;color:#B388FF}
.foot{color:#5C667A;font-size:12px;text-align:center}
.ptitle h2{font-size:24px;font-weight:700}.ptitle p{color:#7C869A;margin-top:8px}
h3 .sub{margin-left:auto;color:#A8B0C0;font-weight:500}
.ihead,.irow{display:grid;grid-template-columns:2fr 1.4fr 1fr 1fr;gap:16px;align-items:center}.ihead{color:#5C667A;font-size:12px;padding:0 0 8px}
.irow{padding:16px 0;border-top:1px solid #ffffff0a}.in small{display:block;color:#5C667A;font-size:12px}
input{background:#0B0F17;border:1px solid #ffffff1a;border-radius:8px;color:#E6EAF2;padding:8px 16px;font:inherit;width:100%;outline:none}
input:focus{border-color:#00E5FF;box-shadow:0 0 0 3px #00E5FF26}input::placeholder{color:#3C4558}.ip{color:#A8B0C0;font-size:13px}
.save{position:fixed;left:50%;transform:translateX(-50%);bottom:24px;width:min(960px,calc(100% - 32px));display:flex;gap:32px;align-items:center;padding:16px 24px;border-radius:16px;background:#151C2Ce6;backdrop-filter:blur(16px);border:1px solid #ffffff1a;box-shadow:0 16px 48px #00000080;z-index:6}
.save label{display:block;color:#7C869A;font-size:12px}.save b{font-size:20px}
.save button{margin-left:auto;border:0;border-radius:8px;padding:12px 24px;font:600 14px Inter,sans-serif;color:#0B0F17;background:linear-gradient(135deg,#00E5FF,#00FFA3)}
.pill{margin-left:auto;font-size:11px;padding:2px 8px;border-radius:999px;background:#F7931A1f;color:#F7931A}.muted{color:#7C869A}
.sk{height:16px;border-radius:8px;background:linear-gradient(90deg,#ffffff08,#ffffff14,#ffffff08);margin-top:16px}.w7{width:70%}.w5{width:50%}.lst{margin:24px 0 0 16px;line-height:2}
.pend td{color:#5C667A}
.bnav{display:none}
.big,.lock,.save button,.brand small,.save b{white-space:nowrap}
.stale{color:#F7931A}.stale .dot{background:#F7931A;box-shadow:0 0 8px #F7931A}.chip.na .dot{background:#5C667A;box-shadow:none}
.toast{position:fixed;top:24px;right:24px;background:#151C2C;border:1px solid #00FFA340;color:#00FFA3;padding:12px 16px;border-radius:8px;display:none;z-index:9}
.save button:disabled{opacity:.5}.trend polyline{fill:none;stroke:#00E5FF;stroke-width:2}.btn{color:#00E5FF;text-decoration:none;font-size:12px;margin-left:auto;font-weight:500}
.logout{background:none;border:1px solid #ffffff1a;color:#A8B0C0;border-radius:8px;padding:6px 12px;font:inherit;font-size:12px;cursor:pointer}.logout:hover{color:#E6EAF2;border-color:#ffffff33}
.ro{font-variant-numeric:tabular-nums;color:#9AA4B8;padding:8px 0}.ro small{display:block;font-size:11px;color:#7C869A}
.ccy{display:inline-block;font-size:10px;font-weight:600;line-height:16px;padding:0 6px;margin-left:6px;border-radius:999px;background:#ffffff0d;border:1px solid #ffffff1a;color:#A8B0C0;vertical-align:1px;letter-spacing:.3px}
.form{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;align-items:end}.form label{display:block;color:#7C869A;font-size:12px;margin-bottom:8px}.form .w2{grid-column:span 2}.form .w4{grid-column:span 4}
select,textarea{background:#0B0F17;border:1px solid #ffffff1a;border-radius:8px;color:#E6EAF2;padding:8px 16px;font:inherit;width:100%;outline:none}textarea{min-height:96px;font-family:ui-monospace,monospace;font-size:12px}
.btnp{border:0;border-radius:8px;padding:10px 20px;font:600 14px Inter,sans-serif;color:#0B0F17;background:linear-gradient(135deg,#00E5FF,#00FFA3);cursor:pointer}
.flag{display:inline-block;font-size:10px;padding:2px 8px;border-radius:999px;background:#F7931A1a;color:#F7931A;margin:2px 4px 2px 0;white-space:nowrap}
.pos{color:#00FFA3}.neg{color:#FF5C7A}.empty{color:#7C869A;text-align:center;padding:48px 16px;line-height:2}.filters{display:flex;gap:8px;margin-left:auto}.filters select{width:auto;padding:4px 12px;font-size:12px}
.side-buy{color:#00FFA3}.side-sell{color:#FF5C7A}td.reason{white-space:normal;min-width:180px;max-width:280px;color:#A8B0C0;font-size:12px}.err{color:#FF5C7A;font-size:12px}
.tags{display:flex;flex-wrap:wrap;gap:8px}.tagc{display:inline-flex!important;align-items:center;gap:4px;margin:0!important;color:#A8B0C0!important;font-size:12px!important;cursor:pointer}.tagc input{width:auto}

.step{display:flex;align-items:baseline;gap:12px;margin:24px 0 16px;padding-top:16px;border-top:1px solid #ffffff0d}.step:first-child{margin-top:0;padding-top:0;border:0}.step b{font-size:14px;color:#E6EAF2}.step small{color:#7C869A;font-size:12px}
.sn{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:999px;background:linear-gradient(135deg,#00E5FF,#00FFA3);color:#0B0F17;font:700 12px Inter,sans-serif}
.form .w3{grid-column:span 3}.form .w6{grid-column:span 6}.ro{min-height:38px;display:flex;align-items:center;gap:6px;padding:0 16px;border:1px dashed #ffffff1a;border-radius:8px;color:#A8B0C0;font-size:13px}
.fbar{display:flex;align-items:center;gap:12px;justify-content:flex-end;margin-top:24px}.fbar .err{margin-right:auto}
.grades{display:flex;gap:6px}.gb{width:34px;height:34px;border-radius:8px;border:1px solid #ffffff1a;background:#0B0F17;color:#7C869A;font:700 13px Inter,sans-serif;cursor:pointer}.gb.sm{width:auto;height:auto;padding:1px 7px;font-size:11px;cursor:default}
.gb.on.gA{background:#00FFA322;color:#00FFA3;border-color:#00FFA3}.gb.on.gB{background:#00E5FF22;color:#00E5FF;border-color:#00E5FF}.gb.on.gC{background:#F7931A22;color:#F7931A;border-color:#F7931A}.gb.on.gD,.gb.on.gF{background:#FF5C7A22;color:#FF5C7A;border-color:#FF5C7A}
.lnk{color:#00E5FF;font-size:12px;text-decoration:none}
/* ===== motion ===== */
.mo body{opacity:0;transition:opacity .28s ease}.mo body.in{opacity:1}.mo body.out{opacity:0;transform:translateY(4px);transition:opacity .17s ease,transform .17s ease}
@keyframes rise{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.mo .rise{animation:rise .55s cubic-bezier(.2,.7,.2,1) backwards;animation-delay:calc(var(--i,0)*70ms)}
.card,.kpi{transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s,border-color .25s}
.card:hover,.kpi:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--a,#00E5FF) 35%,transparent);box-shadow:0 1px 0 #ffffff0a inset,0 14px 34px #00000059,0 0 0 1px color-mix(in srgb,var(--a,#00E5FF) 18%,transparent),0 0 28px color-mix(in srgb,var(--a,#00E5FF) 14%,transparent)}
.btnp,.logout,.btn,.gb,.tabs a{transition:transform .18s,box-shadow .18s,background .18s,color .18s}
.btnp:hover{transform:translateY(-1px);box-shadow:0 6px 20px #00E5FF40,0 0 0 1px #00FFA360}.logout:hover,.btn:hover,.gb:hover{transform:translateY(-1px);box-shadow:0 0 14px #00E5FF26}.btnp:active,.logout:active{transform:translateY(0) scale(.98)}
@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}.mo .fill{transform-origin:left center;animation:grow 1.2s cubic-bezier(.2,.7,.2,1) .25s backwards}
@keyframes pop{from{opacity:0;transform:rotate(-30deg) scale(.86)}to{opacity:1;transform:none}}.mo .donut svg{transform-origin:center;animation:pop .9s cubic-bezier(.2,.7,.2,1) .15s backwards}
.mo .donut svg path{transition:transform .2s;transform-origin:100px 100px}.donut svg path:hover{transform:scale(1.035)}
@keyframes dot{from{opacity:0;transform:scale(0)}to{opacity:1;transform:none}}.mo svg.trend circle{transform-box:fill-box;transform-origin:center;animation:dot .4s ease 1s backwards}
@keyframes flashU{0%{background:#00FFA333;box-shadow:0 0 18px #00FFA355}100%{}}@keyframes flashD{0%{background:#FF5C7A33;box-shadow:0 0 18px #FF5C7A55}100%{}}
.chip.up{animation:flashU 1.4s ease-out}.chip.down{animation:flashD 1.4s ease-out}.chip.up span{color:#00FFA3}.chip.down span{color:#FF5C7A}.chip span{transition:color 1.4s}
@keyframes pulse1{0%{box-shadow:0 0 0 0 #F7931A80}70%{box-shadow:0 0 0 8px #F7931A00}100%{box-shadow:none}}.mo .flag{animation:pulse1 1.1s ease-out .6s 1}
@keyframes sh{from{background-position:200% 0}to{background-position:-200% 0}}
.sk{height:120px;border-radius:16px;background:linear-gradient(90deg,#ffffff06 25%,#ffffff12 50%,#ffffff06 75%);background-size:200% 100%;animation:sh 1.4s linear infinite;border:1px solid #ffffff0a}.sk.tall{height:220px}.sk.row{height:44px;margin-bottom:8px}
.skg{display:grid;gap:24px;margin-bottom:24px}.skg.k4{grid-template-columns:repeat(4,1fr)}.skg.k2{grid-template-columns:2fr 1fr}.skg.k2 .sk{height:300px}.skg.k3{grid-template-columns:repeat(3,1fr)}.skg.k3 .sk{height:240px}
#stats>.sk,#brk>.sk{margin:0}
.rm *,.rm *::before,.rm *::after{animation:none!important;transition:none!important}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}body{opacity:1!important}}
