From 43e8409c0efb8b3dd2e0fc2577d6b9edfaf4a547 Mon Sep 17 00:00:00 2001 From: voson Date: Thu, 30 Jul 2026 17:20:51 +0800 Subject: [PATCH] v0.6.6: size drawer from hero grid; drop skill video side bars. Co-authored-by: Cursor --- CHANGELOG.md | 7 +++++ DESIGN.md | 7 +++-- web/assets/streamer_avatars/xiaolu.jpg | Bin 0 -> 37448 bytes web/data/streamers.json | 21 +++++++++++++ web/export_relations_site.py | 2 +- web/frontend/app.js | 39 ++++++++++++++++++------- web/frontend/config.js | 2 +- web/frontend/index.html | 10 +++---- web/frontend/style.css | 18 ++++++------ 9 files changed, 77 insertions(+), 29 deletions(-) create mode 100644 web/assets/streamer_avatars/xiaolu.jpg diff --git a/CHANGELOG.md b/CHANGELOG.md index 0672a21..7264170 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,13 @@ - PC 选将 overlay 不再在顶栏头像下显示定位图标;仍保留网格「克/搭/补」与阵容分析条。 +## [0.6.6] - 2026-07-30 + +### Changed + +- 英雄详情抽屉改为按 `#columns` 实测高度预留完整网格(含最后一排),剩余给抽屉;技能 Tab 不硬性规定高度,内容随抽屉 flex/滚动。 +- 技能演示视频在抽屉变矮时宽度随高度收缩,保持 16:9,避免左右黑边。 + ## [0.6.5] - 2026-07-30 ### Changed diff --git a/DESIGN.md b/DESIGN.md index 2c55e13..f9ffb20 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -233,9 +233,10 @@ components: ## Layout 桌面壳:顶栏固定高度区 + 可滚动 `main.board`;英雄页的英雄网格与固定高 `#detail` -之间放置一行定位筛选。选中英雄后 `#detail` 使用共享固定高度:按视口预留顶栏 + 约 24% 英雄网格 + -定位标签后取余,再 `clamp` 到约 `320–640px`(CSS 回退 `min(640px, calc(100dvh - 17.5rem))`), -Tab 切换不跳动;技能演示与文案左右排布,长 Tab(走势/对位等)在详情区内滚动。 +之间放置一行定位筛选。选中英雄后 `#detail` 使用共享固定高度:按视口预留顶栏 + **完整** `#columns` +英雄网格实测高度 + 定位标签后取余,再 `clamp` 到约 `280–640px` +(CSS 回退 `min(640px, calc(100dvh - 26rem))`)。技能 Tab 不驱动抽屉高度, +内容在抽屉内 flex/滚动;Tab 切换不跳动;长 Tab(走势/对位等)同理在详情区内滚动。 技能演示片源为官网 16:9;有横向空间时加宽(上限约 720px / 列宽 58%), `aspect-ratio: 16/9` + `object-fit: contain`,勿用拉满高度的 `cover` 裁左右。 diff --git a/web/assets/streamer_avatars/xiaolu.jpg b/web/assets/streamer_avatars/xiaolu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..349b1831ebc115d0585067b9ea3fc53c769ed28b GIT binary patch literal 37448 zcmbTdbzD?m^e#L@r-TF2HN=q8(xo)gT`C|c-5^o|GQ!X)-AF4)i6RZs-8F=OAYCHd zGwAns?|c7x-xoh;Jaf+3`>eJ0TF-j++Iw!MZ}^T_OlA6+Im-6%7poGY=aB6Bm?*2KIoRi`NY zR8oXrf=57*AJqvM7Z;ZRpMZjpkb<9)hLQjO^WRM?hy({M11$p`%mhLs0i%#evGzd?V8y*=H88a0|i3Bfm#MNyWm-24m+C6cTqr)pKhbTRVGq4^J;|A78)F*J0riZzAFG35iL`DXD4cdHDr}Ma3nh?>~I3 zt@~8p(Ad=0-qG3B-P7AQIyOErIW;{qyRwR0Ti@9Hv9*10cyxSndUk$siP8%ULjS84 z@cCD<|4T0tKrb{540H@^lwM#oZ{R>D!N6qX!y=W{!hYs@mx(_Z2O<}jTk{PUDxkej zX5lu1N6sv`!g7F8?N+n@cZ!Al|I+M#6#L(L&4LKf!NB05lYpc_2kFMJiZfG(a(#08fygZ2{Fa!Rx#C*$H9QI3D#=K09`!}(jJi)2PJB$%HUwJ+p*i3 zqD5)R-y_zNhwOpnA(~+M+m2ALgcba~0MV%i8p{1Ao(v!>8X#B@9;`42@3>aWaL*RF zBpw8G0s21(xl=Yi9l{|=Bx9vlXU&JALLXpgu6y`}<^%7pxTHHDDnZ*;s9rz>8NJ^9p!+`1YUUTwt|?i^WetR|0xdq z&kkP!`Xm6FU;q!HlmiY$60G8 zGRuQq{?iMv6+3DKQN{tG4t6^}z*lOu6kwo2v_y|vUj)olYmp9Sx6OM8q6Hoz##ByN zv;1_4sM>OyGual_SyXslhuEUC?c(pDAg4L#8PF#AAuNrvxQ%Szh0b@|1mO5j#VaMP z#+EXYsN;%aOL$!B`D=tHPu*Q?XDxnVWuxSAKsMUoOZ`e;Ge3mvA+h)!(W)n7_s5>J z)Q&T0Ru4Hic#|sEyY1N_WUfy~WubLis?@ZGhK9c)A`AAx3;gG5MSyK!V7veAw!vW#?O`-6Rb{|Zh5xx7A7H3X>r!o)>Ia38RyhP(*t;NOm;cr+8GSfiN!xV(}UcFg7n^K^}ZlAs85`f1!@@Z+2H1 zQ^2@foMC_cxd?C$ZIlBB0ZwLndy-hIQ=^1+nopxsQtS^R@`L5QMjO>0c__mQj7<<8 zwlNIVNCyPGDG{U_%8jK!G!&Jf)+xzqJ7vE+8=$3el*>prkaJ$IP(5))No8jIOU&40 z!CYdS920L~J;R0O)5wsme-=D>-VgyyR422!N&xIa-RwwxAKX7wSF6DqLVyd5mRi z0KT9UTLTbApa}{m^IB1%4+w$6fWL5~0`eNg`su1%^W_)i<&@qszJutMdX>Ke+4QIS z_*HQm5dkr`5`M2kB{m61Y@xueYkD)tMJa8hNqF=btG>KN^E>;}>AM?UQW@Tb{R!1H z?90m|@?Sx?GeY7F$d2C0S+r%IUZ>i|woyhV=sN%**b( z&^x+rSfd?Q9;GMu?*=;f2$l0#y;+oZ$2E{!DbiS~>5+!vS?wZP4m5uaR1fmQLESs@ zMvU?lg}^Xls{ok@25HE_$cOyYlEJzK!%l7%;UHLHLBXvN!1AmCrFPYLu%EC(0EdBS zQ!&O?K|!WnP@?t-Dpj)A{_lvDhZv&FiRo4c(K6l0{hvsdhoJ2G7PAdVe(``+0Pm4U zWr3gC;Fhg%Ee%Zo;tSA#Q6>j+-0k3#Qvisgh6xN^b!Z*L;x9@AuYLO0ruh&YAP>|6 zG6Gk$SL0JLMZAkvGsONO2LLvBfa{}xA4N9Urvcvu6e<|tM!os=5-PvxkhK9(;Efu- z5Y*RCp};BNPbe$_UJQ)4EQ>u5OL3^Ui3jE9bR*>A=0z z5EPaGQ2XD3HVPuM?r<|PM_ zCf|lQkST$oKueBKevPJmng@6M>*atTnj!^-dBM1FK%<~rZoU>dIfk%0M(R0TROvWNScpAR=$+7Q1A}G@$=aR1%O!MH1gUaF5EaXakUu6`PqTOW^RJx@rK71NJ}-5o$P;0b7v)5(2`*fCLLlyrsD)F>n0~z*B%=WB!X! zKol98VKAIsLqb~zlmnOo4Y0&*_~qc`Wy*8AQ$+&CI77MVKfhI#c@6lq*S{-(AF23h zYXaE^z|p_)LmUDJAQn8C6voQ#E7&Tlo&(S`{C}Q}dI+Tg2qirlTmWI;Sr|5PwS$@Y zIYFu8{d*qw7<;{6Vv_=T-kJjyo1R5rU_9i&K$=4h85OF%1s*KF1>XhFOA1IVPl3G8EL~FTQRah5~Q`^a?)yu59bG%dnOL8!Q|AY_$x7ku2ikm48B7&9$&foV3lS5y`{t*ilJNqUe`Hf(kRNydpYq7D0^oN;{tAxSIoCd{@ zcw^P|!qK4Negz|?ZK!mfyQa(j`uWya7?cg}8q9mC_Z5kErODGDOiVpF#I`l}DSkg6L`i+o0?Nq04mr zrB2dJrl;NC4Z2e>Rp~>tlITD&@mbaBXBwfiy}H0&``FxxB*$|hGB3e*(_Q=7ZIT*h zwI&O4dSext=yEhp-WXOiUX+qIAduJ;;d{G!DurU#;`vgeT({^haCczemr9c$Vi*X7 z7KDXO`<3J9eiYqZhqtyTI~11IaDJY7ORjv7&@+{fZXX2`JtWkD*%N0;56THB1eZmM z5(X%9Fgt14aW|rX=~d?AP7ugd9(Gb72-1XM!@;XT=(1b4j)U=Z7#P47TQDZ=0PWT| zXqHcX0}kR-@*Bn$tOcdz`UuvhZUlj&Mn~Wl%U12{uLE-xOo z%D>PDzyy^QV?KXtH^Dcp)K_RfJJSRw7 zdt^4V187PZ127%)rQ^Pm9UsuMDbrAcOW2jBPxSVR7Q)apP+5lG^ zqKQIeTqm{rP_I1SUFfF@FTRd>@tQX(v?a#WeYB+#6W+&%LE@_dqAQr9^))x9YL`u( zBqT*=U6)>;@5!O6kkF-WiYaW_sa%e4f*B{ymfR+bXT!eifnw3Zq;9x zR4~huqQ^Aw^7o{CciR(!$GkpaZ9HxUqFBv(WA#0>)4_j6^d}cATk%KV3$fL8An*3C zo-^ihw|#C3J7VnRDAasqMZal$dIQ3H3ANXYjyg=juvSjpT!QarBOXN`laZuuQcK^} z-TvN?sMWD8jVHlbGAAhPBAKum5go~Sk&dkTg0uMPeaMtny(;a~mO1?5W*aW7l9>n^^QxefyHc7oCrP{*k||AFgDq1cK5Bi=OT!q^;#mWXwxaP zXlS5Tix>7?Xs$0grKqGzefuLiUw!stDRv)+R$}hi`v-1{Q2tFWF&Z1Ylk(JGJlw8# z8$2xAH!p5L+20H0{Y&_rNJJh<;_f1F=#4iw8Y{}3jZ+e1bC6L9T^yIGND5z&(D&{# zY7VFQ~ zP_Ka%00l8EGO4}q)e~~;m(i3JPVHKP` zS@YS^Z^W=L(vHj^Sv`2jGRxh(q7(N*~jM%irj(&%JNsBU(6~C(mNRvGi6mGxkgX3i>JAF@f8vV;G^B}ur zob%hIj#RsplIjNZ(em_f$(|}6!slw=StcoHX00|Zktli!hm|~jp&TpY66ADwFb7|I z$yjLL6m?qR%Um=44H$lk#hKk*(=ATZi53md;7Ol^&?bGZf*TN#B=(lBr&4|X9yOdt zN_}aw#mR2+J`I{8wwJ=h=}Gyno;m+d8ca$8lk=}bf|uZ)d55{TK$}MhVcgI zn2cBuUcTchxM6+!=f~2cjn35VJ}+)SBQuK>g@1m~#JUEbdzJ?h^5niZmH8m?)$)Us zeUwY_$g5g6PP3Tw{^Q9Bs|K*%GdtxAqXy~tsB2GWjpmk5me7w3v}CfIQz3o^Os}Td zj-b@JY#1a%NE1HiJC(HgbJ3+|5$mB>osYENHq14N&jn~M$bK+`L#*oeuceYy4xtPh zP#kctDDsC?UDC5s)jp@b8&GZPRgC>a_<@l|Un>%W;K9!0=6D+or#J;LKlx7ktE9&i z7abCaN&``7l;vVw(Wg7VudT7GCE$etFeQ`kPdh4!&I5dlaO&+!<`lyD`tySzCuJ_% z;EX-T_lD7-=dZrhg*+p!O2b}a`zj*IK02^QYStx?FsSanrQ=ra$r$&B6UwvKe?gz* z`jz;2vtcBv^ystA`^=@((geMDQMnI-_M+(Hev=(3!c8p+(>3fMV@$41 zHAjnlu?oCO5*G0KQX}E)k|Fz!b&AS>kLji6Eqks21=b;Um1p5b&0kcA@qw!6U!MlP z8uI`oUs(=BYnumufGXx?2C)O5tpG2$o&2IWy#b0w$dHv37F2rJLvG<(Q|#~5LD5fV zG@*r;_Az?8Cj>{$T@{FdARuWJp#3HNsHb#*bifW20cy46SXbmBTH~l0O3*(ZjiU!n z<)lG#c^rVfzo`@>x4-X|p*B`yp-W7(IpAX*VO>Al@|g==Vdx0WwKIT>^jp!^@HdR- zue7=(%TmaA45ud(o%Y0aKlAW5uvJ%DY9)Wk%p@k3N^##le!nh1%G6*d*ih!RB^q_$~~*OH1VMAEC|1^ZFcj+ppVv zxJSx^?!@+*Xz zWP81Uq zgZeEN#0SQ&w2z2Mp5phC%6p#i8X4u@UTQbc6^AmbzJ{o>R@7BH`q=2(kVnM)O?Mfm zbzNuVk}ka<2-jevWN_DCjdZj&Nai)nP69#$m^AF@RY-mrqfeiflM$DdZ1~})RWhe? zT0pA)YVVG`AT;D#e{D{);*^tTG0d8$#+7FO;VlXgOgxmge+S=r07GPQp_$jO)2$<{_18Wp0x?P(H z)C!eRQ$9#7iay`gA8^6C+QYWxgdxDgfU~d25au@)G9^GdD2rVcL?Ak#!U9ym3X%9f zJRQyjJXhQ43M=e{`~;@Ta8hC|)!F#ekYu=cIxwe1&3V*2(ZHi|HC=u>NQCmc7h28P z@-$P*D@*7OO^dl0HtOjxinRejwNk{@YJ#1UVCBQ*N(mk7{&#JklsL1CI2Y2`nq%J} zML77nq5EaC20^uEJg}>G%ttb<-rti%Hl5tzqmB~OCQ{=^B5dM*ct;1MdUO%;EPbv9 zW3mOG{^M>^5RNf*&T$DO`o-cH~O%m;93vxHA`7UZUB*saX zbptXD9!6r}G9B9#uNTHY z_%Li-+Clc28%YFl{JE|SqMBH)-Nh}e(?8+Su7_`CG(+5nzUwoltb-HQcaQE~SVE7< zFe4)ND9X#RwWF-tZa@M28aE*0=r9W(b98Dx?+e9#d12B%5Wy3F z4+}C~t3%PXgDX92TJG4ZLAMSM^Q^Sv;xDly;*DZAKfVaA}&L=R#C6sI) z@MTto5V3(mgG7#p#^C9r6M0bzqpbK?ccj!FP+kTaClYZ832%R2zna6}J4MnUDd;YS z?4cP-TC^4qGa8RvM3DHwC&v<+m~)Q=R9cmpN@RF_z%@q!ftM4*3c-xCt^6cIl+L3c zv?sKAm!rCmUglFuoS?^@PlkQ0K@;_MKTM{*0S!tU+ft@gZt>fT(XJOTC#)yqvGE}? zhl)R8zC7Vlpv)3RhpEI9(FPh{I;mQR`)o$J_^{DTh5D?DRQBUogtn3p%%B*Xkf zlot%w%bPM5Ahibeyr{^$T@(cY1;+pCkT6sv=c0;LsNyD2lL2ZjLBLAtZRG|iEyHq9 zq6%zzsrW#J@wT*lTW^tKU~dJB@)!1)XYwm7+s6?-!=N3cY{!Rw4J@HHO3cv09VW*W5WV^qu$nW@y|I zU$xA{=ezOW*XHo8%a%U=&WHI*XD4W;Wc|zflbSH+mA9YszrS1%sKWud57Q}MZTFp9 z&sd@~&Q0*Ec*$=!@ALWHS(B$qasS!&WHG zW_kldt^OUY2Z$&|V1?5E1C#Z4@U|blnw~NbP1zcj_B({nvR8f*INz1FvaO89p2&RW zJ!@Cn!{l&&KQvdPvwI^ZK`e*ubTZ!9*_(O*-J8%wXYEMf;`Qx0l~~QK)r*E&7SkfX zTZU1Zu4zl9S;tk!xbac;SaiG!;AHnyvhsO8NKbLUHo9HfyV$8t!mr>S2ijmEn zl8Q>aD5hD93i%RQ;N-Rz3v`!*7CIWGm5xDKXsk7gszxZ^fY5R!Oy(r~#>g)vcJF7nPemDIEcr}5ZqOXrj$>?H`8*%^gG@`} z@l&(6+b+BeyX{iwHrbyWuHFaiwJX!*oQ>2>vqZ<}15~wOd{!Wgl0NlXZ{y%ReOxK3 z-lb+*^kQ7z4WLbFK|z$s&YPsh|(`02+=-t!9?NpXY>vg%yBnKo{*Zp|LA zQ!Jb&CD!BgJ->acU>t|Ux~~QGQ|xNdlgj5+82tF0M*9A3#r`&!207ib-}w;*2g9Ca z0%;zOLYV#Vv1YXG$jli^O6gyg8@prZUUo|jQ}m08xk#&k!APdp$(BG9;swNk3<^v|iUS>0tt+QCt5~HH;)Z(mgA?3Qyi>)mLhA3zP_%!$Wl$uf=5IM$YJ&U~oRZNo$ z(rZh{UfIE+QHKI9ZwGr*(ZpT5>op}m>hV;)PX4u#HP-HlMx^$X#9S{bU|l5X<6A)Sd$k@>X*r2Q$9jV&u%cJ_Ub+C+8sV3@)Uhy!Bz z5xwU3+*dS_vRHGaDfGN*%?|Xlh{}5ifbgtaOhH3%otS*tKFu;)tB2Amjw7oA@+X^G z?w?Ig4n|QA#H_vaq#-55#hI$h5>GZ8in;-Liw+@ADxmACl#$ha?Xm4bLo)6BavAUI z`Gd!AKqqC|OwXe3sEZETBXiPLpOC&JV|`Z{kgr~!w%qvr_(Jn+6P-S-^4@R$3uXG} zvB=7aL1~Ul_a|d{Qy!5F>@C$sqTK@sk;|#D#{$Nxf(B2xMo3vSWf?Xl1%_QXXWB$2 zq6{|3ZWO#9#~V3CxGB7@VUyUBS? z6V+q8T|ZXdBvDE|V>=uoGj>!NT?&JvZwuo|MsS>^a=9hcGR+K(7;7&Y4Jzzdv4!c} z>+|#1C3MD!IJ?ug7(HNxoSEN>_B>63C+fy`97xSTLg$9ZI0(m@nn1vrtP-Pgy7m^J2+<k7vl~oOFJ+m*UT&D{ADKj^ zJTD_smGc>z-@Vd;_Q1xgAr7BZ$wCrK_75jVohZ~TpU&F#%l&gRthD91=I?fDDZ+gp zY9!m@snN$UXnq?+Rx>tDjm^fu9W6r)t)dIVzUj+r{|*M~<`+nV;a@ouPI>jUSxRKR zk!^wCH99fZ;EO4U&EVc(3Nr#ZzbY ziFt94HXqNp_26z$tHw?+!)%@C4 z&Uf{D{P2u+kZMz|x$bN9&)jEqG3mcpT?!JKm&9d$4IdXai-o=G-fTM}?l(iydj@}d z>e>pe52%~(x0DWycaudg7J3J5J-vv2z(CLUyept(OYokkgQFkYrz7-E*B8HaKa}#M zZpQk)2-2Xr)=Md|Up+iP#=fuC1hKeGZ&vAK6$Ci=>+B=ml@2hqQycepv#c@`oL)aX zthE2t`rwqbHJky8%@hapybussBzRF|=~x+(O{KPx-=-QS*Q#R;HCZLr2!#h`WE3_jjRR(sIJN zTOifvOaEuN+A}jL7OtiXSsyxeBh1Ri*x~~;#_H_l%fwBpqp+A?4yr$Jm8oYXkDuHA zl&5^Bl@j#RP2i7%HZ9W>(cR3+We{y(q)G@8jc02)>o{R&k4-$|I;#Qp!3}8m%^&tq z^W>rLpVU-h=Xq)CGx_@&*ym>$*)V1BH$p_(8O2qZmW{-XmlK)EncJGvx&~%ohk^9LeFaAYl~B#FhmRfGoh+oxm+xd; zdyYjU6}Ve4W!#@W6xZGxS=$BuL0-`T+-IRS?u)iwT+DaYz0lzp`+m3(oL2_Ku}ms* zNu?SspC?OIdZDQ4W^izw^h@U@ur?^J=dWn{?&D%70dwR%hJcYFWcHTfWy+gj;pq>f zHr3@WXJ=!Mp|9poB+K-d6hnGn&LuQ{ATs@9-%`F=;PI$jl1krw;*>AzvD~$sj7w2* zX!}%rtkTXe;|QH-jTDGdF^0`#GWX-RCls`bYQL|^(!+%RY`WVRzc*id@n+XUhaLkx z$o&HEOOxqSKE8uyM5ef=RlH2hUH(9C+HOCK`9T^^0+KQ3zzUBNImtW9>g6X5RmDzG z`FS4#e97b<6MkRCy*DjwJP~dLQloLrpf{b!QJ>Fv>M^9@=M=>niQuSU%NJGl*lCdE zcIs5rH@DBl5axCN;cxJQ-k#tNwJ1}rzk}WQudqA*N!N96+p0bczW06i+ZK5s?;&98 zBFZXCOZ05~Rh^s}>6SqKiySYVP(zj1Qx897@kgCnJ7PQ?ZIZBx(8r*At?gNkD6IS@ zPjR~uR0-G@5vB7KLNb6}!47P}gKLW9cocN$-)?*W_Dpf3Ci1YEe^p^_axlA{p3$6r z8Q-y%!R~H3vUh@TP0eH-0TcI&S1On_3C@;x_@39v-OxO`H+i^}`MusUmll3@1CqE? z7Z*AlBDTr&rdQRPH67R;6s7kD)+usa1ed#WybWxXAV%2v9msCUYyoqQckc&Uk~&BJ zjFL)!nI{@*5h6c@6y#OTm=}i6I)r|L&9oe}R=jm2u&PB+ATj8ICXQ=CuaBs0krEb7 zjA8F4GRWNVTt}%8``O{qi&ezwK6;7Ccxn}2VeE33b zi+Q5#oW92YDE0ZXgzU2>%c_>gt2QD2Gt;1H38ndvU2}a&{#g4 zZ+*op=-DAn3=ApV4X?B!xAu8~XEu?01HxG>cwf*J>Mh%pDoCix?2C>l5Xny?G6(o0 zb4HoUTpwZ1C7w+tJyBGQVt!j^B zLBC7oMqlU<2%(5HU)Y~K3=mgqd|n^?Y80BzzZKmYPT0E{fo$ z{VvPWSU2C?n4=~~u$$N`*45idQv zJAXO(CX;8`DwaWio8+shSCv@J7dsx|0hiz@4(4bgwS#l`OnpQ0VnBRT!%xaksDFry z;__pQJ$q*p^Ldk=k$EM0y9<_Xtsm_**Pa2+tIsJoF4lzoUWxwU%!p@N+BW?pr5~Bi zM(e{?HJS%sRhoz!`SRqm5-6tP@hn!QmxU4;76c1j{OzkGja_0Tyw9(zBn&ut^2H*e zM3&v_8Di9l=#zBsC5X{{{`U22M$C6IgGOO--1O0>J>3L~199IjCmn2!b=PAONU-ye zp*x1I+s>@5o7@?~ivTgqta~2r!WLt_a=8Be{uDIGE|*M*KB7tYi^E)~(`E*G_f-0Z zvjh=KLqI*Hh8*WdM|o!S?~U&Cn!E-6<8IqZUYw>Xk<;&-1WvHgw{6GsL!AkG;+^0Y zJ`CBb633UW8WF0`@%WC=&my~zDkmz{aS`ilrfzY$?w5Bs$V@z+2=8tve4B-@&s|?& zP(4O;Gx`?`jmxTJE~XCJf0%xQSEH6R=#9QJ+Prk^m}X)WzR{Kx>|Jwu@ik6JWH{-F zd(e^ikjmg9=CFHHkzdXhc~{#uIGU;5vRKou*O$2xq3cAeB#G%+mOrQJQez@d+Y05B zat}S;luog1e5DV+)tCKvsYt~~yL4U{mCKL3hgq9FRYwXIP; zhc7dx^s>CIsi88Bt9pDztsB9Gi74gPT$PZZn8*IS^_FSTSTGwNR)93#yQHUM$Yfzf zE?SL%#y|32#53&yR;M4Lx|x1HXRG(ybj+!X8W1#+GFi1VbfF$`UD`UIJo&tmkC6Kn z_3Z5$!9-{6F_WFZ_s?c4^gk)Dep^CiHo3!o1WH%9<2ulUx(n+bHJm`N($4~%AHOvm z-H2?e4S4kQz??0>Qt;lW(Sy`T>Su<3j!sOcT0$yzp?xPdLzes3gQg=RlxJcUm04N3 zD)@eg$Inddryel64ICn{ktUmppL7}rRZgL$XJqE9IE?zTGsg#EtgeX(}5=YBbrleFp^@2ET<_e^)5ByeGK>56@c4=IWrWz#}ZiA7CG`%&9w zY!6XzT0uIzkuYuzLejVVT?LKXmoN3~$f;8__-hiai z%Eg*;NdYD&Ftc^^0=9n0RZZ z^Yg{MpX34^Vr2>s>0hh?)8rrJf~rK2=t=Sc2N&uWC4*$TC*OYh9Fq-cRn?Z8>ilpU zQ<>zdpLLIo?tfGK>(0Dhez{UjKtZ{I@MquTLs%=_dtimndom0CLv7^p(dP+k$B+HU z?}MUXnR$(^0qfosBEoZXEV1Z;g{$%c9E-N9ex*%H$>#L+FZIGTecN98d9bSE)yEmd zPPn}aJE7MB4*YeWA3T`On6=lBSGIwMXhu2H*kDh!cr@LB+Qok}oKZ<+JJl_BQ&1$b zQ_^_%93NNqdFtr4)9ZfhT+HS85xcH9~|Pq=&%6|}j-K7yN|wDYK?v{jb=Rwy+z)r@^jNaZb_=dEm`W1O zwJhmgQMix(rnG!!d80s#39xTx<^U#3()h(a8giy*C2r)|< z1EJD$bDJugA2@>`h0U4*QIA#`odX{_ceWj?=~3 z@z$^bds#oTe*3zzc(eO;;1Joub{wtvx6{)XodxoEGu!@C$@YHXR=g95bJI=5IzCdo;9-92v&m1=y97e=-o5s@4xHl3S1LRGfUFZ zn}naX53hdWIx+dpnbbhkB-8NSy_3yL$jZ~3O2n~hT~wr}d*B>il>V?IzPZwB2&X$E zfa7zP;P|>O!KWKg(=rJ;-?`uKag9~~8Mzdt)G7(YtJ+2*gNHoF7fy`HicF$VITFJY zk!AnDld|}1!wGKO$PwZy^tI({(T%3JnSL7^(wTaO-m+IacebC1#40EQ^$}Kc1?ojJ zQ`L@3I*Fz`dHlr zGF~RF9X*NR==`_7{&QB3$=RGFg_XNvG*D8#nja32od||~-|34ceDQg<^~>}~8M94z z?AzM1rQJsIqOzr9ng}$OT~MoGj~1eslo(h>*aK}~JMOOIB_{sLtJsJhL)(# zCbGjF0_~4Nf)IvYf9yY1l=l|ft!^zJAtMt>?~IlqsF#ke*jY+u3ZOj8L7M0n0Yt~| z{mNY_<=)nu#)W7rga7#JHJhZ~uYFTTt*`NMp0J`JVA5PAX&Yx-L(SkGGFl4Ro_?Ag zfM4LqFpFmi0#Uq*;*_UVn=kkLFxSnU zYH}d4)Z2z^@x0$DxGlAngNVg_iB=k~bd~xKRO54fU1D3b%PYB>Bn~3#NV)du-`UE+1sc8V2yqSW97|NOPF;_c?v0)Us0}S2?XQa6Ige)8}72rR<@RUL;Qxx z+5;B~Xrv{llZ?0P$USthE?wH*JgJ+#vApTT!1sZpUXth1Uz@!cnY6kf1WrgmQdeyw z^TFSkK|YSAv1c(9cV>_{(r=4Iw-Ss>94n0tzGOafTAyW(B{j^7mvRYQF!kC|PchEg znES~)TQI`GW&WZV6t+o;Uc}dmKE)u z!O64cYfA?H%py%18($4Rg*jZqYwNgNwRv~fq8^vP{sz>{XM)yYxflN8n4Z0RbKp^w z_TiH1BWEV1MeE2p%rwM9rGN-$Eg6BlaO#K7j$Q+6COGXTMvN;*SC5Y=C@&}8n#@!= z39!EWbP-1cvdNYD>{RYk=Cv;g z%pp;>hF%(-=#EqRs+Y23FNJ?OLR%*09r|6D8IQjQsvOPKO@Dsq%{}me+RiWbjzii3 zM*KEa#weC`Z?9#qR0X14NIHU>>MnOjn%<8uCwosz8wPBBL@r9lysby?d9oC6@`;EW zP(HEHC}KaDQMk*4{?U`ZJ^R@od(I%e*Ck@!JLwswkxZlnyg#JdTHf&#zgg!r7cwK)rSB^+945+$$E9TY7{4LFb3yADA~0Ya54I<@p##jzGzn3z znd33+x*Ww6YsmV^RLiH`ebBg_voHfX7v>8eY8Tu+|M7(ixTacW4@YZF>n39JY9o=8 zKJgB&Q*8&_tT1F5-1~EBQ%HT=c9E?Cwv_}sb7%&Ahjpy52|8k4t1$wbMREV6 zz?UB+DJjXZXLUj+OOz0TO_P;4F#S8n&2KfXhzHC}DuNtMU|2&+SWZDqy~xI~hMozi9=#X<)uzB3Rp{Te}t_Yg^^T5(usReO4MjJWBeJud-a=cTWo8yjS_& z8cB#q1+uP(0r@+Bu1>ePmY_NI*}>TOQ;UXeo$VL{qDY5@v^05Ifo^r2yc+Q~IINTc zSi}PxCr4=+0@Le4V_w)W@Ut-O)nHr&;3vwj(HslWfnT^_I9=Jqb^1AnFG|w4ZI$FZ zW{!vK&1h!98|kw+2Z+>{qCHa*h|U!q^9bhDULx8W5AH7r6*e>#NAoZ>M?Q;{{NN}` z@$CdebTl?vy?MY~?|1AVYz1tkdL=U?3*Wr&6E38!K3^qmdINegnw!?|ZO0}mPGec6 zg8U%V`0J8z&AprSLjSO<4@Wu0#k7VJ{3WyOWB9tYlrG~#M{h7M-Yy79mob&%W3gr4 zHF2#ufE^F<=p%65b5H+OyDKNMeB^b1mN=MmIkYxj*X9dOXzdt0Stjeky9-0o1Pe9hyUb{(x}iC|FOMx&*$Z4?^x& zIN+bez^)DTuD2?FtQM-Aik3agH=bV#-bl{Ep4fAq73HR7F!+|#6ezY``!#|**?=x! zp*ySWOiz~Lk3(Lz{v%JL`%t|T8e;ahK9%ZS@eijx2(N|e)I5z&YN92YqNP%}+R4HS zP<<$CEYEhdm!CdF{-@w}HLx;-a`>s$DX( zfM@r@!{I$w#D<8}mpThk#)OSuKOLe&t|wG|e{|GSU}NYA~h7`qP!h=Cs3@}y_8c)qRwWB(!6^y&yr>Epyk7B?9-vM8lz8kmi@o3 zBzBsV#uI6H_2#9;Hs_R|v7Q;O(l%|h6ii1RQ8vDg%E)tbO)vIeQT2c4)(hQ#b*iAa z0aO2G*<;>H-*nIUC9L=T;au=x*w$hT-xaY$b>8wLQM`g=wxu9Gqc|V5Ywf|Y?pmAp zJ1$bS?AzobU>wU@81rwPSN*wf2#o$<+aHU3pN-(|I6j{I1VkO&9@R1Lmu< zKG4agkZCWx8*Q?EJYiRJ-cT517-=DPTsiH-X-J@A^bxkb950O)SWE_?yEo3(96pg_ zbw_#8&D%v%D*ve1rKYXdj;VBka@muNqQ?7;loAEB(BJF^6kI#~qUVFR(V}E-DpoHv zI)DCXz|C$&wU@^lJ~-d^ww9EbaE5u!Yg=41wcPi7Os`9|`lpXbakn!wK{&q~k<-aG z?y|4;xN^7=c+GNyvs=S8d$gQBB85oMp^3LrNn6MEh1I@vu_<~M=Dh|wf7>HYa#BaN zsHn4whws16LYme*xn1sOdB%LHC@?GPiz#m%gju+chhs?*asoe!ilZ~7bf zS$`}^2#>loQts^NU-NGr*^8+se-iU&|K#n=Bhsil+d%Qd1>4!)?tuKABLgv|MEel+ zrxS^=-p#l{Y?ZPSpYLl*9k#7q`n-pCYr~mcM1KS(8CwZ@+yK8xZx&c_(AbsSpYIx~ z52Vy;rLO{hs{|*J4@5TmoAK~Zo*pnOSn~!JI&p}RV-vyqABDtw}I@q;0&3X&LE97WnPS^#LKVj z60rh3WDnh&Db{}Ls1+2%UW6IpoIrj-&a1RXuf&D2LKzYJKbOS9xS-#9XeT}*e73SK zi1sHk2dkD%ICsiMSc?W{1Rngt+Y?s=)rfS7-@#;U%K7Ss-|RTb9{7oa#z`+Dtoy|- z#&weH$Z{h`Gk3n5+Xin()|{#n+rE~TS#7eDqcgb@D^1vsfuZU_sXD?hoA3HRg&*2% z9fbsP#Y(HBY-m}`aOXEA&nn62GH@ZX1;jm>X|nSU^otW`wuk48x^mYUb$c2ua_HnP zvkETtyzFw{@WtaZ>$FTL`Kkw)oCo5?^oKL^-(44XPrK`moXS!>DXp9|q4Iuf`F%Mchkb{|kR z6M*F2q)IKGJbqw0U(m1A+GllOtjb6H6zZ;*()nS(*~~i*_9&KdZZTz^=GNXM2)o4e4QF~S~FCC%z7Q51-!=1SMPB) zlaMr{73B;dvYOzAJDYXS6y5os8GZMYV%Hx^-|M-|J5+#bvEsT`2%zflO=gL*N zuaKE@awp}OTg=RTn=3*nN6bAT=q&(gB@j6Nyw@1g-{==O{KjPNFK<7FB zx4ZPzaEts-+aTH&p-@T7am!2>Me*c;K_D|J~3spQPw6eig@AiQTkbTvkz?$e@={4H`j{4SI zrVy?>6`+?6V*?{HNVSSv=H>=&4tqN}C!hGASv|cn&1tAr$0}v3ju?MVJVg(t@;F&0 zhu;7yk}+XfmCjD@&f^mflyAV#ES}HmA^hLIX|leXszW9Z)^93PnR?%ky+*Ljdl6oy zJ3QaR8$9zU0Y$9cdP?LG+|ebubIlNr3Z>fUdeTe$uXg&GCYeUIO|zObmfBgp<9)x3 zK`BL*%WXUMiPBXmGX7DRv#s``$V_rLc{M0Np4F1R2p1)6dDLm^*$MO;*buc5J zY2_rA#E+n%<33aW!_2%H+BU)NS<`(Vu{<4_GL>B`@%W$4vL=ADO0)nJAn~jH;3!2mPB*>MkTV z?>Hq6qEw$lnqhNB>?Wf{HA|A=7v|YKpPCbO=i6iJygBwL{YS3SvEEjJr+v?3hsU=r zS!Xsrdp=6e^n9z3(suS#Y&po@a%7JGz2ysC@AcE{xl6}-i1 z4_eK!ZT7@)<(*a_JN^?B&Jw%K|Kh_CjgM921*Ocena#;s#j06L9gukHH>OdFkxGY6 zc3PbOY=V8}JX1Fv$qaT^z^R&sB1fYoFM(HGa;T^tTKc6qQq~x9gepEnKCGZGSJJRRX@c{PmkL>VL47t|EBQ-J$m?)w`9pajHbsN$C3p%}jk zfn}sVB25S^7<^K3P^fZS!%&TqpMj@y74XqMSZi5KH{u*$pW#U6SkM^fk& zW*Kkv_}`CP91zhg1M*M?C=JzCgtB#}j=F%)Rde<7E4E&TdtZlop5K6iwtLTw|y2 zP)nlFrHMgLvtxYpUH-8hzg ztzVS9RK7bM{r73|-AG?y zLoMrw)##|=Tpdh>MIxUj{<0ZxMo!7ato|NIHg?v5?qZH>btn9-3iqE_ziyBecxNdt zbhXz<9O)X_>w0cEu4|)S-lt|5@ePkWAHrT8Wprzz5HDvOXf!$8Hrk@XZ;eR2S{#|J zx&d2wYqWOp@`?;+S@JKtExrRIqK?cG14EE;Fb!7u!Y}n&4)e46!IP4A6%t`#awOU;M` z!@W}-l9Cu*7ueq(uXaCk{mJK=ww@6y;P=Ab;;zD;l1aGr@m>~_OKVvxx#iE$>=)f| z`g8641biQWt4aLdyf};2zecnEfpxTRC8HcE$@*~W-2t{*XV0Ni0T5cnS+F4M86oF~ zbEoa})!w;cZh4^n{B2?3y31tAV1)JcoPL6LZlzNcL`#8Lyr-GCYtqNKlf{E{sFH+zs%j8ECaz9SUz}uwyEMwfotJ)|G1c!~> zmGoBgWenPgyzntFylEpMx4r4EP@1s%NDT!yS(%v}N3!x$^olnLwtm2*wK%^|_5HXL zUpa2;*Y%%h$9w@`*NMC_)7ycGUH(8JcK&*3dBf(*fTQdvK2DpFu5>PEF%1TBW>?d6KCaWq}1k z1qylN6-q3Jor<8cQzE(Q;G))SSJ9St9gnQ0Ckb_XYga!vDUPPNSA4 z#B7HuiDh$?gbbYYVrg@ue%q%S2U#-NF0X&eU&JaX+$-M71yNba(-f|&kzzSa7!d5W zMN2%ziH%at`-YLJWy{z;{c*LZ74WudisUsY+B8%;vb=?GNAyeBu4*aBGAq z6q+3N`)1My{{3FlC>YpE6VKU(Mj4o!#n5X?sw$qY7x2}*R6IV&Pl=MG&Ks|k-qQ=b z%cgSLXX(FX`|p=?Zv5+(CFI@IDYu&48`?~sNnwY+GY^m>xql$^e2;bjXXa&@YFe4d zGn8nS4zRCKI3Nb_x(gMKRpzyZjWhrjJ$yU55$A6;MQUiay`-Ckp9em~KISp!&NJP3 zinCMqt9a{{CTL+NDJ}<}PdnxM*=u6cZ!$C3oAPwbZs!QP8N7lk8T%&<|5n0Mx-05^ zl`C(WGU+kDE%;pOJ&abN!B<-`;@?-S$J5WLvfo0oZsbdF>g+5ITfoKEiiRYf@W>TL zx2&EJ*j6w7^J-o)RPZj;!DI9va%zL-&&&o@QoQvw4`hZ5!CdUJokt3Rec|-oEpDY> z7dWbYMAl|L-m(7~s(k-&+q~GN=|z(VGyiBmyL~{v>NJ>~NplzHcwh29I?~M%Ym`l& zs=I$c-0O7=`Dpm|vz|{w@uRUfH;D2rr|`%bQIBn!~4A^5^JkYu9#4e zGB%vPdN$fX{JoPzv6XD+;28s>kx~;|jI~d3!~}n`PT!qCRj62=+hsCSHotlNkf(kbMgw^zBf+r+##Hyw4!PZl3)k{JppI^q=U#d z_>}>H@&Qh~5Qyt2iMHrvYut#yFsMVlS%D8}Dx(Eze6-q~q${7j zm2IQ3BHn#J5(#3wIop!?CMq|*Kp{@6k<&m$BV_w*bgzf{G8;+@IhFqt^E|z>T z-lb-5j_KK)V882MvtZ^D2O{KyW1+8y8~PT|yqg}wKaJa6tGJrFJf6l;1%I<=0xzL| z`{$JB4kr|)QW`^Da^9_9(L6C6W%j*hruKpsc{Xna-SR&fXDjZbakOO~AMZShwE5RL zMR7zFOt6@el)L5Z71nK8%BEtJx0L!{^_`zD`&O4uhqP^ z0LpT*ewI5rX|Gxee;9ke-8HHrv_7+!`BYHIkJBN-+uqy|h zg~^nNn3kV9)HqsKLms%du|1mlaL4o%1`(S-<~o{nr_6FgKgXPA9qeccQPc@0Kdn_= zZ}S0er5f#rNk@6TZ>*mM@GE^?y=>Z97WYW%5VIn;%zM@|W!`-_Tz7Egl276+PHnY7 zU@n?*E7?uVf`AgPS=oIz&2iR!LLISdeXm ze89+KHlDQ1uHM_9deYYCv&2skn80G^fm0+`#!a7sr2C+7UE?K2d4y3G%ElwM!r!}P zDXdI7>a|_Eyf!<)SU_yj<%6&mKk%ZGZF@dsAOm&y;a4&r|>OhB7i*Pc zU-Z=;Xlg3TDpocofBF@w%}r5!&}T0cSsQ4~qq=6i1?(6Yn3gv#S!KE@j23|h$VrK1 z0f#$lVx5;SDlSA0gF^h-*!iL7AnSLcRg#tRdfBW+Ca@KXk%iJ}^~*+4fk-VN#<86H zvT`oouH{37xeACZll>Zm!R7vR_!{GC@%Vicos8r)c3Rz(b1S7wic^G}H;)$$B7s@) zKLCMbb))W9!XA^-{Ju4x!Eb;vWGQ+KnKwLTw&v{UkupUT@Lc_fjomst<5HHZ5UmZf zJmks^?<+&_gC(F)vB<@=ys7+@@Bmq$#~~>4KfpAnh?6@_3X9fBOvueV{P}um<=@Nu zj$jIQL!PasC}{7#`x0x$l}Vv!ip2BvK7jl!V(HKnXB6%#i`0v=(~1j_Epv#FS_F1b zds;gFI#p_6ExSskRSwG7J*t%076Qs%K3`0H5xeg2h!{7ER+!hvWM7%r9}llNc>8A! zKzLz2h~;3Tdk~l^mzHWM>T9Wb#nQ=fyurJA8~sQ)z8yHW@)5`NiIeWov#-Uiy=Tn{ za#Y+Tv@KG$1#9=bMlHTjIZ~24B%2~u0@+Gn8f_n_P)ym8o~)7)_n_iyQOW|8cGw@7G=(VEzb8*VjD?unXKiYmz)ZoM}zms*AK z<3XBzdd}9`~`Z5kL~Cg}Et z_04Az8qfjY4mN|@y;Hqog6yn zNy}oGWg6ZTd&R{FvS!KPr{F8%1%2bZxGpy4P?Xu%K2)%9{prvgi&qQAn2m zHaYZ$=Jx5S1E{=4WOhZdGoq_4Lt*L-0x!|?h5xy&G{$w_%r^t^>Ek3n+U-NQvF_VW z9>%iBiN&wFGhV8=LU+zf)lU0!OA@8M4{PdmN5?dRLT>TANKvs(Kp`#K)8-%Vay=9l zIgd!z;hZ7nAD1IpflOSqm-1o5Y(hSs0`v+yQLwd<6hHgJ-69F~R>)KkdPn;uO9C<~6md9Hvuqz=;wal0S%o+WL*w@#_0#45Lk(-c~-*@B|WN<%f9^B<& zR!COb3s^nm4oMA{`xq#y)E5)~5wM-sCxPwQkHk;a|57=obIZD?IZPE1MA|<&sj9y> z9^>=)iV5YU042*Eb}Hn({!wE8$i45L&iSXbVY<7YjujZ3k|yBiBHs{CrU;On+|D%2 zs{d-hzs2(E?53-0@qeaT(5?Z$Osly5gud0Ty!CNLrC{x$#A&~UGDP6$q))<3r`OuTYM`J#1O z=4%b!xErm!zSq1@zzIHAcuW27HVrhrkC)Za)&MCG0m(*S*ZhH{ko{4eiulPmNftZ% zdD1#*CjseS?WMb9XgDRX+8O}mM_r7#bb1%OlCF+o#_u}0QX~=^YVTT6B%?3?7*Ay_Df(T=E-S)nXIRi%$VDa2Y8_TaA1^f0uW_+c-$vt%YB?%?Ne{T{l(d;Py61T za<&ud=2uNEIJ<_1n1HL@pKdUkF~ie#f_HoMG;Dvb929gd@-*vJp zR*f9BMamq;eu6)vuzNCFeHUoq&x3utN*$C5GT&)j`M3@@y;z-+I5qt4K1tw_PnSe3 zY+-4fEJo3D_V>RuW__>u$R9yBcua7#ma}qqrSGtG+^eQ@fei?7tD4R{-);fX)NM55 zC}!u^TALH*|j4)_4F^mlc39Y$>***+hM-MFt}a|_AU zmG6_`T?&CCPa;H?0MJpzmtUDa3_d?HxVi3t5XLW*RY{lrcyO=&Hjc*tVQtgCZ?6Ar8`#c^j`8hgxAJQqTLB8 zU6pTr9s|l`%dr~`;k?@hlh1U_vi&i%8wADh66uDNJ|q)CMvovs3Y?aX`dzC0jcvtZ<|uw;*{5PxJO z{)@0xK(d~>Da1woEtBWixT_C8b%}P3=1@F8u-!2Y6*49;qjzhftp2!CO|@CXN6rD` zH2ybW<~CZDjkP1!e)@@{;hhFe3;w{?v`8t@rJZnnt6x|H)M^wNrXaTlfNgun`~0Re_3BziTWNxryI%v(XYiy(mN zInNtM4|dWx(?m!RfQwsGDH(M(zER3A$QK&?T;e)BL=pKUa$E!bKOb6-JlJ9q`E+uR zbDvr+E^=UCF#~==f%fs2(Rwcb0ovUNoV_lMu1~JX{vQ_jY2jYMHEU~n{BQivdKLv4 zFg+$~4qhoAHnr*`3I!j^JQ^%@y3Wt#VI>uy(Sm1RO_^adnyRh>V|@)}k1G2|nj=Dv z&c@$AwG&G+6t(PM#(2NbQb-MLr7gg+3Cic*2~IYiyu+aF z0~O-b;<`AV(2x9{p)K%eN#$RWLJ~gCJ2XMxJ8N&&K!ZJ#tbycSl+< zJAe$*V%>&uxYN)2g}ZX8NdAzriI4Uwsc1T$mtG+)3^e<9x!lF;-y zIygI{&XI>$dBpuZ7kS8?=(N{(@7SOy?wgkTUHGQp)#V#=HIw>RRA@s9ILTeh$p^=M zuuRD?d(^^zfb2?Y;~N>vA>Lht@m$i)2w(2ocv)#bjhqUK+c8&z@P!NM;o++;#PS@rv`ybIM717HduTGQIjTwVq``G_5WG zV8^BS(M)Ip>(rIa<|^x$v}XRnFjZk$b#AQ6rFAVD$GPIy!=YxQbEo#$fVx>$;Q*d8 z$DQa94Vh)M5Ey0L0c}lH4@s%E*4!MpWVMfI(%SywLZYEM=b!6v9-La=bpKmO-90Ro0ew!&|6zm8(h2w(7UTOQ|cLKG4+j zPnY=A1S%PI_?-=};V_Krt-i&~aBKV%mxXV|C0)I8vRIubZY5dAoSUg_RCmg8+Lpca ztgpIDKJHBwC=Y)>g>0T%bpH*sn{{D4cST+CQ@>_`EJm31nUs|rNp9o3A1w0v#8&ir z{+_zV?&^Qqr%jybaO8ZQH;v?eLuX$erBhCv_RKD=vfOTu;th=VXV3%vwvyY%| z?e7F8`65)kIhojLGs`lT*A6 zDqLlhah`f04X#xP)9X9RbV||W=XF(vwgnKnJ zRKU_hlDD)wV+0YmV5$%1%J*a)n^^_s!T-YVSeGN(Z%*Frv&m8UO}($vkjHU9<$iP# zpy$+N<@4jG_miACL~LOVXlljAma^?47OE@w0ncr0+)FXW74e|UrjiQf4=%)if9{-3 znK==o|2ov?w7*Mj^^>Q*Q*b0eWwa0-)p>I?a1~vg7!~Fj3aFsT3A&G06j!-4OFv_8 zxpf+6hLV~t;~tC__DqOItp#x>KD}?A1#tnDi(RthHyk|OIA~I`TfH9~qjNnfAKvKl zVdTnt*{n&_n06bRtjV_BMq-|H_RWDu`cv2DFWff?chLGjD)irY^dOpHDR zP(4h+zdqTN`(c*V;Q0$4owjb)Y7)KbHup(@f$7tA>7AHC1@Rek6r1a=Q>b`&U)J!A zsKD#<9{}Q86cC{NTcoxcfUxiS>OX)b<-fEkK1UlQ7Wo!{y38NecNm;j0=f~$B8oXw!qRdDxs+0arck=b#TbkpJ zfL3Eww(DC*Wkn#ojw&f$O1D(QB+BELIZ$l-KA2rwEk=~X}^qsho`sdV$ z6NWfTu$%bV9kChQFVxCC-C=PWc;ys$Yk*?PG0k$4Q^DASqI;c?RLhC@Rh#vJ**wk7 zcm{@9o@P5I8!{Ah7@8x$?ul@`{C98f`x* zob@tj|HkLU?da%Ob0P?YA}WvPDLXuqaX6QZjA6`=0t_4H1NKMao+)FDIa;=^W#f6Wx%{dwr#k;;mcU0PicH>O^KS@F9jzjtvuI6NK)KgXL8EMS@WC?hEfwU1NT`4FQ!Ikh#tKm1Gf+LaGyO>?l>#>%ri_{ zr?+$$xF2XgzfS*Gc8PRO-hIZhVOq9VgvD8Zd`=e2 zW~7}+2rQqqM;R%-nY?$YF$xTsG|^?!1kN84nmkF4S0@DBLoHqZ)_L6a_eDPb{_fKM z+F-y=A4nfLag9leXNlPSYAA2?BO>rojQlNco;ur5v%N*#guzay{kWvzc|@lyKQJPk z+uHlj`GUl*RqNe@)YVLyM@F`clc7`3MyAp4zzh@v6%piGtnEJv93R+%b5Q45V(HwV zJR#ZgpP$H!uLLOPxgE0>Tlsk>OY{WbvJo5oE^=U$C2~u}$54fMHu;Kgd&yLFC~F%p2dhpD>4Ove(BC*tfi(~eJ%0PrNlJQ&OY+7K)9d3wHzTc zx6swd$pgDX{IW53ht1t=?aA2a?b~%e*Sam z=DaBgX*y8@pKVaDw=e#svy`m$JOr(dYI!l3PqTuxS)**>wzQ#{WM(Lv#ZeLBHk&}6 z!4Jj*D9h3}Qr^_t8Osc->~vDfB7a=a49hCl(*ht)g>iA^WZRHIKJbj*J?8!6U{7;K zIWDTp^oS3#vZ5FwREWH4s`;2C-$ucPei-sdMt}XPj#8Ej$=@{MV3I=Iu!{B8#v8U= zHj?g5uS40-!*f+rl~ls%!?QC+RR}N0=;G~G23t8yDx)UT;kHo%-*)%op#`)50P2V3 z4e+#yX;5DOgl}=;429vNb-14U6MxO9v;nscRx4yl1uOXr zt?;Ds(VdXJ;G+s)l9;xD9Ts!UnJ6FqWH3O~)1>%_$6jkPA?f)f@4?SEujUVe*zx84 zTi72owxSnP{DDJ>vFt|`tPPgQ>WI{KaUzO|#`MdZriuspo<421PN}j4r4D6PZAKNl ztDsWG(RRu;ARwTRIGIUVpgV7ozHCTf{wmx#%A{~9J#kAt>y68-Ifqi4k?LX@r}AA* zj)vYypRW)915}5)Q!PX>UIlM&jRh!hmt56hjPMoz%5QhFSr+H82phC=ax%)u0j8j! zcta+oCc!}QXN!>8M_4Mhm4d`~J}h>(`YmSXndSGj*@+p`+;S0ke$ZUxRH~y}?!fG@ zkEJgg$`EiCE@#4!*ox9-UtRmKC(9Fh{mJ&{+s0P`5xG)W%gCSNd3nqL3j{Rt5{pcqbAlK=5kQk=dA*!&-$ioBkSSp}0( z+RD>$v5(yUjGYQ{LWx)pvEg~fJkmKtImzL|K;eN6P$4{zOjtIpx~s$7z4Ib^RKv&)5>uze$cHfT1JTS*oJub?gB(5RT$haV!NX~26+!%Ey2$>!2LAzs{ecP2a1Zp>}zGiTCpIr8k7Vt_M5ln3)t zU^bOq;h`L;SO~!F7NdiHvjvBB_Ha@Ekgl@m8xC5 zVct~oAQh-X$w~b^KNuVT*T0yTe!CxUorvK=n(EPlk1N(8PvATc;9cAL0wjQG^8-bX zN1oU#f+lJ^(6!GdvHV!~>^}F$-+jQAH!*>w7!=h>Q2^4fw4VEgN9Lf~j#BX%W^4pT z+AH2N^=;L8Ou1mrUX7=rpW55cb!@11jYyrrFein?x)n`?PG&Jwh=n4ZmPEoZumqEf z5K0!K30AAFSO|y%EV(4dl7K8d6v{%aw$2F4u1{U#vOWk+bs7sjE{@0&uV7W>G(-OI zSGc6`T(;)+EA_KQXD2L;#~M^86f@R0K8&KM znl$HpF#>hYrt;lDUG+b*)qP;t*o8aAJU*U5buh)y^vo2offh$>X?BCz(x%CjqY{xc zF;xWSayK&Uej^D>IFL9s#RGS#6~#TkONcn*Uo+<-J9_FZ*Rje#!$oYM>&&DT`|9eY zbgra3g8o~6tw7|3(V7lcvPVb(85bX@pM;-^3f?^|BxYLK3H>Lv@JhP z;>KAJmhh*hmwN=mpPU=>_YG_GuCFEs^L|Kr-m&qTtpKeW@i?n!RzeeUa52Xf=D$_$_294I4Rm3oXWx?-y;~yaU z!q1M(ZdiN>WGfp6mn6y9@OC=UB-EY!aUX%CDES(OoFPL_D!abu@AtAZWGjYuXms~~ z6zEek&+#E~eD*5|ZZ2iZ#PigzI)49JV*W5@B_#`kIHLTn;_8D}R=~A3R%ID}W`Q2= z>{enK(RjCujeF`tK=5ejCbUNWR$(tjxt~elb!Xm&p|;r<>Ni8I^T->%%4J)|wDKP_ z04W2CBHiK)IzC$YpuC~DV#Z}5V@u!pPeE*oWTSs`Z;5HBX#Tl#;(qx7O?=}j7o38x zn)4)o@y+50l{oV|NB-co%mQ5Pqy&_h)z_H>^eaDHE;n{cn+C7oDnKL?xdSS~0UM54 zBKgNn%{x?)LMRab7vYq2UJ*&qLZ7%Yr8L$bAIgN%*d;76QlvUuM}}IfZ&yPYxCzo2 zT)yVxN%v$@fC{PBT2enYbw2tM4wHATqXl&chP~Q{j<~G8e0hsGyYn6+(*MQ&h~jgV zVV3=KJ!}&|Z1SPf1tgF%TS;(u(^Zuuu(}rcB7DQ({ygd@*z}r{W5mKo)d9Btb7UCH z+%+b#Wbv!?S33)`K=Z+*f;0LgSsIs|w(A6;UnTX$3Xgn1LkWk{Qe0YFTLv!u?D!?X zrCE2VaLb?ffkZfI9BsotJzL~GnJry&`$_9*D8yG&Ln{wy8%;J@r-^k!MYER>m9Uph zYzl`Z52X4u81(~gV6%!xgNp(M=ndE7XYSMNj|d_nRayK>;E^91>QXH+II6^NE2k8qwER7^|0HRO}5Vx&fz`cjf zM&Z^>x^A?T1WqEGG}45t{jeyXUT!jOK7f^Nt7|0sw(0C`hSMk9@g}D`HxKr^j9?`HlCYA_P(@dpp30&N`Ch8 zNGPaeHM~1hQr0CgY6Kt~RS(;+QZWmscZrHysSS_eQ1%!R5Z*%g`GU?TjPmeL%14S506TZ z^BpiG9L*uL2qkr9f?@hlmk&4`;aN3dh{ju+QVi#)87`$)JsBLOV{1P_C}Vwk`<6fC z2?}{b2OH|vj|ZY5wn%`8k+hR5HhrF9oW!yt%5*)GCR7;2jyKgW8R#0}h>2y^<`+a8 z$_EtXm4Ugf#kGW_Ox~iCjvAguaY=jP3Fop}#!GTI=*10shnjDgr zRH7^UJQrGSmWKDpU@8~l%B>vBS_voz=T#8*$^@rCKq1br7iN9j;!0&5il)~wUMH*O zHx8c^70@hQzPPO2(v~}dafHVUIh{vtM4lhYl$Wt6i7(R-&X;^N5CZPCtl~kn{3wf;B*5LmMPrM)QBFg&Zw>W1EscY@_IIz_%1VX^cF|*UXIm z55SwHIKW->)bkE&&u?|Pg>vp+%7bm=Ej1XW;cS+Dy|@4f{25)U6iYj0iUUjXP+JOB!`gtMBjY{j6fls>xLWx6|6p+S%r~Jw>>|J>FqUI)H$`W)t1RRfstYo7a zcagF}zanmd_|c|#MT&)4F-h<(@OvcKzswu&IcbNs__rX{D}DPO@&40VO1bx#zx=4& zP?dedgx`yuU8wG`QvW^Qn7rAIpR-8E5{axO%oVXdz=md+K1%*l=2puFR*|mCbA-2g zrvF+B>=r@ab!?o3`l{UwOdc{*E4df@zOt^v$OI{|Z1nnr(n=InEBUxHN z)NiO=^YOZ{32EQ!+^b}Lz~ROSkMtWdUe{QI2RKB36|ehz60;PL?IdZ%9-4iLJ7;_Io$yHOokBOpb=haKw0E$jvnd|p$~9E1?B(qEBd5-7jhM( z`_i<9C3^(m?go@Qs+;@qp7=YsR^?zTVK4D(c4gzpIE(CmfS~>J_@}Spe&=_LyTA%_ z<80~YQ_}4w_Vu)BSL)BTT#pl_hF^40{Zd{~4A-}qg0P7~EQ|*=>9NG|QrLRp+uZE+ zU`|DdoYP^|Y;WvwK>q%N*QKXvV{!Si12tl~iCREBOl5VPOUv3&9_9lMOYb26HGPaE z8v+x?sdU!k3>PXSL*3s6Tw!M~>R_XN6JblnUqiVmI8Kf`?iHZ4d&Q{|j=IWr?o-fx zaxXAW{SF*NF#~|kBMdfuA;^#kHO>k6g?lUKX^AY5;{BBzF2_d2K|wGgeB@Ge7bFsl zq0qukL3o5w$F;--Xud;~YCg!j2QhG1OhWzK)=8W>FQ;)j#+ zd7o-JT9e6i3^`6zFxKK;R-wZx1{dWWxEliclo}%<^NeufjD^uyc`^1PMTx282n6;& zKq5%NwG0QijL|LxdfIY;v%7&_P2B(HN(>QA0zv%0-CIVjq zq?U?|lk?xuvSzYYdB_lanHh`_a>9Z&D$iiJe}ioL|V zlv0@<2$Pgg_)l;+rNbCAHBYaMapnyIARXh3Uw*olVa2YqkO6U{)H(WU1grsl9CGq99q1^N>INSK*ymw33i8%TAbl*=*$bemBl630`T}*70 zPFa}B1c+0ZAWbP1Ktk;K{-v(ct^8;Qu3+e4{$pq#BzsqH0{wvZTc&h2fu*FbaV%&( zvS4uN*N6P$ErS=f4(ZKTkbwl8bXV;4IJ&OR5y4=#l7YFuWR>W0g>j5ii~`!I?EtHC zA)HV3ffKHir;cxe*pjz)b)tgLA=jz4^zco5Z@ciXkdj6)jb3|vO2QaC>9PqZ;E=q! zlviRL;dfkwn&d74*0N;vo(n6=Zd|x2aAl7OGMPwiZ|Gmy>Q@*u*YTYAd|2G2eBq%A zZ}(&AkkF)EG(>*S3rh#Ioa%_8L14#UX{a(B&(@YcRgyHYg(w|;NSiyoq0;mJPre$u z8&EPd-zIjhnw*^ElmEgn{`qQLw2EZCF_#1v6kMez$*_@;X<2nt;_tXa;+qF>&EPGa zX;fo7moVEK@~#$aON%8e{SDhnLUb>uoQWw_$YBY~*!;c@WI&zeHWK-zoQb~&iIzln1XJ1uWsorIz_ucx_6FaHPFELSZ9nyew*deYlo zl|Qov_s9#?$<%Vk*TSe9-B!aX%kXCjj^9L&5!4NL>xK^((Xc z+}JY>b_cnXXHBn$3h;*WvzV&eF8AIGkW<|uhN^wy?xJsYC@IbACe$uD=s*wqio0xm z*==Zqe>t`Y-Q%O5{wSzO=0z||Aq>@c`fl|;Fj8~ZqjsHMVb;T8_5MzYMdcT_GCEqh z3DbL>O>Jo78QIE9JHB)ZB2Xfl)^7>I9=5VF?#LaMTsNW&XRKe;>c)q1RLmO+wBk$H zkGAw_(;r*ASEUVVU+onhc|wP`HujM+T()0j7|-knjib30VCHa3-=v&t1B$`~81{Su zX%a=X9?2*K+JwkW=#Xa9a12hl!mB0}zxOzA?JYD1B{}YBOLe2GH2VKtpFAc!k@~Ko z`&NQ!kStrtXz*eF6~|sdolZqzN4)KL^mvvf72xcjaq#9<7FTIk&d=Zdc%Zw}O}vUD zysO`JiFbHVhqwA9@;qGCdmk>VSo%130i#veNz{?!krd}6902Mr5uJ8sQg@09t&kd# zxT-zE2?>1tHBtIzN*bXFcxRC%)QvEe%!PD_;EXejjgzD+jHIQU${4r~CQQ+d#wE3- zx5$Sujt(u~8lkf9bQKuCMR=Y*9$YLKpUAs(-g55Vx@ADA^92X%_Q%tps}p*ZZ!(Pg zUSlLoC3Y8$JaD6QYf&}|rm?!Q3iOnu8_|LpAE7v@>0enkSje@p*=v$&@G%PU2~D>& zDQJkCeD&CKvQ@w&-f69+G@I6={=+Y{^LoML!=JbHCSM7|c8#T^{PKanN(lAvQbM2s&9eT>FBz#k_)&1o3QYqFaH5f*zOkG%lP)>^wYt^e}gZfCNKTmDupHq5jc;j}lD@VXUuXx|mR9+^elo$4=C!0Oyc^aeWlWs`q%?-Vu4K;DRGp3miB6BJd z<3*1yC+`V}(bC~@vbxvB=O~U1G=3xCk!u;Z6=sdkK|tUwv5l>>zoCIVf{s4-XjATcqc^2UZ* zx{i0%f{!Q}N|w(LHu3&C*^3Lh}1-!%cfdTMa!httr5ZV zy9piA114(@lXQ9}uTIJzuO|VT!u+*^DOSkQ?@&C#v)HN9b+sUe~TJU_ngIi=dcqgYs1ht(f0f5A%qzr zgRLu{{~3Y$iXNLvaqpA?$+)U#Tz!*o<9-5}RyJQct9A_M2H{Zj{|gHV^!C$9y}fVT zz)1e{3<}$W!V;LlnsBe^r-5C7PzC_SE-P5kirmIkr1l$2P0zJBbgr8ig)RjpEf!)5 za2!%CE+`n7q^DBQA($QLxUq0)=!QmHQI9WR4!GyAK!&((2N zTf#bsA1gxN@H74u-eQbY`v{h+O!L<8wyeMM!5jV8T7pdjQja_AzivT*vqArXTPFP&K;_sKe?j*6~d-Df`H$>rwS&HHdwWBQXrp7(wk`tonVV zzkb#RKJkiyv^_Pt*~6arP%2&*v1<}}X|@#8YCS8|4~F!n{{WXo{27P!s3h>7nEfMk z{{VH5^{D!*DPmFPX3%<5O{pJstI?ammItJ>kHmk4Lf#6u{u{Z6)j_58RzIvn^Y1EA z-!z0uI|KOFdj1Fll)UHOKmNT}e+AtFe7WIou0>DPq=)UGaXFLww4Q4Ys%x)44b*|) zK!4zW{c4T;BdL%1Vu$GBrO}xEtPWGoK8BOdZ%XN3!rGeu0L!62Mqlx&@8R3@>tjFQ znWX7Vr8qMS?F4o-@3fKHwHrpeUbb_O`($bd(W(6w@HhKwz63H890JK6lukW{WK-^``lPtNBw=`B9lq@ETm> z_GOPUlgy|#&Dc`xlf5ox_8%cG{L@-MqpdVT#B#=*EysMCFD5k(RF+y46jRH;71x{IqZ1XR9Vbg_6k`TqdcJTZ>= zY}Slk3xs3Nx^w>Ofm$jOA=ZjGu$)tZ*Pz4UT{a=}BS?SSYQGkdVFnC#kty}tn$=<7 zQ#V~6YZaZu=l4)b-$c!6L*boLTpzQD!RIm%E6|k!j0FID3{!&pRjLVYL$5A}7YBo8 zBR3ZcpY8%{Qrp6I5D;9+Gk>?hu7_ z2AxF!HwKNA`X~XLDA`Y1WWuku^*~q`qVApi_hV>fc_+Z zO75{qQs_gmUfO-m1-uuij*o7C;Ai|QCh&f!KjoZ9=_Pt47^(Wa3ik6n-1tjX{{Wr| z_&BDY3F^cCT{Hgx16uT~QI073v_sp-^F!fXTOaY}fA6*b02*ifBKoNR0GBrZ0KS*} zYtyktDScW4_VPTy_+wN50G~Ge$N18J!ZoS?0MC@4n6FUVO(1$v^;n12BzcGYBYL0w z_{;iGd^xG({yb&-T{(NQqE7UM3z@zHX zLG_6qU;h9I)~DLWPtuS0M)fiO04_3qmFgQs7!)itNA-ywVgCRK-l_ipK2Q0N@uv?B zYQOX5-R5|ap~ZMAAa$V`?2Ht)tLMlV!wV#oACm=d{K&OlzS8HCEUVK z3+a*dfVuwwX^l>r4w{^;ls}5*wXsGjxmRI1%ehKDHqt-!cF?Xp5LDtIyeI?cDq1O} zVO(a!DQTnvVu~oCtAJ5O6f^-v6i@+06i@+06j5L* zQB9(%;692>(MEtREjE^)Ko>LvNktooc|1@L6x`4$SOuOG?}IA zKos*uB`pIMj^>hzb^&usnr#&N0Q}O^C>?1a9hzE7DugX9Ct*cM3z{h@X@KBp%_eCN zT5JdAmo*(YbfsV&OH9oz76H^#MJ*%)sVOOQKnv20(osdkE@{-tT+=`)I5cLGiWpdS zX>&{+Y1EKdS}7?rRD#2(rk<3UG=x5iLDGZLg{TWfBJwF{KonC?T6GKpjL}D7PUE;y zMHDc&QAHF5#myO{qNc%db4F<>rh?+pNkt4|(M2TyEfj~X6o6VN%_SBAXr!g0z!XwZ zKnq1B0+0n1QW|yvXr#%e?lb`UGfd4HrC=U9&}o5=X-`^h0J)-@no-h#4AGiQ(q@1i YnoQDBKnt1;CTOGr(V9%sQD8s+*`)Ivc>n+a literal 0 HcmV?d00001 diff --git a/web/data/streamers.json b/web/data/streamers.json index 7d37fba..cbc8dcd 100644 --- a/web/data/streamers.json +++ b/web/data/streamers.json @@ -580,6 +580,27 @@ "total_favorited": 842, "avatar": "streamer_avatars/zhedaxiaoyuwang.jpg", "profile_fetched_at": "2026-07-29T18:26:00+00:00" + }, + { + "id": "xiaolu", + "platform": "douyin", + "profile_url": "https://v.douyin.com/wLV8LDRwC8k/", + "tagline": "科研小鹿", + "heroes": [ + "enchantress" + ], + "nickname": "科颜熊", + "unique_id": "894277260", + "signature": "玩点不一样的dota 周更1~2期dota冷知识", + "following_count": 82, + "follower_count": 7263, + "total_favorited": 71000, + "avatar": "streamer_avatars/xiaolu.jpg", + "video": "streamer_videos/xiaolu.mp4", + "video_aspect": "544/960", + "video_fit": "cover", + "video_title": "【科研】冠绝游龙中单小鹿", + "profile_fetched_at": "2026-07-30T09:14:00+00:00" } ] } diff --git a/web/export_relations_site.py b/web/export_relations_site.py index 920f32a..9724112 100644 --- a/web/export_relations_site.py +++ b/web/export_relations_site.py @@ -56,7 +56,7 @@ from shared.paths import ( from seo_prerender import DEFAULT_SITE_ORIGIN, write_seo_bundle from serve_relations import WEB_DIR, build_payload -SITE_VERSION = "0.6.5" +SITE_VERSION = "0.6.6" DEFAULT_OSS_BASE = "https://climperor.oss-cn-shanghai.aliyuncs.com" diff --git a/web/frontend/app.js b/web/frontend/app.js index e6e14aa..09f2b12 100644 --- a/web/frontend/app.js +++ b/web/frontend/app.js @@ -414,6 +414,15 @@ function renderBoard() { col.appendChild(grid); root.appendChild(col); } + // Filters change grid height; keep the open drawer from covering the last row. + if ( + state.selectedKey && + !detailDrawerClosing && + !detailDrawerDrag && + !$("#detail-drawer")?.classList.contains("is-collapsed") + ) { + applyDetailDrawerHeight(); + } } function onHeroClick(key) { @@ -447,23 +456,33 @@ let detailDrawerClosing = false; /** Cap / floor for the in-flow hero detail drawer (px). */ const DETAIL_DRAWER_MAX_H = 640; -const DETAIL_DRAWER_MIN_H = 320; +const DETAIL_DRAWER_MIN_H = 280; + +/** Natural height of the attr hero grid (content-sized; not the clipped viewport). */ +function heroesGridContentHeight() { + const cols = $("#columns"); + if (!cols) return 0; + const view = $("#heroes-view"); + let pad = 0; + if (view) { + const cs = getComputedStyle(view); + pad = (parseFloat(cs.paddingTop) || 0) + (parseFloat(cs.paddingBottom) || 0); + } + // offsetHeight is the laid-out grid even when #heroes-view is overflow-clipped. + return Math.ceil(cols.offsetHeight + pad); +} /** - * Height that leaves topbar + a usable hero-grid strip + role tags visible. - * Prefer ~24% of the viewport for the grid; never steal the whole screen. + * Drawer height = leftover after topbar + full hero grid + role tags. + * Skills / other tabs flex+scroll inside; do not size the drawer for skill content. */ function detailDrawerTargetHeight() { const vh = window.innerHeight || 800; const topbar = document.querySelector(".topbar")?.offsetHeight || 60; const toolbar = document.querySelector(".hero-role-toolbar")?.offsetHeight || 52; - const chrome = topbar + toolbar; - const heroPrefer = Math.round(vh * 0.24); - const heroReserve = Math.min( - Math.max(140, heroPrefer), - Math.max(120, vh - chrome - DETAIL_DRAWER_MIN_H) - ); - const available = vh - chrome - heroReserve; + const heroNeed = heroesGridContentHeight() || Math.round(vh * 0.36); + const gap = 8; + const available = vh - topbar - toolbar - heroNeed - gap; return Math.max(DETAIL_DRAWER_MIN_H, Math.min(DETAIL_DRAWER_MAX_H, available)); } diff --git a/web/frontend/config.js b/web/frontend/config.js index 8405f1e..dbd3b46 100644 --- a/web/frontend/config.js +++ b/web/frontend/config.js @@ -1,5 +1,5 @@ /* Local defaults; production export overwrites via export_relations_site.py. */ -var SITE_VERSION = "0.6.5"; +var SITE_VERSION = "0.6.6"; var SITE_ORIGIN = ""; var ABILITY_VIDEO_BASE = ""; var STATIC_ASSET_BASE = ""; diff --git a/web/frontend/index.html b/web/frontend/index.html index 64ac92d..a5a9529 100644 --- a/web/frontend/index.html +++ b/web/frontend/index.html @@ -43,8 +43,8 @@ } - - + +

