From b9f52249f3ff694ac6e8f6c390ce1dbc0c1e59eb Mon Sep 17 00:00:00 2001
From: Hsiaoming Yang <me@lepture.com>
Date: Sun, 25 Jun 2023 21:38:52 +0900
Subject: [PATCH] chore: update docs for shibuya theme

---
 .readthedocs.yaml                             |  13 ++
 Makefile                                      |   4 +-
 docs/_static/custom.css                       |  36 ++++
 docs/_static/dark-logo.svg                    |   1 +
 docs/_static/favicon.ico                      | Bin 15086 -> 0 bytes
 docs/_static/icon.svg                         |   1 +
 docs/_static/light-logo.svg                   |   1 +
 docs/_static/sponsors.css                     |  77 --------
 docs/_static/sponsors.js                      |  42 ----
 docs/_templates/partials/globaltoc-above.html |  11 ++
 docs/changelog.rst                            |  56 +++---
 docs/client/oauth2.rst                        |   2 +-
 docs/community/funding.rst                    |  22 +--
 docs/conf.py                                  | 184 ++++++------------
 docs/jose/index.rst                           |  13 ++
 docs/jose/jwe.rst                             |   7 +
 docs/jose/jwk.rst                             |   8 +-
 docs/jose/jws.rst                             |   8 +
 docs/jose/jwt.rst                             |   7 +
 .../requirements.txt                          |   7 +-
 serve.py                                      |   6 +
 21 files changed, 217 insertions(+), 289 deletions(-)
 create mode 100644 .readthedocs.yaml
 create mode 100644 docs/_static/custom.css
 create mode 100644 docs/_static/dark-logo.svg
 delete mode 100644 docs/_static/favicon.ico
 create mode 100644 docs/_static/icon.svg
 create mode 100644 docs/_static/light-logo.svg
 delete mode 100644 docs/_static/sponsors.css
 delete mode 100644 docs/_static/sponsors.js
 create mode 100644 docs/_templates/partials/globaltoc-above.html
 rename requirements-docs.txt => docs/requirements.txt (57%)
 create mode 100644 serve.py

diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644
index 00000000..e88e6c7a
--- /dev/null
+++ b/.readthedocs.yaml
@@ -0,0 +1,13 @@
+version: 2
+
+build:
+  os: ubuntu-22.04
+  tools:
+    python: "3.11"
+
+sphinx:
+  configuration: docs/conf.py
+
+python:
+  install:
+    - requirements: docs/requirements.txt
diff --git a/Makefile b/Makefile
index a3bc6bdb..936f6d21 100644
--- a/Makefile
+++ b/Makefile
@@ -27,5 +27,5 @@ clean-docs:
 clean-tox:
 	@rm -rf .tox/
 
