From c22b6f3f6a11c95597d86d0348aa26c51eba8f25 Mon Sep 17 00:00:00 2001 From: Marc Blatter Date: Sat, 4 Jul 2026 13:03:59 +0200 Subject: [PATCH] Bot auto-update: src/__pycache__/web_dashboard.cpython-310.pyc,src/web_dashboard.py --- src/__pycache__/web_dashboard.cpython-310.pyc | Bin 19814 -> 18931 bytes src/web_dashboard.py | 391 +++++++++--------- 2 files changed, 190 insertions(+), 201 deletions(-) diff --git a/src/__pycache__/web_dashboard.cpython-310.pyc b/src/__pycache__/web_dashboard.cpython-310.pyc index c887460919578f66a67ea575303e31d7394bbafe..4689ae8189e226f2871e435ebab9b2a78acc3d37 100644 GIT binary patch delta 3128 zcma)8&5zqe6lW=7(RM$&yJ@ql-Ks;grCW$C+u3A8D#XVDwMBrS;slqmJxR=ZJ;t8w zM=NCh1vDr6FZ6^sa_JHAHz2{OLU81ccyIg>Cvld}M3EEE%=^9Hd++z=`ICizR=rhU zHh0fUt8MBW4I(}YT+QJ=k9wqGP@J&)*$r~k=Yi1r^w{&ydqksQ=rb)oj|Dq!k`H_@ zIQp1657qAvVP%ute#i!#kuUDwhUfc%U=cjTG>EmBMPC1I0TcEzZOFXAQ1pnYcfp>v zy|rQJt?(>em4TM4wQD;SFii_5Y@@Zh{B7rQV)k*4Erir{yTw?rtq7RenxoN$O{j{4I)e9u%ONm=OCJES6D)jk*5k9AB$>ewk8I%yzY0c2jcOtaF+f`d3`EhM>u$(n2lDQu%9h0(=g^$P zQ@{pv&OUZ{;Iy2Hee$!N>vkT@3#d$M6Y=Ai@L__X{sSYntE;;wpsy(kw zCRqo?x53zyo3&Enl0>+X1mlOb2#(#%ubMd&F69a|CX$l*(8Tx zuA`c9rJ)J|RD2#Y5kW_f_-V-w1X})0YIsLkX+vp&5B=y4z?VN?+mZKbYt>qz$02p# zHukua?q=yHPzH}Emb$ainjP}pL4jHYJ#1WBayRuQAbL9F(`%ntFg9`8qx%Z zOIWIZ^1)t1ezRA9qg=h^EMUi>IM=X5ur?&A?R}KnZL2X(?{RV9#V{4As+uSj{ZC)r Qy0pL8cx|D!@XEjc0V(G!2mk;8 delta 2819 zcmb7G&u`;I6eew#-G;VH+oWmJR-J6SG=+GW#7&f>2M`j1J#g8DMJs{OI37Euw#TyF zUzDmRPKXP0+Z+4^RA_J9k@!CVaYWqF&cq%&ag$OUrLi>g-uvG7zV}}LVYxq^=N9Pv zeEt>w{QBpIUp{+$weWaxYNpGy#oy)tf8GS=dGX88(t1I>cv#mh*X#mx5FLEFw8J!1 zy40wC7GDG~7EheR|~TU0_=-!M&7rN}pI}KkN$A<39TgZ8E=5To;B8K2=UEJ?!(teUuop z=LNtFw7dZO1nb0?lzmm%VK2(dc{ROBH%e;5I|Tu?EgfvPdM(w+q#C1BG#ZA~=>h># zpjedN`*j)MYGZk~0h`1bO`=C_>UT%Iv#WAxrXIUmfI*1Eqd@vO+}wRSLQI=Othch{ z3>RS=pZ;G!&k;5=Z-_&rm(QMX0`Uk;!qKD%8+;9chMR|26 zsg-aho-t}+cUKgKR@P<+4v2_;347SryM20`R6jDl6`p1cC^4ZvSCJyiIF9Mi=Z#`e zpX)=s&IL9O$+N1`^iKB#AUFV|gjQ&im_g}Xx*f@!6aU(P__z?~rMK9RrQ$s)ff4zz z>D3kXV&i_bkyYNLy7JBw)tct;1iD&;E;!OAV8cj!Qc=8$V4KTa*uDWh8d#xqJSne; zuIQ>uOnk#t!%%gE#MS#SAidC{u9TZ-mqc4%udS^L`X*3U$frFhh|1S_o-ug3@t``) zw5&q5%VldWLtamv1d441p#&3Ye{agR+1tgfdEvvv9v?z6pO=x5B1D*B^uOBywa3fP zCI%mZ`!^3OZ6Hz+*m zaxM3$k4EfMb$k@td)Sf_TLzvWV|hGY2IUg_Zgp0y!ll@=P6Bfc0{*zFO%xwB(^KR1}_*OmR=U{l>n*mcydfleo$^$0d@ z81p6e%jSGZ(4S_M<{1Y+Lkksi5bd=UaAVQbd_UlAIZ_h z3tf08wUBbSrTkJUD-qIxYsfo6E_Ufq!cFJhGCcBhzB2fRa1u1XgYBX)k=I+T*7(%E zuN3m>QfKALHtST@r&U!Intbx^AvrUA?2rH$e3m`R_O;soRy|5L5#ob~C@6c2E@K=f5h`)w}Rsu8^Dg F_a%oW<6Zy& diff --git a/src/web_dashboard.py b/src/web_dashboard.py index 18d6043..4216db0 100644 --- a/src/web_dashboard.py +++ b/src/web_dashboard.py @@ -210,207 +210,196 @@ html_content = """ Trading Bot Dashboard + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + background-color: #0a0a0a; + color: #e0e0e0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', sans-serif; + line-height: 1.8; + letter-spacing: 0.3px; + } + + .header { + background-color: #121212; + border-bottom: 1px solid #1f1f1f; + padding: 40px 60px; + } + + .header h1 { + color: #ffffff; + font-size: 32px; + font-weight: 700; + letter-spacing: -0.5px; + } + + .container { + max-width: 1800px; + margin: 0 auto; + padding: 60px 60px; + } + + .grid-auto { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 24px; + margin-bottom: 60px; + } + + .card { + background-color: #1a1a1a; + border: 1px solid #2a2a2a; + border-radius: 16px; + padding: 28px; + backdrop-filter: blur(10px); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); + } + + .card:hover { + background-color: #1f1f1f; + border-color: #3a3a3a; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.20); + } + + .card-label { + color: #888888; + font-size: 12px; + text-transform: uppercase; + letter-spacing: 1.2px; + margin-bottom: 12px; + font-weight: 600; + } + + .card-value { + color: #ffffff; + font-size: 36px; + font-weight: 700; + line-height: 1.2; + margin-bottom: 8px; + } + + .card-subtitle { + color: #666666; + font-size: 13px; + font-weight: 500; + } + + .card-positive { + color: #2ecc71; + } + + .card-negative { + color: #e74c3c; + } + + .section-title { + color: #ffffff; + font-size: 24px; + font-weight: 700; + margin: 60px 0 32px 0; + letter-spacing: -0.3px; + } + + .content-block { + background-color: #1a1a1a; + border: 1px solid #2a2a2a; + border-radius: 16px; + padding: 32px; + margin-bottom: 40px; + } + + table { + width: 100%; + border-collapse: collapse; + } + + th { + background-color: #121212; + color: #b0b0b0; + padding: 16px 20px; + text-align: left; + font-size: 12px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 1px; + border-bottom: 1px solid #2a2a2a; + } + + td { + padding: 16px 20px; + border-bottom: 1px solid #1f1f1f; + color: #d0d0d0; + font-size: 14px; + } + + tr:last-child td { + border-bottom: none; + } + + tbody tr:hover { + background-color: #0f0f0f; + } + + .status-badge { + display: inline-block; + padding: 6px 12px; + border-radius: 8px; + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; + } + + .badge-live { + background-color: #1a1a1a; + color: #888888; + border: 1px solid #2a2a2a; + } + + .badge-profit { + background-color: rgba(46, 204, 113, 0.15); + color: #2ecc71; + } + + .badge-loss { + background-color: rgba(231, 76, 60, 0.15); + color: #e74c3c; + } + + .metric-row { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 20px; + margin-bottom: 40px; + } + + .spacer { + height: 1px; + background-color: #1f1f1f; + margin: 40px 0; + } + + .footer-text { + color: #666666; + font-size: 12px; + text-align: right; + margin-top: 40px; + padding-top: 20px; + border-top: 1px solid #1f1f1f; + } + + .empty-state { + text-align: center; + color: #555555; + padding: 60px 20px; + font-size: 14px; + } +