DOTA2 上分帝

@@ -233,8 +233,8 @@
- - - + + + diff --git a/web/frontend/style.css b/web/frontend/style.css index edd4f7b..552fa96 100644 --- a/web/frontend/style.css +++ b/web/frontend/style.css @@ -478,9 +478,10 @@ body.detail-drawer-open .hero-role-toolbar { } /* In-flow bottom drawer: height animates so the tagbar above is pushed up. - Fallback reserves ~topbar + hero strip + role tags; JS may override --detail-fixed-h in px. */ + Fallback leaves room for a full hero grid; JS sets --detail-fixed-h from + measured #columns height (skills tab does not drive drawer height). */ .detail-drawer { - --detail-fixed-h: min(640px, calc(100dvh - 17.5rem)); + --detail-fixed-h: min(640px, calc(100dvh - 26rem)); flex: 0 0 auto; position: relative; z-index: 2; @@ -1795,18 +1796,17 @@ body.detail-drawer-open { max-width: none; flex: 1 1 0; } -/* Official demos are 16:9. Prefer a real widescreen frame (grow toward - 720px / ~58% when the inspect column has room); never cover-crop sides. - Height follows width via aspect-ratio, capped by the panel so tall - #detail no longer stretches the box into a near-square. */ +/* Official demos are 16:9. Size within max-width + max-height while keeping + aspect-ratio (do not force width — a short drawer used to clamp height and + leave pillarbox black bars). Never cover-crop sides. */ .skill-info-video { flex: 0 1 auto; align-self: center; - min-width: 220px; + min-width: 0; min-height: 0; - width: min(720px, 58%); - max-width: min(720px, 58%); + width: auto; height: auto; + max-width: min(720px, 58%); max-height: 100%; aspect-ratio: 16 / 9; object-fit: contain;