-docs:
-	@$(MAKE) -C docs html
+build-docs:
+	@sphinx-build docs build/_html -a
diff --git a/docs/_static/custom.css b/docs/_static/custom.css
new file mode 100644
index 00000000..b71de1c2
--- /dev/null
+++ b/docs/_static/custom.css
@@ -0,0 +1,36 @@
+:root {
+  --syntax-light-pre-bg: #e8f3ff;
+  --syntax-light-cap-bg: #d6e7fb;
+  --syntax-dark-pre-bg: #1a2b3e;
+  --syntax-dark-cap-bg: #223e5e;
+}
+
+.site-sponsors {
+  margin-bottom: 2rem;
+}
+
+.site-sponsors > .sponsor {
+  display: flex;
+  align-items: center;
+  background: var(--sy-c-bg-weak);
+  border-radius: 6px;
+  padding: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+
+.site-sponsors .image {
+  flex-shrink: 0;
+  display: block;
+  width: 32px;
+  margin-right: 0.8rem;
+}
+
+.site-sponsors .text {
+  font-size: 0.86rem;
+  line-height: 1.2;
+}
+
+.site-sponsors .text a {
+  color: var(--sy-c-link);
+  border-color: var(--sy-c-link);
+}
diff --git a/docs/_static/dark-logo.svg b/docs/_static/dark-logo.svg
new file mode 100644
index 00000000..5b1adfa8
--- /dev/null
+++ b/docs/_static/dark-logo.svg
@@ -0,0 +1 @@
+<svg width="2337" height="560" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="280" cy="280" r="280" fill="#3E7FCB"/><circle cx="280" cy="280" r="260" fill="#fff"/><circle cx="280" cy="280" r="240" fill="#000"/><path d="M366.969 420c-14.339 0-26.922-9.092-31.314-22.625l-15.971-48.723h-79.896l-14.84 48.279c-4.479 13.796-17.158 23.031-31.571 23.031-3.46 0-6.897-.548-10.216-1.626-17.227-5.179-27.008-23.744-21.73-41.362l67.438-213.879C233.247 149.49 246.139 140 260.221 140h35.859c14.161 0 27.051 9.328 31.345 22.686l70.922 213.798c5.671 17.48-3.72 36.244-20.922 41.851A33.792 33.792 0 0 1 366.969 420z" fill="#fff" stroke="#3E7FCB" stroke-width="5.363"/><path d="m784.549 333.125 5.034-12.5h42.709l5.034 12.5h-52.777zm-9.723 25 4.861-12.5h62.327l5.382 12.5h-72.57zm-9.722 25 4.861-12.5h81.945l5.208 12.5h-92.014zM663.542 417.5H650L763.715 130h13.542l113.542 287.5h-13.368L770.486 146.84 663.542 417.5zm108.507-240.972 7.118 15.972-88.889 225H676.91l95.139-240.972zm13.888 32.986 6.598 17.187L717.361 417.5h-13.542l82.118-207.986zm13.195 34.375 6.597 17.535L744.097 417.5h-13.368l68.403-173.611zM971.528 417.5h-13.542L844.444 130h13.368l113.716 287.5zM830.903 130l113.715 287.5H931.25L817.535 130h13.368zm-26.91 0 113.715 287.5h-13.541L790.625 130h13.368zM1157.47 306.736V167.5h12.5v139.236c0 13.195-5.1 24.537-15.28 34.028-10.07 9.491-22.22 14.236-36.46 14.236-14.24 0-26.45-4.745-36.63-14.236-10.07-9.491-15.11-20.833-15.11-34.028V167.5h12.5v139.236c0 9.838 3.82 18.287 11.46 25.347 7.76 6.945 17.02 10.417 27.78 10.417 10.76 0 19.96-3.472 27.6-10.417 7.76-7.06 11.64-15.509 11.64-25.347zm25 0V167.5h12.5v139.236c0 20.255-7.53 37.558-22.57 51.91-15.05 14.236-33.11 21.354-54.17 21.354-21.07 0-39.12-7.118-54.17-21.354-15.04-14.352-22.57-31.655-22.57-51.91V167.5h12.5v139.236c0 16.783 6.25 31.134 18.75 43.056 12.62 11.805 27.78 17.708 45.49 17.708 17.59 0 32.7-5.903 45.31-17.708 12.62-11.922 18.93-26.273 18.93-43.056zm25 0V167.5h12.5v139.236c0 17.708-4.58 34.144-13.72 49.306-9.14 15.046-21.53 26.967-37.15 35.764-15.63 8.796-32.58 13.194-50.87 13.194s-35.24-4.398-50.87-13.194c-15.62-8.797-28.01-20.718-37.15-35.764-9.15-15.162-13.72-31.598-13.72-49.306V167.5h12.5v139.236c0 15.394 4 29.688 11.98 42.882 7.99 13.195 18.81 23.669 32.47 31.424 13.77 7.639 28.7 11.458 44.79 11.458s30.96-3.819 44.62-11.458c13.77-7.755 24.65-18.229 32.64-31.424 7.98-13.194 11.98-27.488 11.98-42.882zm25 0V167.5h12.5v139.236c0 16.667-3.36 32.639-10.07 47.917-6.72 15.162-15.74 28.241-27.09 39.236-11.34 10.995-24.82 19.734-40.45 26.215-15.62 6.597-32 9.896-49.13 9.896-17.13 0-33.51-3.299-49.13-9.896-15.63-6.481-29.11-15.22-40.45-26.215-11.35-10.995-20.37-24.074-27.09-39.236-6.71-15.278-10.067-31.25-10.067-47.917V167.5h12.497v139.236c0 19.908 5.1 38.368 15.28 55.382 10.3 17.014 24.19 30.498 41.67 40.451 17.59 9.954 36.69 14.931 57.29 14.931s39.64-4.977 57.12-14.931c17.59-9.953 31.48-23.437 41.66-40.451 10.3-17.014 15.46-35.474 15.46-55.382zM1320.66 236.771h12.5V417.5h-12.5V236.771zm-50-56.771v-12.5h187.5V180h-187.5zm0 25v-12.5h187.5V205h-187.5zm0 25v-12.5h187.5V230h-187.5zm125 6.771h12.5V417.5h-12.5V236.771zm-25 0h12.5V417.5h-12.5V236.771zm-25 0h12.5V417.5h-12.5V236.771zM1735.94 167.5h12.5v250h-12.5v-250zm-250.18 0h12.5v250h-12.5v-250zm225.18 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-100h-87.68v100h-12.5v-250h12.5V255h87.68v-87.5zm-125.18 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zM1660.94 305v-12.5h-87.68V305h87.68zm0-25v-12.5h-87.68V280h87.68zM1781.25 167.5h12.5v250h-12.5v-250zm75 0h12.5V355h92.19v12.5h-92.19V380h92.19v12.5h-92.19V405h92.19v12.5h-104.69v-250zm-25 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zM2063.54 167.5h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zM2304.51 291.111c-.11 0-.17.058-.17.174 5.56 5.671 10.19 12.673 13.89 21.007 3.7 8.333 5.55 16.782 5.55 25.347 0 18.634-6.42 34.317-19.27 47.049-12.73 12.615-28.01 18.923-45.83 18.923h-78.99v12.5h78.99c14.12 0 26.97-3.067 38.54-9.201 11.69-6.135 21.12-15.22 28.3-27.257 7.18-12.153 10.76-26.158 10.76-42.014 0-16.551-4.97-31.713-14.93-45.486 9.96-13.31 14.93-29.225 14.93-47.743 0-13.542-3.53-26.216-10.59-38.021-7.06-11.921-16.6-21.354-28.64-28.299-11.92-7.06-24.71-10.59-38.37-10.59h-150v250h12.5V180h137.5c17.59 0 32.81 6.424 45.66 19.271 12.96 12.731 19.44 27.778 19.44 45.139 0 18.287-6.53 33.796-19.61 46.528l.34.173zm-45.83 62.5c4.28 0 7.87-1.389 10.76-4.167 2.9-2.777 4.34-6.713 4.34-11.805 0-4.167-1.56-7.87-4.68-11.111-3.01-3.241-6.48-4.861-10.42-4.861h-79.17v-12.5h79.17c7.29 0 13.72 2.893 19.27 8.68 5.56 5.672 8.33 12.269 8.33 19.792 0 8.68-2.72 15.625-8.16 20.833-5.32 5.093-11.8 7.639-19.44 7.639h-78.99v-12.5h78.99zm0 25c11 0 20.43-3.819 28.3-11.458 7.87-7.639 11.8-17.477 11.8-29.514 0-10.88-4.05-20.428-12.15-28.646-7.98-8.218-17.3-12.326-27.95-12.326h-78.99v-12.5h78.99c11 0 20.43-3.704 28.3-11.111 7.87-7.524 11.8-17.072 11.8-28.646 0-10.417-4.05-19.56-12.15-27.431-7.98-7.986-17.3-11.979-27.95-11.979h-112.5v212.5h-12.5v-225h125c14.12 0 26.39 5.208 36.81 15.625 10.53 10.301 15.79 22.396 15.79 36.285 0 10.185-2.6 19.386-7.81 27.604-5.09 8.102-11.86 14.352-20.31 18.75 8.45 4.63 15.22 11.227 20.31 19.792 5.21 8.449 7.81 17.476 7.81 27.083 0 15.162-5.2 27.893-15.62 38.194-10.3 10.186-22.63 15.278-36.98 15.278h-78.99v-12.5h78.99zm0-119.444c4.28 0 7.87-1.273 10.76-3.82 2.9-2.546 4.34-6.192 4.34-10.937 0-3.704-1.56-7.003-4.68-9.896-3.01-3.009-6.48-4.514-10.42-4.514h-87.5v187.5h-12.5v-200h100c7.29 0 13.72 2.72 19.27 8.16 5.56 5.44 8.33 11.69 8.33 18.75 0 8.333-2.66 14.988-7.98 19.965-5.33 4.861-11.86 7.292-19.62 7.292h-78.99v-12.5h78.99z" fill="#fff"/></svg>
\ No newline at end of file
diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico
deleted file mode 100644
index d275da7b64f80726b0cc0541c155db10f727c1b2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15086
zcmeHO3zSt=89s!iJ+b#2rn0QmvMdm1&OSFZ%}Up*w3j`6g;tQ6E(K=pJzFWCC_eIS
z;3LTt473uEaFiCz+y@gNE&&B}qCwFBFEWGNxu@^jk70A>+&d3$t(I%<T6_Mz|JUAU
zKmPsifA8_UVcu}>@WVa8I`7_(d){cz^XlqM`9RNG58Q!(q@TT?=UoDZPl5*`-l<5$
ztKUHy4E-JIfuSB4>Vd)ZKqS4_Wi!EP*-+e*lj2FFKj)-BVKBM|BZK<Biu6~c9l20E
zo0VdIL5gwJbS<CkzZ<;2Lz|xm+=LYMO46SZ(Nz8yf4NL>JnG%ut8TVOie`L^NU9z*
z8I#$X%ZRgD(+!`^OaDyJUQu-DPm-?%?!J>x9*#P;u%3J<u56id^m~`dR9#+*CbaM0
zs($?)_qqMJTBhCt`U^dD%FEzJw@uJ7Nz?s@U3@L`g>>MnI;8(}TyOruV@70UkO6%w
z+WPXkiO26xo=0VBzg*})?6w{GT{)RL)YXw|sy|rk7VBMnE%RvK&rCb+tfcqv7u3JC
zMUHu!rDJZ~YGk%#(|&+;`;!&&sP|a9h50G|`%U{dTU@PSHY2{H+Y;R0AKf__OfhZm
z#JV`Dnhd|$@D{7_?F)@IhIPP({H-rNn9twGJSywtpVSw>SzEM8-F@*6md-iL_G9h+
zqneJ^bTAftyA*FmoL7z4()2nJ-IQ4^4|#*d*AjBxQa@6ACB6CaN4y?={-kPqC~m04
z7sq3rd|t^&u{KVtRoRU3cGlC<B;c|4{_U}YVvV&yy}5d0`ePe<OAQ=@b$AEcPg@z6
zUfwuv6li)MlBr|j^lD|u-ATRqOz_iceEUj6{~pVFI7i~TfS;#n{;W8yuQKG;DA~05
zoaM!uIG`Z?&)9M;pqfKcY-U~D`>jrV&xyM2Vp~?G-e>Xsfh#99yj|HTj2+jpl>zQ{
zr8D#&$*09(7C#UOf9HpsD{QxwgZ;eLwDmIL^74o`!GGMSasGs*a_l<_P2y9Q-$L$f
zg>=IawrpWm`adxGnk|kH_U;(qUs5#KRqlnYlaGF<%Tp<@`Xm%{jBLdH(emcg4P$hD
z{zf$(8PTZAL0<XBQk;*zd(QG(2;6Ux{$<M+LiRDrC(V8K1!&hJX`fMwmcHylF74NY
z|5@rpD&{ld$F?pDu@2Ufo|mb!0hK?T&G<)?PM?mnY&!U&<yZEdJ{-Qm;s_nTXNT)|
zxID~f)AfhgG0unnMRB?<w>F87pbq-=T%#@drg0y$G#B>x5>jl_yulML9kNT27UDab
z@LiLUznOgT`2%}4&D3?fE1#4%^9k+RyDpa(_1sH+sP_SPEx9~4k9Dw2)vfsbvn`&G
z=PA>!X6S52o_^^{mxuc-@X8-|$I9h#^ZnW5ps$_vVqP$ORQ1=2d8K(pxm7lN!ev%_
zwG<`RX>8UDxr~3V%j1mUau;7Ip9_OOus-z7U6pzCT<(wEg`OEoUj?0@E#Nr^Htfsj
z`&W5}bn69fk^cU@$Ij(pp64XYhu@pJib=N3%7Eu4!&jiM?%Ey8Lr6OYzD~3cK9`U4
zh$yqKT^_D`@U-JQXK_BdH0D8TL)t{U8mF<$af7e;3+UEs4E13Qzm>#mapqh93B9yE
zNPc&=so^V@ZXwp)`HHS$2f-DFcM0vM<xxJpuDhFKVDT0%J$LLIX{T-3Ldrq^x9R8F
zc4Wigp`2{^sO6~!VK4T~3w#6mxQM<zlXlU{p-&c4H|FpuJUgPS_T;!<MEk{ar<JP&
z3o>;O*9XrQ(DkZqH}dN-4^F5gmxO0qd*pk@!Hfs?CC&%XI~5Pk1U#!7+t!WxN<1ef
z=~a7Mqxi5oM`K^lXZ*BULo#@3ull6uLjTXFPs%Y$(p3$o`~j{5DPBb1-@`Zu^0U!5
zjNO=dwHIW&Uj$w6^%>EH@?6e&J?>&L<emX;Prt_WP<K8IW}@BSWW1tU`}T!KyK3zi
z=FZD#mpTtr_^$Z3?nZxXz?yoLZAHI?YK=>Ow7YKhrG5R8ML()Nj`oTC+~;T;xd*gn
z{IB6#w(@(>r}q?O!`CslQal^DK47JKxOOY;`ITe_ipRXr_6aeYBw2ILS7%w;za*YY
zIP?wUl3mMX{Rb-X><eC<Z}r^WT}=<#a5_?%;{d;MVl`fu2L1wNa?Ux%rPm^_^rH?p
zMwp~m*)j7CnCm}J;)&z%&GeP%zcj>YwJJluijDN;hqFHTisRKdsQtO`xdh$^+5SSt
zKdx5ojq5=jv^!BXf8CWa_E*g%e9wchIp=UayF50}HBa5NqZU_d2>r_EO^Rc(F0MW7
zOSl2u^P@jt?5(z`8BxYLxtCu8-Rd0Q*L}hs%>&P&|Fi5P_%z>hrPV%+c@A2UbB1Rj
zmyU5T=W(<5(dWSYqR+)W3wEtZ>BTv%KepD@J&-)wafYdfzQkzlyYQSZ9#?pdKjr~#
zm8%!$^iwT82DyLhy_xGBzJ)7S>pXoD)JLBnzQ3}(sgl2?<U%o>JoKRuC;gT2FLtW-
z>oe!+wQg^cK6Cb)uJ$rD58&@)#D(-lllZIQ=x?n!|JXNI;~An2^}tXMyf%9vQa{h@
z2P}oyq@u2{c@*KcQB!9UwqH86jj*F*e+|olfuV+_NW)zQZa1)KU`M3%6qgy;7Tq2~
z-}af&j8UFfntWSZ0ISxutG+E*=6TyoV`l^%p4VP#8W{q1l+%kt;5$kUi=yeoi-rht
z+e#zDQUEx4X0$Pa{IIt2a6;*My8Yhp2<51_9iL9PE9y|NWMDbe<tQ+4x`9hHEIy{-
zt|c2sP_Aplb4qV1(E3z|0^bK@psfxmh1By-3vaoGey`mgz?t|^_z)-Y?xIzuzEF!V
zg%5%lx4#7b34Pd`T4d@&alOiiWK0cl9whqooq#V4^v)=*w>1-d!|1yO@Ym4GcuN=J
z6<1o`7FmBJ@R3QYbbJwaKcQF$-no`<Fc3Oc(dV?X^gS7$0DcbZ;rFT7Nk+Xxf&V5>
zw7fVMoC7{slEMEVza{DZh8pQx!B5YFXASRj;<ccir=dMN;`o7-q5lcS<Ki;>cId|Y
zEZ*HD$3M~TlhL+lUt&nmzZmoRx_JHcNkQAmJF_^=mKi5x|Jm|jAnV5Xu6AYfvSB3j
zzJk8Fz{SV&ki83he~IG<QpVZmDE8rAcd}vdCp9jyb5L9_<ks1^F=J_nUA!yKQ>kpv
zSlE7snb_dv<i%WI9FFJk#P?)YpLrJtK7AHe@kHJ$$l#J{aZtuSaQ3(cb#&UZ17$GQ
z&#jwy(EfnyLA#UngKv_pk8usyphjC}d=0!i>>UKZU#&;JC&OK7(iva9Rgz*k^cUT;
zqK>WNK18ZJl-)}k$9+)8=J(v!A@+K|dxya}gEQQ1wmlY_`;~UkZ?HHEVPh|ct$Cj3
zUW>C3b7=<XypNe}arpiR&{o<U_Q@9eK87(Wl%q=apY4LoW~+ygYZN%F<=_ezZ}Y90
zFC9mnXx}Xshc=yr@}+>^<(N5m&ijHbyU_IU4%9Qn#WN2*v(Sf6bI$jo@r`9h-Gywo
z^B7}#0NT6~b<K0{<)CLH@IP{OsCmr$3&ium-<~uFxv!y*O?+0&rwnzNbNx=-e^21}
zpnZ2(-Mn*#&iibc(7l_Wt)Tq|PZkM#qkmnc_!#9dFN*AE@RqsmSQp@x#4&E8<KEa`
z6TVN)OO8F_9H3tYnH5Txj{D4x-{ZM$wt22s$Xt(@JL2oX6x2T-W7}o)aF69X9NaCa
zexm*Y=xb4*%fmMXYxu389c$;Mtz)1N>v|#d%|jh0GS-7O@s5x8$y?YrsACf5#wncl
zS==MJF)G@Vq`SQSw!y56mr?g#@fX$u9Q+&cxV2MBI>9567AMjAgH!cm?75f5`8nsI
z`$eQ?##-WZmO-P>v?__#UmWCjyY|qP!+bd$^q1HVNq5Q|8?<4)D>KkM^ur#Dvs^i@
z6?<>ay%Fnj0}|)mGhB0)7jtk1=J8XuJQ#@fFTy-qO?yLm#_>?kvy9PMea0uWKIl5`
zHEO@XJv!&6<r@ri-mdUoUB3qlgS*`~N9+rH|1x~*(`fHpB>Lj8vjcx~mefYR;Zger
z?gsgeGl|E=(SNW$go_`_|Nr%Xjw3jKM_d#|!>2{%#*tCEoQcY%a#T(uHI}02yzVF(
z)7@4)xVxj{ss+WiY4ydn<qvhXU43Ck`>b&K#xY&NPH$Kg9SMC+<uJ-*!YB-ot`4KI
zOQUFNa};fG>Oz)r3Wg=>kb2@2J+B3U{2%`Go59qfN&bP`4CBWwpbemJOB&uS@l1ld
z3;s_<aJS1J&%>Ti<laahqec3kR(Bmz%qie3OJ3NUKgMO;GVI|Qu*vG}3fCFz!aUa=
z&>waA<9YpVPWyVW8CTdhdgN1g0Jw{1-ughy^QZU2REl}NH&EyE(4Wrzko&AU8{vON
zXb;WaIoH*VzPTAm`DT0%g8a(-_!D?mzlrumog2WzyC>Gcws3D@o<Hy}-XQCg9i|^h
zJIp;^o%N*uOY*=DP9@}zaS)^%b%}36{fi;f!S-q2!M_T=%x`$_n7>#YX7<$6LAwEU
zJxCkQvxAkVZ_$P~*5)oBZ>hvJ_`WB=+d^B5F>Rs`W%nj4mjofx<2Q1ja^J`BJt6m*
zBsq(-bA<iOeqtHldaIhld|TGX-8RRM=R@?zf;O2tkaHd~E76uk%CAZIe-2wWA!WcP
zdd(5c={U}n8*E<1QlYqrSZs8T=asj5-YZPIJ#Qgy_8xi0^R7j-Wn1WZJHgi(fJR>A
Gnf?O^rkCvi

diff --git a/docs/_static/icon.svg b/docs/_static/icon.svg
new file mode 100644
index 00000000..974ed8fa
--- /dev/null
+++ b/docs/_static/icon.svg
@@ -0,0 +1 @@
+<svg width="560" height="560" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="280" cy="280" r="280" fill="#3E7FCB"/><circle cx="280" cy="280" r="260" fill="#fff"/><circle cx="280" cy="280" r="240" fill="#3E7FCB"/><path d="M366.969 420c-14.339 0-26.922-9.092-31.314-22.625l-15.971-48.723h-79.896l-14.84 48.279c-4.479 13.796-17.158 23.031-31.571 23.031-3.46 0-6.897-.548-10.216-1.626-17.227-5.179-27.008-23.744-21.73-41.362l67.438-213.879C233.247 149.49 246.139 140 260.221 140h35.859c14.161 0 27.051 9.328 31.345 22.686l70.922 213.798c5.671 17.48-3.72 36.244-20.922 41.851A33.792 33.792 0 0 1 366.969 420z" fill="#fff" stroke="#3E7FCB" stroke-width="5.363"/></svg>
\ No newline at end of file
diff --git a/docs/_static/light-logo.svg b/docs/_static/light-logo.svg
new file mode 100644
index 00000000..f0cfb076
--- /dev/null
+++ b/docs/_static/light-logo.svg
@@ -0,0 +1 @@
+<svg width="2337" height="560" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="280" cy="280" r="280" fill="#3E7FCB"/><circle cx="280" cy="280" r="260" fill="#fff"/><circle cx="280" cy="280" r="240" fill="#3E7FCB"/><path d="M366.969 420c-14.339 0-26.922-9.092-31.314-22.625l-15.971-48.723h-79.896l-14.84 48.279c-4.479 13.796-17.158 23.031-31.571 23.031-3.46 0-6.897-.548-10.216-1.626-17.227-5.179-27.008-23.744-21.73-41.362l67.438-213.879C233.247 149.49 246.139 140 260.221 140h35.859c14.161 0 27.051 9.328 31.345 22.686l70.922 213.798c5.671 17.48-3.72 36.244-20.922 41.851A33.792 33.792 0 0 1 366.969 420z" fill="#fff" stroke="#3E7FCB" stroke-width="5.363"/><path d="m784.549 333.125 5.034-12.5h42.709l5.034 12.5h-52.777zm-9.723 25 4.861-12.5h62.327l5.382 12.5h-72.57zm-9.722 25 4.861-12.5h81.945l5.208 12.5h-92.014zM663.542 417.5H650L763.715 130h13.542l113.542 287.5h-13.368L770.486 146.84 663.542 417.5zm108.507-240.972 7.118 15.972-88.889 225H676.91l95.139-240.972zm13.888 32.986 6.598 17.187L717.361 417.5h-13.542l82.118-207.986zm13.195 34.375 6.597 17.535L744.097 417.5h-13.368l68.403-173.611zM971.528 417.5h-13.542L844.444 130h13.368l113.716 287.5zM830.903 130l113.715 287.5H931.25L817.535 130h13.368zm-26.91 0 113.715 287.5h-13.541L790.625 130h13.368zM1157.47 306.736V167.5h12.5v139.236c0 13.195-5.1 24.537-15.28 34.028-10.07 9.491-22.22 14.236-36.46 14.236-14.24 0-26.45-4.745-36.63-14.236-10.07-9.491-15.11-20.833-15.11-34.028V167.5h12.5v139.236c0 9.838 3.82 18.287 11.46 25.347 7.76 6.945 17.02 10.417 27.78 10.417 10.76 0 19.96-3.472 27.6-10.417 7.76-7.06 11.64-15.509 11.64-25.347zm25 0V167.5h12.5v139.236c0 20.255-7.53 37.558-22.57 51.91-15.05 14.236-33.11 21.354-54.17 21.354-21.07 0-39.12-7.118-54.17-21.354-15.04-14.352-22.57-31.655-22.57-51.91V167.5h12.5v139.236c0 16.783 6.25 31.134 18.75 43.056 12.62 11.805 27.78 17.708 45.49 17.708 17.59 0 32.7-5.903 45.31-17.708 12.62-11.922 18.93-26.273 18.93-43.056zm25 0V167.5h12.5v139.236c0 17.708-4.58 34.144-13.72 49.306-9.14 15.046-21.53 26.967-37.15 35.764-15.63 8.796-32.58 13.194-50.87 13.194s-35.24-4.398-50.87-13.194c-15.62-8.797-28.01-20.718-37.15-35.764-9.15-15.162-13.72-31.598-13.72-49.306V167.5h12.5v139.236c0 15.394 4 29.688 11.98 42.882 7.99 13.195 18.81 23.669 32.47 31.424 13.77 7.639 28.7 11.458 44.79 11.458s30.96-3.819 44.62-11.458c13.77-7.755 24.65-18.229 32.64-31.424 7.98-13.194 11.98-27.488 11.98-42.882zm25 0V167.5h12.5v139.236c0 16.667-3.36 32.639-10.07 47.917-6.72 15.162-15.74 28.241-27.09 39.236-11.34 10.995-24.82 19.734-40.45 26.215-15.62 6.597-32 9.896-49.13 9.896-17.13 0-33.51-3.299-49.13-9.896-15.63-6.481-29.11-15.22-40.45-26.215-11.35-10.995-20.37-24.074-27.09-39.236-6.71-15.278-10.067-31.25-10.067-47.917V167.5h12.497v139.236c0 19.908 5.1 38.368 15.28 55.382 10.3 17.014 24.19 30.498 41.67 40.451 17.59 9.954 36.69 14.931 57.29 14.931s39.64-4.977 57.12-14.931c17.59-9.953 31.48-23.437 41.66-40.451 10.3-17.014 15.46-35.474 15.46-55.382zM1320.66 236.771h12.5V417.5h-12.5V236.771zm-50-56.771v-12.5h187.5V180h-187.5zm0 25v-12.5h187.5V205h-187.5zm0 25v-12.5h187.5V230h-187.5zm125 6.771h12.5V417.5h-12.5V236.771zm-25 0h12.5V417.5h-12.5V236.771zm-25 0h12.5V417.5h-12.5V236.771zM1735.94 167.5h12.5v250h-12.5v-250zm-250.18 0h12.5v250h-12.5v-250zm225.18 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-100h-87.68v100h-12.5v-250h12.5V255h87.68v-87.5zm-125.18 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zM1660.94 305v-12.5h-87.68V305h87.68zm0-25v-12.5h-87.68V280h87.68zM1781.25 167.5h12.5v250h-12.5v-250zm75 0h12.5V355h92.19v12.5h-92.19V380h92.19v12.5h-92.19V405h92.19v12.5h-104.69v-250zm-25 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zM2063.54 167.5h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zm-25 0h12.5v250h-12.5v-250zM2304.51 291.111c-.11 0-.17.058-.17.174 5.56 5.671 10.19 12.673 13.89 21.007 3.7 8.333 5.55 16.782 5.55 25.347 0 18.634-6.42 34.317-19.27 47.049-12.73 12.615-28.01 18.923-45.83 18.923h-78.99v12.5h78.99c14.12 0 26.97-3.067 38.54-9.201 11.69-6.135 21.12-15.22 28.3-27.257 7.18-12.153 10.76-26.158 10.76-42.014 0-16.551-4.97-31.713-14.93-45.486 9.96-13.31 14.93-29.225 14.93-47.743 0-13.542-3.53-26.216-10.59-38.021-7.06-11.921-16.6-21.354-28.64-28.299-11.92-7.06-24.71-10.59-38.37-10.59h-150v250h12.5V180h137.5c17.59 0 32.81 6.424 45.66 19.271 12.96 12.731 19.44 27.778 19.44 45.139 0 18.287-6.53 33.796-19.61 46.528l.34.173zm-45.83 62.5c4.28 0 7.87-1.389 10.76-4.167 2.9-2.777 4.34-6.713 4.34-11.805 0-4.167-1.56-7.87-4.68-11.111-3.01-3.241-6.48-4.861-10.42-4.861h-79.17v-12.5h79.17c7.29 0 13.72 2.893 19.27 8.68 5.56 5.672 8.33 12.269 8.33 19.792 0 8.68-2.72 15.625-8.16 20.833-5.32 5.093-11.8 7.639-19.44 7.639h-78.99v-12.5h78.99zm0 25c11 0 20.43-3.819 28.3-11.458 7.87-7.639 11.8-17.477 11.8-29.514 0-10.88-4.05-20.428-12.15-28.646-7.98-8.218-17.3-12.326-27.95-12.326h-78.99v-12.5h78.99c11 0 20.43-3.704 28.3-11.111 7.87-7.524 11.8-17.072 11.8-28.646 0-10.417-4.05-19.56-12.15-27.431-7.98-7.986-17.3-11.979-27.95-11.979h-112.5v212.5h-12.5v-225h125c14.12 0 26.39 5.208 36.81 15.625 10.53 10.301 15.79 22.396 15.79 36.285 0 10.185-2.6 19.386-7.81 27.604-5.09 8.102-11.86 14.352-20.31 18.75 8.45 4.63 15.22 11.227 20.31 19.792 5.21 8.449 7.81 17.476 7.81 27.083 0 15.162-5.2 27.893-15.62 38.194-10.3 10.186-22.63 15.278-36.98 15.278h-78.99v-12.5h78.99zm0-119.444c4.28 0 7.87-1.273 10.76-3.82 2.9-2.546 4.34-6.192 4.34-10.937 0-3.704-1.56-7.003-4.68-9.896-3.01-3.009-6.48-4.514-10.42-4.514h-87.5v187.5h-12.5v-200h100c7.29 0 13.72 2.72 19.27 8.16 5.56 5.44 8.33 11.69 8.33 18.75 0 8.333-2.66 14.988-7.98 19.965-5.33 4.861-11.86 7.292-19.62 7.292h-78.99v-12.5h78.99z" fill="#000"/></svg>
\ No newline at end of file
diff --git a/docs/_static/sponsors.css b/docs/_static/sponsors.css
deleted file mode 100644
index e70e7692..00000000
--- a/docs/_static/sponsors.css
+++ /dev/null
@@ -1,77 +0,0 @@
-.ethical-fixedfooter { display:none }
-.fund{
-  z-index: 1;
-  position: relative;
-  bottom: 0;
-  right: 0;
-  float: right;
-  padding: 0 0 20px 30px;
-  width: 150px;
-}
-.fund a { border:0 }
-#carbonads {
-  background: #EDF2F4;
-  padding: 5px 10px;
-  border-radius: 3px;
-}
-#carbonads span {
-  display: block;
-}
-
-#carbonads a {
-  color: inherit;
-  text-decoration: none;
-}
-
-#carbonads a:hover {
-  color: inherit;
-}
-
-#carbonads span {
-  position: relative;
-  display: block;
-  overflow: hidden;
-}
-
-.carbon-img img {
-  display: block;
-  width: 130px;
-}
-
-#carbonads .carbon-text {
-  display: block;
-  margin-top: 4px;
-  font-size: 13px;
-  text-align: left;
-}
-
-#carbonads .carbon-poweredby {
-  color: #aaa;
-  font-size: 10px;
-  letter-spacing: 0.8px;
-  text-transform: uppercase;
-  font-weight: normal;
-}
-
-#bsa .native-box {
-  display: flex;
-  align-items: center;
-  padding: 10px;
-  margin: 16px 0;
-  border: 1px solid #e2e8f0;
-  border-radius: 4px;
-  background-color: #f8fafc;
-  text-decoration: none;
-  color: rgba(0, 0, 0, 0.68);
-}
-
-#bsa .native-sponsor {
-  background-color: #447FD7;
-  color: #fff;
-  border-radius: 3px;
-  text-transform: uppercase;
-  padding: 5px 12px;
-  margin-right: 10px;
-  font-weight: 500;
-  font-size: 12px;
-}
diff --git a/docs/_static/sponsors.js b/docs/_static/sponsors.js
deleted file mode 100644
index d6cd49f0..00000000
--- a/docs/_static/sponsors.js
+++ /dev/null
@@ -1,42 +0,0 @@
-(function() {
-  function carbon() {
-    var h1 = document.querySelector('.t-body h1');
-    if (!h1) return;
-
-    var div = document.createElement('div');
-    div.className = 'fund';
-    h1.parentNode.insertBefore(div, h1.nextSibling);
-
-    var s = document.createElement('script');
-    s.async = 1;
-    s.id = '_carbonads_js';
-    s.src = 'https://cdn.carbonads.com/carbon.js?serve=CE7DKK3W&placement=authliborg';
-    div.appendChild(s);
-  }
-
-  function bsa() {
-    var pagination = document.querySelector('.t-pagination');
-    if (!pagination) return;
-    var div = document.createElement('div');
-    div.id = 'bsa';
-    pagination.parentNode.insertBefore(div, pagination);
-
-    var s = document.createElement('script');
-    s.async = 1;
-    s.src = 'https://m.servedby-buysellads.com/monetization.js';
-    s.onload = function() {
-      if(typeof window._bsa !== 'undefined' && window._bsa) {
-        _bsa.init('custom', 'CE7DKK3M', 'placement:authliborg', {
-          target: '#bsa',
-          template: '<a href="##link##" class="native-box"><div class="native-sponsor">Sponsor</div><div class="native-text"><strong>##company##</strong> - ##description##</div></a>'
-        });
-      }
-    }
-    document.body.appendChild(s);
-  }
-
-  document.addEventListener('DOMContentLoaded', function() {
-    carbon();
-    setTimeout(bsa, 5000);
-  });
-})();
diff --git a/docs/_templates/partials/globaltoc-above.html b/docs/_templates/partials/globaltoc-above.html
new file mode 100644
index 00000000..4f214fbf
--- /dev/null
+++ b/docs/_templates/partials/globaltoc-above.html
@@ -0,0 +1,11 @@
+<div class="site-sponsors">
+  <div class="sponsor">
+    <a class="image" href="https://authlib.org/plans?utm_source=docs"><img src="https://authlib.org/assets/logo-blue.svg" alt="Authlib"></a>
+    <div class="text">Get a commercial license at <a href="https://authlib.org/plans?utm_source=docs">authlib.org</a></div>
+  </div>
+  <div class="sponsor">
+    <a class="image" href="https://auth0.com/overview?utm_source=authlib&utm_medium=devsponsor&utm_campaign=authlib"><img src="https://user-images.githubusercontent.com/290496/39297078-89d00928-497d-11e8-8119-0c53afe14cd0.png" alt="Sponsor"></a>
+    <div class="text">The new way to solve Identity. Sponsored by <a href="https://auth0.com/overview?utm_source=authlib&utm_medium=devsponsor&utm_campaign=authlib">auth0.com</a></div>
+  </div>
+</div>
+<div class="js-carbon" data-carbon-code="CE7DKK3W" data-carbon-placement="authliborg"></div>
diff --git a/docs/changelog.rst b/docs/changelog.rst
index 994ba603..377e2b42 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -9,21 +9,21 @@ Here you can see the full list of changes between each Authlib release.
 Version x.x.x
 -------------
 
-- Removed ``has_client_secret`` method and documentation, via :gh:`PR#513`
+- Removed ``has_client_secret`` method and documentation, via :PR:`513`
 - Removed ``request_invalid`` and ``token_revoked`` remaining occurences
-  and documentation. :gh:`PR514`
-- Fixed RFC7591 ``grant_types`` and ``response_types`` default values, via :gh:`PR#509`.
+  and documentation. :PR:`514`
+- Fixed RFC7591 ``grant_types`` and ``response_types`` default values, via :PR:`509`.
 
 Version 1.2.0
 -------------
 
 **Released on Dec 6, 2022**
 
-- Not passing ``request.body`` to ``ResourceProtector``, via :gh:`issue#485`.
-- Use ``flask.g`` instead of ``_app_ctx_stack``, via :gh:`issue#482`.
-- Add ``headers`` parameter back to ``ClientSecretJWT``, via :gh:`issue#457`.
-- Always passing ``realm`` parameter in OAuth 1 clients, via :gh:`issue#339`.
-- Implemented RFC7592 Dynamic Client Registration Management Protocol, via :gh:`PR#505`.
+- Not passing ``request.body`` to ``ResourceProtector``, via :issue:`485`.
+- Use ``flask.g`` instead of ``_app_ctx_stack``, via :issue:`482`.
+- Add ``headers`` parameter back to ``ClientSecretJWT``, via :issue:`457`.
+- Always passing ``realm`` parameter in OAuth 1 clients, via :issue:`339`.
+- Implemented RFC7592 Dynamic Client Registration Management Protocol, via :PR:`505`.
 - Add ``default_timeout`` for requests ``OAuth2Session`` and ``AssertionSession``.
 - Deprecate ``jwk.loads`` and ``jwk.dumps``
 
@@ -34,9 +34,9 @@ Version 1.1.0
 
 This release contains breaking changes and security fixes.
 
-- Allow to pass ``claims_options`` to Framework OpenID Connect clients, via :gh:`PR#446`.
-- Fix ``.stream`` with context for HTTPX OAuth clients, via :gh:`PR#465`.
-- Fix Starlette OAuth client for cache store, via :gh:`PR#478`.
+- Allow to pass ``claims_options`` to Framework OpenID Connect clients, via :PR:`446`.
+- Fix ``.stream`` with context for HTTPX OAuth clients, via :PR:`465`.
+- Fix Starlette OAuth client for cache store, via :PR:`478`.
 
 **Breaking changes**:
 
@@ -54,11 +54,11 @@ Version 1.0.1
 
 **Released on Apr 6, 2022**
 
-- Fix authenticate_none method, via :gh:`issue#438`.
-- Allow to pass in alternative signing algorithm to RFC7523 authentication methods via :gh:`PR#447`.
-- Fix ``missing_token`` for Flask OAuth client, via :gh:`issue#448`.
-- Allow ``openid`` in any place of the scope, via :gh:`issue#449`.
-- Security fix for validating essential value on blank value in JWT, via :gh:`issue#445`.
+- Fix authenticate_none method, via :issue:`438`.
+- Allow to pass in alternative signing algorithm to RFC7523 authentication methods via :PR:`447`.
+- Fix ``missing_token`` for Flask OAuth client, via :issue:`448`.
+- Allow ``openid`` in any place of the scope, via :issue:`449`.
+- Security fix for validating essential value on blank value in JWT, via :issue:`445`.
 
 
 Version 1.0.0
@@ -120,14 +120,14 @@ Version 0.15.3
 
 **Released on Jan 15, 2021.**
 
-- Fixed `.authorize_access_token` for OAuth 1.0 services, via :gh:`issue#308`.
+- Fixed `.authorize_access_token` for OAuth 1.0 services, via :issue:`308`.
 
 Version 0.15.2
 --------------
 
 **Released on Oct 18, 2020.**
 
-- Fixed HTTPX authentication bug, via :gh:`issue#283`.
+- Fixed HTTPX authentication bug, via :issue:`283`.
 
 
 Version 0.15.1
@@ -135,7 +135,7 @@ Version 0.15.1
 
 **Released on Oct 14, 2020.**
 
-- Backward compatible fix for using JWKs in JWT, via :gh:`issue#280`.
+- Backward compatible fix for using JWKs in JWT, via :issue:`280`.
 
 
 Version 0.15
@@ -152,9 +152,9 @@ implementations and did some refactors for JOSE:
 We also fixed bugs for integrations:
 
 - Fixed support for HTTPX>=0.14.3
-- Added OAuth clients of HTTPX back via :gh:`PR#270`
+- Added OAuth clients of HTTPX back via :PR:`270`
 - Fixed parallel token refreshes for HTTPX async OAuth 2 client
-- Raise OAuthError when callback contains errors via :gh:`issue#275`
+- Raise OAuthError when callback contains errors via :issue:`275`
 
 **Breaking Change**:
 
@@ -167,12 +167,12 @@ Version 0.14.3
 
 **Released on May 18, 2020.**
 
-- Fix HTTPX integration via :gh:`PR#232` and :gh:`PR#233`.
+- Fix HTTPX integration via :PR:`232` and :PR:`233`.
 - Add "bearer" as default token type for OAuth 2 Client.
 - JWS and JWE don't validate private headers by default.
 - Remove ``none`` auth method for authorization code by default.
-- Allow usage of user provided ``code_verifier`` via :gh:`issue#216`.
-- Add ``introspect_token`` method on OAuth 2 Client via :gh:`issue#224`.
+- Allow usage of user provided ``code_verifier`` via :issue:`216`.
+- Add ``introspect_token`` method on OAuth 2 Client via :issue:`224`.
 
 
 Version 0.14.2
@@ -181,8 +181,8 @@ Version 0.14.2
 **Released on May 6, 2020.**
 
 - Fix OAuth 1.0 client for starlette.
-- Allow leeway option in client parse ID token via :gh:`PR#228`.
-- Fix OAuthToken when ``expires_at`` or ``expires_in`` is 0 via :gh:`PR#227`.
+- Allow leeway option in client parse ID token via :PR:`228`.
+- Fix OAuthToken when ``expires_at`` or ``expires_in`` is 0 via :PR:`227`.
 - Fix auto refresh token logic.
 - Load server metadata before request.
 
@@ -207,9 +207,9 @@ for clients.
 
 - Fix HTTPX integrations due to HTTPX breaking changes
 - Fix ES algorithms for JWS
-- Allow user given ``nonce`` via :gh:`issue#180`.
+- Allow user given ``nonce`` via :issue:`180`.
 - Fix OAuth errors ``get_headers`` leak.
-- Fix ``code_verifier`` via :gh:`issue#165`.
+- Fix ``code_verifier`` via :issue:`165`.
 
 **Breaking Change**: drop sync OAuth clients of HTTPX.
 
diff --git a/docs/client/oauth2.rst b/docs/client/oauth2.rst
index 1a518059..a4623ccf 100644
--- a/docs/client/oauth2.rst
+++ b/docs/client/oauth2.rst
@@ -203,7 +203,7 @@ These two methods are defined by RFC7523 and OpenID Connect. Find more in
 :ref:`jwt_oauth2session`.
 
 There are still cases that developers need to define a custom client
-authentication method. Take :gh:`issue#158` as an example, the provider
+authentication method. Take :issue:`158` as an example, the provider
 requires us put ``client_id`` and ``client_secret`` on URL when sending
 POST request::
 
diff --git a/docs/community/funding.rst b/docs/community/funding.rst
index 1af91f65..83863d9b 100644
--- a/docs/community/funding.rst
+++ b/docs/community/funding.rst
@@ -49,15 +49,15 @@ we are going to add.
 Funding Goal: $500/month
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
-* :badge:`done` setup a private PyPI
-* :badge:`todo` A running demo of loginpass services
-* :badge:`todo` Starlette integration of loginpass
+* :bdg-success:`done` setup a private PyPI
+* :bdg-warning:`todo` A running demo of loginpass services
+* :bdg-warning:`todo` Starlette integration of loginpass
 
 
 Funding Goal: $2000/month
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* :badge:`todo` A simple running demo of OIDC provider in Flask
+* :bdg-warning:`todo` A simple running demo of OIDC provider in Flask
 
 When the demo is complete, source code of the demo will only be available to our insiders.
 
@@ -66,19 +66,19 @@ Funding Goal: $5000/month
 
 In Authlib v2.0, we will start working on async provider integrations.
 
-* :badge:`todo` Starlette (FastAPI) OAuth 1.0 provider integration
-* :badge:`todo` Starlette (FastAPI) OAuth 2.0 provider integration
-* :badge:`todo` Starlette (FastAPI) OIDC provider integration
+* :bdg-warning:`todo` Starlette (FastAPI) OAuth 1.0 provider integration
+* :bdg-warning:`todo` Starlette (FastAPI) OAuth 2.0 provider integration
+* :bdg-warning:`todo` Starlette (FastAPI) OIDC provider integration
 
 Funding Goal: $9000/month
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 
 In Authlib v3.0, we will add built-in support for SAML.
 
-* :badge:`todo` SAML 2.0 implementation
-* :badge:`todo` RFC7522 (SAML) 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants
-* :badge:`todo` CBOR Object Signing and Encryption
-* :badge:`todo` A complex running demo of OIDC provider
+* :bdg-warning:`todo` SAML 2.0 implementation
+* :bdg-warning:`todo` RFC7522 (SAML) 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants
+* :bdg-warning:`todo` CBOR Object Signing and Encryption
+* :bdg-warning:`todo` A complex running demo of OIDC provider
 
 Our Sponsors
 ------------
diff --git a/docs/conf.py b/docs/conf.py
index 70cd76f2..1b609f03 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,138 +1,76 @@
-import os
-import sys
-sys.path.insert(0, os.path.abspath('..'))
-
 import authlib
-import sphinx_typlog_theme
-
-extensions = ['sphinx.ext.autodoc']
-templates_path = ['_templates']
-
-source_suffix = '.rst'
-master_doc = 'index'
 
 project = u'Authlib'
-copyright = u'2017, Hsiaoming Ltd'
+copyright = u'&copy; 2017, Hsiaoming Ltd'
 author = u'Hsiaoming Yang'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
 version = authlib.__version__
-# The full version, including alpha/beta/rc tags.
 release = version
 
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = 'en'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This patterns also effect to html_static_path and html_extra_path
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-html_theme = 'sphinx_typlog_theme'
-html_favicon = '_static/favicon.ico'
-html_theme_path = [sphinx_typlog_theme.get_path()]
-html_theme_options = {
-    'logo': 'authlib.svg',
-    'color': '#3E7FCB',
-    'description': (
-        'The ultimate Python library in building OAuth and OpenID Connect '
-        'servers. JWS, JWE, JWK, JWA, JWT are included.'
-    ),
-    'github_user': 'lepture',
-    'github_repo': 'authlib',
-    'twitter': 'authlib',
-    'og_image': 'https://authlib.org/logo.png',
-    'meta_html': (
-        '<link rel="apple-touch-icon" sizes="180x180" '
-        'href="https://authlib.org/apple-touch-icon.png">'
-    )
-}
-
-html_context = {}
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-_sidebar_templates = [
-    'logo.html',
-    'github.html',
-    'sponsors.html',
-    'globaltoc.html',
-    'links.html',
-    'searchbox.html',
-    'tidelift.html',
-]
-if '.dev' in release:
-    version_warning = (
-        'This is the documentation of the development version, check the '
-        '<a href="/en/stable/">Stable Version</a> documentation.'
-    )
-    html_theme_options['warning'] = version_warning
-
-html_sidebars = {
-    '**': _sidebar_templates
-}
-
-# -- Options for HTMLHelp output ------------------------------------------
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'Authlibdoc'
-
-
-# -- Options for LaTeX output ---------------------------------------------
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-#  author, documentclass [howto, manual, or own class]).
-latex_documents = [
-    (master_doc, 'Authlib.tex', u'Authlib Documentation',
-     u'Hsiaoming Yang', 'manual'),
-]
-
-
-# -- Options for manual page output ---------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-    (master_doc, 'authlib', u'Authlib Documentation', [author], 1)
+templates_path = ["_templates"]
+html_static_path = ["_static"]
+html_css_files = [
+  'custom.css',
 ]
+html_theme = "shibuya"
 
+html_copy_source = False
+html_show_sourcelink = False
 
-# -- Options for Texinfo output -------------------------------------------
+language = 'en'
 
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-#  dir menu entry, description, category)
-texinfo_documents = [
-    (
-        master_doc, 'Authlib', u'Authlib Documentation',
-        author, 'Authlib', 'One line description of project.',
-        'Miscellaneous'
-    ),
+extensions = [
+    "sphinx.ext.autodoc",
+    "sphinx.ext.extlinks",
+    "sphinx_copybutton",
+    "sphinx_design",
 ]
 
-html_css_files = [
-    'sponsors.css',
-]
-html_js_files = [
-    'sponsors.js',
-]
+extlinks = {
+    'issue': ('https://github.com/lepture/authlib/issues/%s', 'issue #%s'),
+    'PR': ('https://github.com/lepture/authlib/issues/%s', 'pull request #%s'),
+}
 
+intersphinx_mapping = {
+    "python": ("https://docs.python.org/3", None),
+}
+html_favicon = '_static/icon.svg'
+html_theme_options = {
+    'og_image_url': 'https://authlib.org/logo.png',
+    "light_logo": "_static/light-logo.svg",
+    "dark_logo": "_static/dark-logo.svg",
+    "light_css_variables": {
+        "--sy-rc-theme": "62,127,203",
+    },
+    "dark_css_variables": {
+        "--sy-rc-theme": "102,173,255",
+    },
+    "twitter_site": "authlib",
+    "twitter_creator": "lepture",
+    "twitter_url": "https://twitter.com/authlib",
+    "github_url": "https://github.com/lepture/authlib",
+    "nav_links": [
+        {
+            "title": "Projects",
+            "children": [
+                {
+                    "title": "Authlib",
+                    "url": "https://authlib.org/",
+                    "summary": "OAuth, JOSE, OpenID, etc."
+                },
+                {
+                    "title": "JOSE RFC",
+                    "url": "https://jose.authlib.org/",
+                    "summary": "JWS, JWE, JWK, and JWT."
+                },
+                {
+                    "title": "OTP Auth",
+                    "url": "https://otp.authlib.org/",
+                    "summary": "One time password, HOTP/TOTP.",
+                },
+            ]
+        },
+        {"title": "Sponsor me", "url": "https://github.com/sponsors/lepture"},
+    ]
+}
 
-def setup(app):
-    sphinx_typlog_theme.add_badge_roles(app)
-    sphinx_typlog_theme.add_github_roles(app, 'lepture/authlib')
+html_context = {}
diff --git a/docs/jose/index.rst b/docs/jose/index.rst
index 4335ba93..19216134 100644
--- a/docs/jose/index.rst
+++ b/docs/jose/index.rst
@@ -12,6 +12,16 @@ It includes:
 4. JSON Web Algorithm (JWA)
 5. JSON Web Token (JWT)
 
+.. important::
+
+    We are splitting the ``jose`` module into a separated package. You may be
+    interested in joserfc_.
+
+.. _joserfc: https://jose.authlib.org/
+
+Usage
+-----
+
 A simple example on how to use JWT with Authlib::
 
     from authlib.jose import jwt
@@ -23,6 +33,9 @@ A simple example on how to use JWT with Authlib::
     header = {'alg': 'RS256'}
     s = jwt.encode(header, payload, key)
 
+Guide
+-----
+
 Follow the documentation below to find out more in detail.
 
 .. toctree::
diff --git a/docs/jose/jwe.rst b/docs/jose/jwe.rst
index 9a771a9c..49925543 100644
--- a/docs/jose/jwe.rst
+++ b/docs/jose/jwe.rst
@@ -9,6 +9,13 @@ JSON Web Encryption (JWE)
 JSON Web Encryption (JWE) represents encrypted content using
 JSON-based data structures.
 
+.. important::
+
+    We are splitting the ``jose`` module into a separated package. You may be
+    interested in joserfc_.
+
+.. _joserfc: https://jose.authlib.org/en/latest/guide/jwe/
+
 There are two types of JWE Serializations:
 
 1. JWE Compact Serialization
diff --git a/docs/jose/jwk.rst b/docs/jose/jwk.rst
index 7d8ecf4f..d847029e 100644
--- a/docs/jose/jwk.rst
+++ b/docs/jose/jwk.rst
@@ -3,10 +3,12 @@
 JSON Web Key (JWK)
 ==================
 
-.. versionchanged:: v0.15
+.. important::
 
-    This documentation is updated for v0.15. Please check "v0.14" documentation for
-    Authlib v0.14.
+    We are splitting the ``jose`` module into a separated package. You may be
+    interested in joserfc_.
+
+.. _joserfc: https://jose.authlib.org/en/latest/guide/jwk/
 
 .. module:: authlib.jose
     :noindex:
diff --git a/docs/jose/jws.rst b/docs/jose/jws.rst
index f359cd2f..9f913f5e 100644
--- a/docs/jose/jws.rst
+++ b/docs/jose/jws.rst
@@ -10,6 +10,14 @@ JSON Web Signature (JWS) represents content secured with digital
 signatures or Message Authentication Codes (MACs) using JSON-based
 data structures.
 
+.. important::
+
+    We are splitting the ``jose`` module into a separated package. You may be
+    interested in joserfc_.
+
+.. _joserfc: https://jose.authlib.org/en/latest/guide/jws/
+
+
 There are two types of JWS Serializations:
 
 1. JWS Compact Serialization
diff --git a/docs/jose/jwt.rst b/docs/jose/jwt.rst
index e4b8f1bd..6b374783 100644
--- a/docs/jose/jwt.rst
+++ b/docs/jose/jwt.rst
@@ -3,6 +3,13 @@
 JSON Web Token (JWT)
 ====================
 
+.. important::
+
+    We are splitting the ``jose`` module into a separated package. You may be
+    interested in joserfc_.
+
+.. _joserfc: https://jose.authlib.org/en/latest/guide/jwt/
+
 .. module:: authlib.jose
     :noindex:
 
diff --git a/requirements-docs.txt b/docs/requirements.txt
similarity index 57%
rename from requirements-docs.txt
rename to docs/requirements.txt
index 0b928c41..cdf3ad8c 100644
--- a/requirements-docs.txt
+++ b/docs/requirements.txt
@@ -6,5 +6,8 @@ SQLAlchemy
 requests
 httpx>=0.18.2
 starlette
-Sphinx==4.3.0
-sphinx-typlog-theme==0.8.0
+
+sphinx==6.2.1
+sphinx-design==0.4.1
+sphinx-copybutton==0.5.2
+shibuya
diff --git a/serve.py b/serve.py
new file mode 100644
index 00000000..f2bea479
--- /dev/null
+++ b/serve.py
@@ -0,0 +1,6 @@
+from livereload import Server, shell
+
+app = Server()
+# app.watch("src", shell("make build-docs"), delay=2)
+app.watch("docs", shell("make build-docs"), delay=2)
+app.serve(root="build/_html")