{"version":3,"sourceRoot":"","sources":["../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/vendors/_bootstrap.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/base/_reset.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/abstracts/_mixins.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/abstracts/_placeholders.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/abstracts/_variables.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/base/_base.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/themes/_light.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/themes/_dark.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/abstracts/_breakpoints.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/base/_typography.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/base/_syntax.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/components/_buttons.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/components/_popups.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/layout/_sidebar.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/layout/_topbar.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/layout/_panel.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/layout/_footer.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/pages/_search.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/pages/_home.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/pages/_post.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/pages/_categories.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/pages/_tags.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/pages/_archives.scss","../../vendor/bundle/ruby/3.3.0/gems/jekyll-theme-chirpy-7.6.0/_sass/pages/_category-tag.scss","../../_sass/_book-reader.scss","jekyll-theme-chirpy.scss"],"names":[],"mappings":"CAAiB;AAAA;AAAA;AAAA;AAAA,EAId,mvuCCFH,4BCoCE,yCDhCF,mBCgCE,yCD5BF,uBC4BE,yCDxBF,wBCwBE,yCDpBF,cCoBE,yCDhBF,kCCoBE,WDhBF,yBCgBE,WDZF,6BCYE,WDRF,8BCQE,WDJF,oBCIE,WCvCF,mEACE,2BACA,gBACA,YCuBoB,kCDtBpB,yBAIA,4CACE,cAGF,qBACE,4CACE,kBACA,UACA,2DAIA,oEACE,mBACA,UACA,0DAMR,sCAGE,4BACA,8BACA,uCAGF,+DACE,mBACA,cACA,mBAGF,mQACE,yBACA,gCACA,qBAGF,kFACE,wBAGF,sEACE,oDAGF,gHACE,+BAGF,gFACE,yBACA,sBACA,qBACA,iBAGF,kKACE,mBAGF,yFACE,eAGF,4EACE,kBAGF,wMACE,cCrEU,KDyEV,oDACE,cACA,kBACA,kBACA,cACA,UACA,cAIJ,WACE,iCACA,yBACA,sBACA,qBACA,iBAGF,iHACE,oBACA,gBACA,uBACA,qBACA,4BAGF,4ID3GE,gBACA,uBACA,mBC6GF,qGACE,wCACA,gBAGF,kFACE,iBAGF,2BACE,gBAIA,mCACE,2CACA,uBACA,0BACA,kBACA,8CAKF,+DACE,WAIJ,kDACE,2CAGF,cACE,kBACA,qBAOF,+BACE,+CEpJA,2BCXA,iBACA,mBACA,6BAGA,sBACA,4BACA,sCACA,yBACA,uBACA,mCACA,iCACA,sBACA,gCACA,qBACA,4BACA,+BACA,sCACA,0BACA,kCACA,8EACA,0HAMA,iBACA,2BACA,sCACA,mCACA,4CAGA,qCACA,+BACA,sBACA,gCACA,+BACA,gCACA,2CACA,wBACA,6BACA,6BAGA,oCACA,mCACA,wCACA,6BACA,oCAGA,gCACA,oCACA,+CAGA,yBACA,oCACA,wBACA,iCACA,iBACA,yBACA,mFAEA,gCACA,qBACA,2BACA,qBACA,0BACA,oCACA,sBACA,yCACA,wCACA,iCACA,0BACA,kCACA,sCACA,qCACA,2CACA,oCAGA,sBACA,sCACA,8BACA,yBAGA,wCACA,+CACA,6CAGA,oCACA,4BACA,mCAGA,iCACA,8BACA,mCACA,kCACA,qCACA,sBACA,kCACA,mCACA,kCACA,mCAEA,4CACE,yCAGF,iCACE,aAKF,+CACE,YAGF,gDACE,SAGF,+EAEE,cACA,yBAGF,qSAOE,cAGF,0CACE,cAGF,0CACE,cACA,yBAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cACA,yBAGF,0CACE,cAGF,kaAUE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,kNAKE,cAGF,mFAEE,cAGF,0CACE,cACA,iBAGF,0CACE,cACA,iBAGF,6cAWE,cAGF,0CACE,cAGF,oFAEE,cAGF,2CACE,cACA,yBAGF,gVAQE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cACA,kBAGF,0CACE,cACA,iBDpSF,0BElBA,kBAGA,yBACA,yBACA,mCAGA,+BACA,4BACA,sCACA,yBACA,uBACA,yCACA,iCACA,+BACA,wCACA,qBACA,4BACA,yCACA,sCACA,0BACA,mCACA,4CACA,wEACA,sHAMA,yBACA,yCACA,sCACA,4CACA,yCAGA,4BACA,+BACA,sBACA,gCACA,+BACA,+CACA,4BACA,0BACA,6BACA,8CAGA,iCACA,uCACA,qCACA,sCACA,6CAGA,yCACA,8CACA,qCAGA,kCACA,kCACA,2BACA,qBACA,4BACA,oCACA,qCACA,2BACA,iCACA,mBACA,yBACA,kFAEA,0BACA,0BACA,wBACA,4CACA,qCACA,8CACA,sCACA,kCACA,wCACA,kDACA,uCACA,oCAGA,4BACA,4BACA,4BACA,yBAGA,yCACA,qCACA,qCAGA,qCACA,gCACA,iDAGA,iCACA,8BACA,mCACA,kCACA,wCACA,sBACA,kCACA,mCACA,kCACA,mCACA,+BAEA,iCACE,aAIF,sFAEE,gCAIA,mDACE,uCAGF,uDACE,iBACA,kBACA,kBACA,sCAEA,kEACE,mCAKN,sDACE,+HAWF,yCACE,kBAKF,yCACE,cAGF,8CACE,YAGF,+CACE,SAGF,6EAEE,cACA,yBAGF,0CACE,cACA,yBAGF,+RAOE,cAGF,yCACE,cAGF,yCACE,cAGF,iFAEE,cAGF,iFAEE,cAGF,yCACE,cAGF,yCACE,cACA,yBAGF,yCACE,cACA,yBACA,iBAGF,4MAKE,cAGF,yCACE,cAGF,yCACE,cAGF,yCACE,cAGF,gXASE,cAGF,yCACE,cAGF,yCACE,cAGF,yCACE,cAGF,yCACE,cAGF,yCACE,cAGF,yCACE,cAGF,yCACE,cAGF,yCACE,cAGF,uUAQE,cAGF,yCACE,cLhTF,oCGwBA,2BCvBA,iBACA,mBACA,6BAGA,sBACA,4BACA,sCACA,yBACA,uBACA,mCACA,iCACA,sBACA,gCACA,qBACA,4BACA,+BACA,sCACA,0BACA,kCACA,8EACA,0HAMA,iBACA,2BACA,sCACA,mCACA,4CAGA,qCACA,+BACA,sBACA,gCACA,+BACA,gCACA,2CACA,wBACA,6BACA,6BAGA,oCACA,mCACA,wCACA,6BACA,oCAGA,gCACA,oCACA,+CAGA,yBACA,oCACA,wBACA,iCACA,iBACA,yBACA,mFAEA,gCACA,qBACA,2BACA,qBACA,0BACA,oCACA,sBACA,yCACA,wCACA,iCACA,0BACA,kCACA,sCACA,qCACA,2CACA,oCAGA,sBACA,sCACA,8BACA,yBAGA,wCACA,+CACA,6CAGA,oCACA,4BACA,mCAGA,iCACA,8BACA,mCACA,kCACA,qCACA,sBACA,kCACA,mCACA,kCACA,mCAEA,4CACE,yCAGF,iCACE,aAKF,+CACE,YAGF,gDACE,SAGF,+EAEE,cACA,yBAGF,qSAOE,cAGF,0CACE,cAGF,0CACE,cACA,yBAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cACA,yBAGF,0CACE,cAGF,kaAUE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,kNAKE,cAGF,mFAEE,cAGF,0CACE,cACA,iBAGF,0CACE,cACA,iBAGF,6cAWE,cAGF,0CACE,cAGF,oFAEE,cAGF,2CACE,cACA,yBAGF,gVAQE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cACA,kBAGF,0CACE,cACA,kBJtTF,mCGwBA,2BExBA,kBAGA,yBACA,yBACA,mCAGA,+BACA,4BACA,sCACA,yBACA,uBACA,yCACA,iCACA,+BACA,wCACA,qBACA,4BACA,yCACA,sCACA,0BACA,mCACA,4CACA,wEACA,sHAMA,yBACA,yCACA,sCACA,4CACA,yCAGA,4BACA,+BACA,sBACA,gCACA,+BACA,+CACA,4BACA,0BACA,6BACA,8CAGA,iCACA,uCACA,qCACA,sCACA,6CAGA,yCACA,8CACA,qCAGA,kCACA,kCACA,2BACA,qBACA,4BACA,oCACA,qCACA,2BACA,iCACA,mBACA,yBACA,kFAEA,0BACA,0BACA,wBACA,4CACA,qCACA,8CACA,sCACA,kCACA,wCACA,kDACA,uCACA,oCAGA,4BACA,4BACA,4BACA,yBAGA,yCACA,qCACA,qCAGA,qCACA,gCACA,iDAGA,iCACA,8BACA,mCACA,kCACA,wCACA,sBACA,kCACA,mCACA,kCACA,mCACA,+BAEA,kCACE,aAIF,wFAEE,gCAIA,oDACE,uCAGF,wDACE,iBACA,kBACA,kBACA,sCAEA,mEACE,mCAKN,uDACE,+HAWF,0CACE,kBAKF,0CACE,cAGF,+CACE,YAGF,gDACE,SAGF,+EAEE,cACA,yBAGF,2CACE,cACA,yBAGF,sSAOE,cAGF,0CACE,cAGF,0CACE,cAGF,mFAEE,cAGF,mFAEE,cAGF,0CACE,cAGF,0CACE,cACA,yBAGF,0CACE,cACA,yBACA,iBAGF,iNAKE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,yXASE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,0CACE,cAGF,+UAQE,cAGF,0CACE,eF7QJ,MACE,eGQA,kCHTF,MAII,mBAIJ,KACE,0BACA,kHAEA,wBACA,mCACA,YDtBiB,+CIRjB,8CHiCF,iBAEI,aAEA,0BACE,mBGKJ,mCHCA,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AoBJ,oBA3BE,KACE,WACA,4BAGF,GACE,UACA,yBAwBJ,6BAnBE,GACE,wBACA,UAGF,KACE,4BACA,WAgBJ,qBAvBE,GACE,wBACA,UAGF,KACE,4BACA,WAuBF,kBjB5YA,MADwD,mBAExD,UiB4YoB,OjB3YpB,YiB2Y4B,IAG5B,oBAIE,8BAGF,iBAGE,gBACA,oBACA,yBACA,oBACA,qBACA,4BAWJ,eACE,kBAGF,YACE,eACA,iBAGF,yDACE,8CAGF,ajBvbE,MiBwbgC,QjBvbhC,UiBubkB,QjBtblB,YiBsb2B,IAE3B,oBACE,YX9cF,kCWkdF,eAEI,6BX5bF,mCWgcF,SAII,wBCpfJ,cACE,WAGF,YACE,mBACA,sCAOA,yBAGE,eACA,cAHS,IAIT,gBAEA,4CACE,4BACA,6BAIJ,cAGE,cAGF,6BACE,iBACA,kBACA,kBAEA,yCACE,yBACA,0BAGF,wCACE,gBAKN,kBACE,aACA,cACA,kBACA,kBACA,yBAEA,oBACE,kBACA,aACA,WACA,gCAIA,0BACE,yCAMN,qBACE,wBACE,6CAIJ,QACE,yBC9EF,KACE,mBACA,oBACA,mBACA,iBACA,iBACA,8CACA,uCAEA,UACE,iBACA,eACA,8BbMF,8CaFF,MAEI,mCCjBJ,UACE,sBdgBA,8CcjBF,UAII,iBAEA,aACE,kBAMJ,oFACE,WACA,MAJe,IAKf,kBACA,WACA,uCAGF,gBACE,cACA,iBACA,kBACA,SACA,iBAEA,wBAGE,YACA,UACA,YAGF,oCAGE,YACA,SAIF,uBACE,WACA,qBACA,kBACA,kBACA,WACA,YACA,YACA,iBACA,gDACA,qCACA,6BACA,UAKF,gBACE,iBACA,iBAIA,+BACE,yCACA,uFAUF,wBAGE,MACA,UACA,cAIJ,8CACE,cAIJ,gBACE,mBACA,qBACA,kBACA,YAEA,sBACE,aACA,kBAGF,oBACE,cACA,4BAIJ,YAEE,mBACA,kBACA,UAEA,kBACE,mBAGF,oBAEE,WACA,qBACA,kBACA,kBACA,UACA,WACA,WACA,YACA,UACA,yCACA,6BACA,UCpIN,MACE,2BACA,2CAKA,qCACE,mBACA,gBAGA,qDACE,gBACA,UACA,WACA,kBACA,cACA,WACA,kBACA,UACA,mBfLJ,8CeJE,qDAYI,gBAKJ,yCAGE,iBfhBJ,8CeaE,yCrB1BF,gBACA,uBACA,oBqBqCF,eACE,iBAGF,oBACE,kBAMA,iEAGE,mBCxDJ,eACE,uBACA,8BACA,qBACA,oBACA,sBACA,sBACA,2BACA,oCACA,wCACA,sBACA,mFAEA,oBACA,kBACA,6BAOF,6GACE,aACA,cACA,gBAMF,+BACE,0BAGF,4EAEE,uBACA,8BACA,qBACA,oBACA,sBACA,sBACA,2BACA,uCACA,uCACA,sBACA,+EAGF,mFAGE,wBAGF,6BACE,yBACA,UAGF,wCACE,WACA,eACA,qBAGF,6CACE,cAGF,8BACE,WACA,eAGF,uCACE,8BACA,iBACA,cACA,oBAGF,yGACE,wBAGF,8BACE,wBAGF,aACE,sBACA,SAGF,mBACE,sBACA,aACA,cACA,iBACA,kBACA,6CACA,aACA,2CACA,eACA,kBACA,gBACA,6BAGF,qDAEE,aAGF,2BACE,YACA,aACA,YACA,QAGF,0BACE,YACA,aACA,aACA,OAGF,0EAKE,kBACA,UACA,uBACA,mBAGF,cACE,gBACA,aACA,mBACA,8BACA,SACA,gBAGF,YACE,oBACA,mBACA,WACA,sBACA,qBAGF,kBACE,sBACA,qBAGF,iBACE,WACA,YACA,qBACA,aACA,mBACA,gBACA,sEACA,yCAGF,iBACE,sBACA,iBACA,gBACA,sBAGF,mBACE,gCACA,gBAGF,sBACE,aACA,mBACA,WAGF,kBACE,mBACA,SACA,qBACA,qBACA,oBACA,mBACA,uBACA,WACA,wBACA,yBACA,gBACA,iBACA,gBACA,cACA,sBAGF,6FAGE,gCACA,+DAGF,mBACE,cACA,iBAGF,oCACE,wBAGF,mBACE,wBAGF,eACE,WACA,gBACA,oBACA,gBACA,+DAGF,oBACE,cACA,QACA,YACA,sBACA,8BACA,sDAGF,YACE,uBACA,aACA,YACA,mBAGF,YACE,aACA,YACA,kBAGF,0EACE,YAGF,yEACE,kBACA,QACA,YAGF,0FACE,kBACA,oBAGF,0IAIE,aAGF,sCACE,YACA,iBACA,kBACA,cACA,iBAGF,+BACE,YAGF,8BACE,kBACA,WACA,YACA,iBACA,kBACA,mBAGF,qCACE,YACA,iBAGF,uDACE,YAGF,sDACE,kBACA,QACA,YACA,SAGF,WACE,WACA,aACA,gBACA,uEACA,wCACA,sBACA,WACE,wFAEF,8BACA,0BAGF,kBACE,aAGF,+BACE,mEAGF,4BACE,gEAGF,6BACE,KACE,UACA,2DAEF,GACE,UACA,gBAIJ,0BACE,KACE,UACA,2DAEF,GACE,UACA,gBAMJ,YACE,cACA,kBACA,gBACA,cACA,mCACA,WACE,wIAIJ,oBACE,WACA,kBACA,QACA,UACA,cACA,oBACA,WACE,oMAIJ,kBACE,WACA,YACA,kBACA,QACA,UACA,iBACA,0DACA,qCACA,uBAGF,iBACE,WACA,YACA,YACA,6BACA,aACA,uBACA,uBACA,kBACA,UAGF,aACE,mBACA,aACA,mBACA,UACA,cACA,gBACA,gBACA,qBACA,yBAGF,kBACE,oBACA,mBACA,mBACA,UACA,SACA,gBACA,yBAGF,+BACE,YACA,mBACA,yBAGF,eACE,qBACA,eACA,SACA,WACA,qCACA,gBACA,gBACA,wBACA,oBACA,uBACA,kBACA,0CAGF,wBACE,gBACA,mBACA,4BACA,sCACA,iBACA,oBAGF,iBACE,aACA,mBACA,eACA,gBACA,qBACA,4BACA,iBAGF,sBACE,oBACA,mBACA,WAGF,mCACE,aAGF,0CAEE,cACA,kBAGF,4BACE,cAGF,mBACE,mBACA,qCACA,oBACA,mBACA,uBACA,WACA,SACA,qBACA,cACA,gBACA,gBACA,iBACA,gBACA,sBAGF,0DAEE,cACA,2BACA,uCAGF,qBACE,aACA,cACA,kBACA,aACA,mBACA,WACA,8BAGF,iBACE,kBACA,4BACA,gBAGF,mBACE,YACA,SACA,kBACA,aACA,mBACA,gBACA,gBACA,mBACA,yCAGF,oBACE,WACA,YACA,kBACA,QACA,gBACA,cACA,WACE,sFAIJ,2BACE,kBACA,QACA,eACA,cACA,kDACA,kCACA,gBACA,gBACA,uBAGF,yBACE,6BACA,eACA,kBACA,QACA,UACA,iDACA,kBACA,wBAGF,yBACE,UACA,WACA,kBACA,QACA,SACA,mBACA,yBACA,wBAGF,wBACE,+BACA,eACA,kBACA,QACA,SACA,kBACA,mBAGF,kBACE,aAGF,sBACE,YACA,aACA,YACA,UAGF,sBACE,aACA,cACA,aACA,WAGF,kBACE,kBACA,cACA,SACA,UACA,SACA,aACA,WACA,sBACA,iBACA,gBACA,qBACA,yBAGF,uBACE,uBAKF,2BACE,gCACA,kBACA,aACA,eACA,sBACA,uCACA,kCACA,gBACA,cACA,aACA,oBAGF,kBACE,YACA,aACA,YACA,kBACA,UACA,gBACA,4BACA,sEACA,qBACA,sFAGF,qCACE,UAGF,2CACE,oBACA,mEAGF,iBACE,sBACA,wCACA,sBACA,aACA,mBACA,8BACA,yCACA,wBACA,iBACA,gBACA,qBAGF,mBACE,sBACA,gBACA,cACA,sBACA,sCACA,iBACA,wBACA,oBACA,uBAGF,kEACE,sBACA,iBACA,kBAGF,sBACE,iBACA,sBACA,UACA,sBACA,sCACA,gBACA,iBACA,wBACA,kBACA,oBAGF,8BACE,aAGF,gHACE,0EAGF,0BACE,KACE,UACA,2BACA,6BAEF,GACE,UACA,mBACA,gBAIJ,sBACE,gBACA,sBACA,kBACA,gBACA,gBACA,wBAGF,qBACE,aACA,sBAMF,6DACE,qBACA,mHAMA,mCACA,2BAGF,mBACE,WACA,oCACA,qBACA,kCACA,qBACA,iBACE,yFAEF,2BACA,sBACA,4BACA,0CAGF,8BACE,yBACA,4CACA,wBAGF,qBACE,gCACA,8EACA,2BAGF,2BACE,8BAGF,2BACE,UAGF,iCACE,qBAGF,sBACE,oBAKF,6DACE,aACA,WACA,UACA,2BAGF,gEACE,SACA,qBACA,8EACA,qBACA,6EACA,gBACA,iBAGF,wEACE,gCACA,uCACA,gBAGF,qFACE,sBACA,uCACA,gBACA,8BAGF,kKAKE,kBACA,oBACA,uCACA,SACA,qBACA,sBACA,6EACA,iFAGF,sCACE,yBAGF,uFACE,sBACA,4BACA,6BAGF,gEAEE,kBACA,gBACA,4BACA,eACA,kCACA,qBACA,kCACA,0CAGF,oFAEE,WACA,cACA,gBACA,qBAGF,wEAEE,WACA,gBACA,SACA,qBACA,mBACA,iEAGF,qCACE,+BACA,eAGF,2CACE,4CAGF,gDACE,aACA,qBACA,8BACA,eACA,iBAGF,kDACE,cACA,gBAGF,uCACE,WACA,YACA,iBACA,cACA,qBACA,mBACA,mBAGF,yEACE,+BAGF,oFACE,sBAGF,8BACE,SACA,6BACA,wBACA,iBACA,iBACA,gBAGF,kCACE,gBACA,gCACA,cACA,kCACA,qBACA,6BACA,0CAGF,wCACE,WACA,SACA,sBACA,iBACA,iBAGF,qCACE,gBACA,MACA,UACA,sBACA,yEAGF,gDACE,mBACA,mBAGF,wDACE,uEAGF,iCACE,2BACA,0CACA,+BACA,gCACA,gBACA,yCACA,gCACA,0CAGF,4BACE,gBACA,gBACA,+BACA,gBACA,gBACA,kCACA,qBACA,kCACA,0CAGF,gCACE,cACA,sBACA,uBACA,0BACA,gBACA,YAGF,wEACE,2CAGF,2IAEE,iBAGF,sEACE,gCAGF,2DACE,oCAGF,kDACE,iBACA,oBAGF,iDACE,qBAGF,mDACE,gBACA,iBAGF,sDACE,qBACA,mCAGF,8LAEE,6BACA,gCAGF,gDACE,mBACA,sBAGF,+CACE,qBACA,sBAGF,iDACE,iBACA,iBAGF,oDACE,qBACA,uCAGF,+DACE,2CAGF,0HAEE,iBAGF,qDAEE,gBACA,cACA,mBAGF,8BACE,sBACA,mBAKF,yBACE,sBACA,qBACA,4BACA,kCACA,qBACA,kCAGF,2BACE,aACA,mBACA,UACA,oBACA,sBACA,iBACA,gBAGF,6BACE,gCAGF,6CACE,kBAGF,gCACE,OACA,WACA,4BAGF,8BACE,aACA,0DACA,WAGF,2BACE,4BACA,kBACA,kCACA,qBACA,wEAGF,6BACE,gCACA,gBAGF,8BACE,kBACA,cACA,sBACA,eACA,gBACA,iBACA,kCACA,sBAGF,iCACE,iBAGF,8BACE,iBACA,cACA,wBACA,iBAGF,+BACE,kBACA,aACA,eACA,WAGF,mCACE,sBACA,oBACA,sBACA,+DACA,iBAGF,uCACE,gCACA,mEACA,gBAKF,+BACE,sBACA,qBACA,aACA,eACA,UAGF,2CACE,mBACA,sBACA,oBACA,mBACA,UACA,kCACA,qBACA,sBACA,kCACA,iBACA,gBACA,qBACA,sBAGF,iDACE,qEACA,gCACA,2BAGF,iCACE,cACA,eACA,iBACA,aACA,mBACA,qBACA,gCACA,wEACA,iBAGF,sEACE,YACA,uBAKF,eACE,gBACA,kCACA,oBACA,6EAGF,8BACE,iBAGF,uBACE,kBACA,mBACA,aACA,mDACA,mBACA,UACA,sBACA,eACA,gBACA,iBACA,gBAGF,+CACE,aAGF,8BACE,YACA,aACA,cACA,aACA,mBACA,kBACA,gCACA,kEACA,eACA,cAGF,oCACE,YAGF,iBACE,aACA,cACA,aACA,mBACA,oBACA,WACA,8BACA,gBACA,gBAGF,iBACE,4BACA,oBACA,aACA,4CACA,kBACA,UACA,cACA,wBACA,iBAGF,kCACE,gCACA,yEAGF,8BACE,gBAKF,aACE,aACA,mBACA,kBACA,WACE,iIAIJ,mBACE,6BACA,aAGF,kBACE,aACA,cACA,sBACA,aACA,mBACA,sBACA,WACA,yEACA,+EACA,wBAGF,0BACE,cACA,oBACA,gCAGF,gBACE,SACA,sBACA,iCACA,gBACA,wBAGF,kBACE,gBACA,wBACA,wBACA,iBACA,oBAGF,uBACE,6BACA,aACA,eACA,uBACA,iBACA,wBACA,iBACA,kCAGF,sCACE,oBACA,mBACA,WACA,cACA,qBAGF,+BACE,gCAGF,qBACE,aACA,eACA,uBACA,WAGF,4CAEE,mBACA,mBACA,oBACA,mBACA,uBACA,WACA,kCACA,oBACA,gBACA,gBACA,qBAGF,qBACE,2BACA,WACA,8BAGF,2BACE,WACA,qCAGF,uBACE,sBACA,kCAGF,6BACE,gCACA,qEACA,qBAGF,qBACE,sBACA,eACA,oBACA,mBACA,WACA,SACA,wBACA,yBACA,iBACA,gBAGF,2BACE,gCAKF,eACE,WACA,kBACA,QACA,WACA,SACA,oBAGF,kBACE,aACA,cACA,YACA,aACA,UACA,kBACA,uBACA,oBACA,mBACA,uBACA,uEACA,kBACA,sBACA,kEACA,yCACA,iBACA,gBACA,sBACA,2BACA,oBACA,2BAGF,uBACE,UACA,WACA,kBACA,gBACA,sBACA,mBAGF,uBACE,4CAGF,uBACE,6CAGF,sFAEE,gCACA,0EACA,6BACA,uCAGF,2BACE,oBACA,UAGF,kBACE,aAGF,iBACE,gBACA,cACA,gBACA,wBACA,iBACA,gBACA,gBACA,uBACA,mBAGF,mBACE,kBACA,aACA,uBACA,WACA,wBACA,iBACA,kCAGF,qBACE,sBACA,iBAGF,kBACE,aAGF,sBACE,kBACA,oBACA,sBACA,kCACA,wBACA,oBACA,wBACA,kEACA,gBACA,iBAKF,iBACE,6BACA,2BACA,UACA,gBACA,kCACA,sBACA,sBACA,6BACA,2CAGF,2BACE,6BACA,0BAGF,eACE,6BACA,aACA,uBACA,8BACA,SACA,yCAGF,iBACE,iBACA,gCACA,iBACA,gBACA,qBAGF,kBACE,SACA,sBACA,iBACA,gBACA,wBAGF,sBACE,cACA,eACA,kCACA,kBACA,wBACA,kCAGF,eACE,2BACA,SACA,eACA,cACA,gBAGF,kBACE,SAGF,sBACE,WACA,kBACA,sBACA,aACA,sCACA,mBACA,WACA,SACA,qBACA,sBACA,yBACA,gBAGF,6DAEE,gCACA,kEAGF,iBACE,wBACA,iBACA,gBACA,kCAGF,gBACE,gBACA,gBACA,gBACA,uBACA,mBAGF,eACE,wBACA,iBACA,kCAGF,eACE,uBACA,aACA,8BACA,sCACA,wBACA,kCACA,iBAKF,yBAGE,YACE,+BAIJ,0BACE,2NAGE,yBACA,MACA,SAGF,oJAEE,WACA,OACA,0CACA,8CACA,0BAGF,uEACE,QACA,UACA,0CACA,6CACA,uBAGF,8FACE,WACA,QAGF,kGAEE,WACA,cACA,kBACA,MACA,SACA,SACA,UACA,oBACA,+GACA,iBACA,2BAGF,mDACE,WACA,yBACA,kBACA,MACA,QACA,SACA,uEACA,0CACA,WACE,oFAEF,6CAGF,4DACE,wEAGF,0CACE,kCACA,iBAGF,uMAEE,WACA,eAGF,6CACE,sBACA,qCAGF,6CACE,kBAGF,wDACE,2CAGF,4GAEE,iBAGF,sHAEE,kBAMJ,+CACE,YACA,iBACA,kBACA,cACA,iBAGF,oIAGE,aAGF,wCACE,uBAGF,wCACE,YAGF,gBACE,aAGF,4CACE,cACA,iBACA,oCACA,kCACA,qBACA,6BAGF,8DACE,sBACA,cAGF,uCACE,kBACA,WACA,yBACA,YACA,aACA,sBACA,iBAGF,wCACE,2BACA,wBAGF,8CACE,YACA,iBAGF,gIAEE,gBAOF,sBACE,8BACA,cACA,sBAGF,yEAEE,6BACA,mBAGF,mBACE,iBACA,gBACA,sCACA,yCAGF,iDACE,wBACA,wBAGF,gCACE,8BACA,mBACA,sBACA,8BACA,6CAKF,yBACE,gBACA,0CACA,qBACA,gBACA,8EAGF,+BACE,iFACA,0CACA,2BAGF,uBACE,gBACA,wBACA,iBAGF,wBACE,iBAGF,qBACE,gBACA,sBAGF,wBACE,6BACA,wBACA,oBACA,YAKF,4BACE,uCACE,WAGF,oBACE,WACE,mKAIJ,mBACE,aACA,cACA,iBACA,kBACA,wBACA,mDACA,eACA,gBAGF,cACE,mBACA,gBAGF,YACE,WAGF,iBACE,cACA,eAGF,iBACE,iBAGF,kBACE,kBACA,mBACA,UAGF,6CACE,aAGF,eACE,gBAGF,uDACE,YAGF,sDACE,kBACA,QACA,YACA,aAGF,WACE,aACA,qBACA,6BAGF,YACE,cACA,gBACA,mBAGF,iBACE,kCAGF,eACE,WACA,eACA,qCAGF,wBACE,oBACA,gBACA,gBACA,4BACA,qBAGF,mBACE,kBAGF,iBACE,aAGF,mBACE,iBACA,uBAGF,kBACE,YACA,gBACA,0BAGF,mBACE,kBACA,iBACA,kBAGF,sBACE,mCAGF,uFACE,WAGF,wEAEE,iBAGF,uCACE,iBAGF,iCACE,wBACA,0BAGF,4BACE,iBACA,eAGF,uFAGE,iBAGF,eACE,YACA,kBACA,WACA,WACA,iBACA,aACA,mBACA,8BACA,yBAGF,kBACE,cACA,eACA,kBACA,SACA,2BACA,gBACA,gCACA,yBACA,gBACA,qBACA,YACA,eAGF,uBACE,UAGF,uBACE,WAGF,wJAEE,2BACA,gBACA,gCACA,yBACA,gBACA,eAGF,4DACE,sCACA,kBACA,cACA,gCACA,qCACA,UAGF,kBACE,aAGF,iBACE,wBACA,gBACA,uBAKJ,yBACE,mCACE,aAGF,uBACE,aAGF,mDACE,cACA,YAGF,kEACE,mBACA,kBAGF,yDACE,mBACA,kBAGF,2DACE,yBAGF,+CACE,gBACA,eAGF,iDACE,qBACA,gBAGF,oDACE,gDACA,WAGF,iDACE,6BAGF,oDACE,iBAGF,qDACE,kBACA,WAGF,yDACE,sBACA,kBAIJ,oDACE,wBACE,aAGF,iBACE,uCAGF,eACE,+BACA,gBAGF,mBACE,iBAGF,iBACE,gBACA,iBAGF,qCACE,aAGF,gEACE,sBACA,gBACA,kBAMJ,2DACE,aACA,uCACA,WAGF,4DACE,YACA,aACA,aACA,mBAGF,+CACE,gBAGF,wDACE,0DACA,aACA,uCACA,WAGF,yDACE,0DACA,aACA,uCACA,WAGF,uDACE,gBAGF,wDACE,gBAGF,yDACE,WACA,eACA,aACA,YACA,aAGF,0DACE,WACA,eACA,aACA,YACA,aAGF,4DACE,aAGF,6DACE,aAGF,wEACE,WACA,0BACA,uBACA,aACA,oBAGF,kEACE,WACA,eACA,YACA,aACA,gBACA,oBACA,oCACA,aACA,mBAGF,sEACE,sBACA,uBACA,0BACA,2BAGF,6EACE,iCAGF,+EACE,6EACA,qCACA,8BAGF,0DACE,OACA,OAGF,+DACE,uEACA,8BAGF,2DACE,0CACA,4CAGF,0DACE,mCACA,6CAGF,4BACE,mBACE,SAGF,kEACE,mBACA,kBAGF,wDACE,wBAGF,yDACE,wBAGF,yDACE,mBACA,kBAGF,yEACE,gBACA,+BACA,gBACA,SACA,yBACA,gBAGF,gIAEE,WACA,cAGF,gEACE,aAGF,gEACE,aACA,WAGF,6DACE,sBACA,aACA,WACA,8EACA,qBACA,kCAGF,6DACE,4BACA,aACA,4DACA,WACA,SACA,sBACA,iBACA,iBACA,mBAGF,qEACE,mCACA,wBACA,iBACA,gBACA,qBAGF,2EACE,aAKJ,yBACE,kEACE,sBACA,qBAGF,yDACE,sBACA,qBAGF,iHAEE,qBACA,qBAIJ,uCACE,iLAME,0BACA,gCACA,sCAIJ,aACE,eACE,2BAGF,mBACE,iBACA,UACA,2BAGF,gRAaE,wBAGF,yBACE,uBAGF,wDAEE,yBACA,6BACA,sBACA,aACA,uBACA,iBACA,iBACA,SACA,gBACA,gBACA,iBACA,sBACA,2BAGF,yBACE,iBACA,wBACA,sBAGF,+FAGE,sBAGF,kBACE,YACA,iBACA,cAGF,oGAGE,eAGF,uFAGE,gBACA,kBC7/EJ,mCACE,cACE,wBACA,gBACA,UAQF,2DACE,cACE,SACA,UAUN,kBACE,gBACA,gBACA,6CACA,gDACA,iBACA,kBAEA,sBACE,cAIJ,iBACE,cACA,qBACA,8BACA,iBACA,gBACA,qBACA,kBAGF,mBACE,gBACA,aACA,mBACA,8BACA,kEACA,iBAGF,cACE,sBACA,mCACA,gBACA,0CACA,qBACA,0BAGF,gCACE,SACA,SAIF,WACE,iBACA,qBAMF,iBACE,cACA,iBACA,gBACA,gBACA","sourcesContent":["@charset \"UTF-8\";/*!\n * Bootstrap  v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */:root,[data-bs-theme=light]{--bs-success:#198754;--bs-danger:#dc3545;--bs-font-sans-serif:system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",\"Noto Sans\",\"Liberation Sans\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-bg:#e9ecef;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-bg:#f8f9fa;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xxl:2rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-bg:#343a40;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-bg:#2b3035;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15)}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}.small,small{font-size:.875em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button{text-transform:none}[role=button]{cursor:pointer}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}iframe{border:0}summary{display:list-item;cursor:pointer}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.figure{display:inline-block}.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}@media (min-width:1400px){.container{max-width:1320px}}:root{}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0}.row-cols-1>*{flex:0 0 auto;width:100%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.g-0{--bs-gutter-x:0}.g-0{--bs-gutter-y:0}.g-4{--bs-gutter-x:1.5rem}.g-4{--bs-gutter-y:1.5rem}@media (min-width:576px){.col-sm{flex:1 0 0}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}}@media (min-width:768px){.col-md{flex:1 0 0}.row-cols-md-2>*{flex:0 0 auto;width:50%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}}@media (min-width:992px){.col-lg{flex:1 0 0}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}}@media (min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}}@media (min-width:1400px){.col-xxl{flex:1 0 0}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-tooltip,.was-validated :valid~.valid-tooltip{display:block}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-tooltip{display:block}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropup{position:relative}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.btn-group{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(-1 * var(--bs-border-width))}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-text:last-child{margin-bottom:0}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(-1 * var(--bs-border-width))}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e\");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;filter:var(--bs-btn-close-filter);border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}:root,[data-bs-theme=light]{--bs-btn-close-filter: }[data-bs-theme=dark]{--bs-btn-close-filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-padding-x:0.75rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast:not(.show){display:none}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}:root,[data-bs-theme=light]{}[data-bs-theme=dark]{}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:\"\"}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-middle{vertical-align:middle!important}.overflow-hidden{overflow:hidden!important}.d-block{display:block!important}.d-flex{display:flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-100{height:100%!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.pt-0{padding-top:0!important}.pt-2{padding-top:.5rem!important}.pe-1{padding-right:.25rem!important}.pe-4{padding-right:1.5rem!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-4{padding-bottom:1.5rem!important}.ps-0{padding-left:0!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.gap-3{gap:1rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-nowrap{white-space:nowrap!important}.text-muted{color:var(--bs-secondary-color)!important}.pe-none{pointer-events:none!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.invisible{visibility:hidden!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.me-sm-4{margin-right:1.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media (min-width:768px){.flex-md-row-reverse{flex-direction:row-reverse!important}.mt-md-0{margin-top:0!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.justify-content-lg-between{justify-content:space-between!important}.align-items-lg-center{align-items:center!important}.ms-lg-0{margin-left:0!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.ps-lg-2{padding-left:.5rem!important}}@media (min-width:1200px){.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media (min-width:1400px){.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}}","@use '../abstracts/mixins' as *;\n\n::-webkit-input-placeholder {\n  @include placeholder;\n}\n\n::-moz-placeholder {\n  @include placeholder;\n}\n\n:-ms-input-placeholder {\n  @include placeholder;\n}\n\n::-ms-input-placeholder {\n  @include placeholder;\n}\n\n::placeholder {\n  @include placeholder;\n}\n\n:focus::-webkit-input-placeholder {\n  @include placeholder-focus;\n}\n\n:focus::-moz-placeholder {\n  @include placeholder-focus;\n}\n\n:focus:-ms-input-placeholder {\n  @include placeholder-focus;\n}\n\n:focus::-ms-input-placeholder {\n  @include placeholder-focus;\n}\n\n:focus::placeholder {\n  @include placeholder-focus;\n}\n","@mixin color-scheme($mode) {\n  @media (prefers-color-scheme: #{$mode}) {\n    @content;\n  }\n}\n\n@mixin text-ellipsis {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n@mixin mt-mb($value) {\n  margin-top: $value;\n  margin-bottom: $value;\n}\n\n@mixin ml-mr($value) {\n  margin-left: $value;\n  margin-right: $value;\n}\n\n@mixin pt-pb($val) {\n  padding-top: $val;\n  padding-bottom: $val;\n}\n\n@mixin pl-pr($val, $important: false) {\n  @if $important {\n    padding-left: $val !important;\n    padding-right: $val !important;\n  } @else {\n    padding-left: $val;\n    padding-right: $val;\n  }\n}\n\n@mixin placeholder {\n  color: var(--text-muted-color) !important;\n}\n\n@mixin placeholder-focus {\n  opacity: 0.6;\n}\n\n@mixin label($font-size: 1rem, $font-weight: 600, $color: var(--label-color)) {\n  color: $color;\n  font-size: $font-size;\n  font-weight: $font-weight;\n}\n\n@mixin align-center {\n  position: relative;\n  left: 50%;\n  transform: translateX(-50%);\n}\n\n@mixin prompt($type, $fa-content, $fa-style: 'solid', $rotate: 0) {\n  &.prompt-#{$type} {\n    background-color: var(--prompt-#{$type}-bg);\n\n    &::before {\n      content: $fa-content;\n      color: var(--prompt-#{$type}-icon-color);\n      font: var(--fa-font-#{$fa-style});\n\n      @if $rotate != 0 {\n        transform: rotate(#{$rotate}deg);\n      }\n    }\n  }\n}\n\n@mixin slide($append: null) {\n  $basic: transform 0.4s ease;\n\n  @if $append {\n    transition: $basic, $append;\n  } @else {\n    transition: $basic;\n  }\n}\n\n@mixin max-w-100 {\n  max-width: 100%;\n}\n","@use 'variables' as v;\n@use 'mixins' as mx;\n\n%heading {\n  color: var(--heading-color);\n  font-weight: 400;\n  font-family: v.$font-family-heading;\n  scroll-margin-top: 3.5rem;\n}\n\n%anchor {\n  .anchor {\n    font-size: 80%;\n  }\n\n  @media (hover: hover) {\n    .anchor {\n      visibility: hidden;\n      opacity: 0;\n      transition: opacity 0.25s ease-in, visibility 0s ease-in 0.25s;\n    }\n\n    &:hover {\n      .anchor {\n        visibility: visible;\n        opacity: 1;\n        transition: opacity 0.25s ease-in, visibility 0s ease-in 0s;\n      }\n    }\n  }\n}\n\n%tag-hover {\n  @extend %link-color;\n\n  background: var(--tag-hover);\n  border-color: var(--tag-hover);\n  transition: background 0.35s ease-in-out;\n}\n\n%table-cell {\n  padding: 0.4rem 1rem;\n  font-size: 95%;\n  white-space: nowrap;\n}\n\n%link-hover {\n  color: #d2603a !important;\n  border-bottom: 1px solid #d2603a;\n  text-decoration: none;\n}\n\n%link-color {\n  color: var(--link-color);\n}\n\n%link-underline {\n  border-bottom: 1px solid var(--link-underline-color);\n}\n\n%clickable-transition {\n  transition: all 0.3s ease-in-out;\n}\n\n%no-cursor {\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n%no-bottom-border {\n  border-bottom: none;\n}\n\n%cursor-pointer {\n  cursor: pointer;\n}\n\n%normal-font-style {\n  font-style: normal;\n}\n\n%rounded {\n  border-radius: v.$radius-lg;\n}\n\n%img-caption {\n  + em {\n    display: block;\n    text-align: center;\n    font-style: normal;\n    font-size: 80%;\n    padding: 0;\n    color: #6d6c6c;\n  }\n}\n\n%sidebar-links {\n  color: var(--sidebar-muted-color);\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n%text-clip {\n  display: -webkit-box;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  -webkit-line-clamp: 2;\n  -webkit-box-orient: vertical;\n}\n\n%text-ellipsis {\n  @include mx.text-ellipsis;\n}\n\n%text-highlight {\n  color: var(--text-muted-highlight-color);\n  font-weight: 600;\n}\n\n%text-sm {\n  font-size: 0.85rem;\n}\n\n%text-xs {\n  font-size: 0.8rem;\n}\n\n%sup-fn-target {\n  &:target {\n    background-color: var(--footnote-target-bg);\n    width: -moz-fit-content;\n    width: -webkit-fit-content;\n    width: fit-content;\n    transition: background-color 1.75s ease-in-out;\n  }\n}\n\n%btn-color {\n  button i {\n    color: #999999;\n  }\n}\n\n%code-snippet-bg {\n  background-color: var(--highlight-bg-color);\n}\n\n%code-snippet-padding {\n  padding-left: 1rem;\n  padding-right: 1.5rem;\n}\n\n%max-w-100 {\n  max-width: 100%;\n}\n\n%panel-border {\n  border-left: 1px solid var(--main-border-color);\n}\n","/* sidebar */\n\n$sidebar-width: 260px !default; /* the basic width */\n$sidebar-width-large: 300px !default; /* screen width: >= 1650px */\n$sb-btn-gap: 0.8rem !default;\n$sb-btn-gap-lg: 1rem !default;\n\n/* other framework sizes */\n\n$topbar-height: 3rem !default;\n$search-max-width: 200px !default;\n$footer-height: 5rem !default;\n$footer-height-large: 6rem !default; /* screen width: < 850px */\n$main-content-max-width: 1250px !default;\n$radius-sm: 6px !default;\n$radius-lg: 10px !default;\n$back2top-size: 2.75rem !default;\n\n/* syntax highlight */\n\n$code-font-size: 0.85rem !default;\n$code-header-height: 2.25rem !default;\n$code-dot-size: 0.75rem !default;\n$code-dot-gap: 0.5rem !default;\n$code-icon-width: 1.75rem !default;\n\n/* fonts */\n\n$font-family-base: 'Source Sans Pro', 'Microsoft Yahei', sans-serif !default;\n$font-family-heading: Lato, 'Microsoft Yahei', sans-serif !default;\n\n/* Theme mode settings */\n\n$theme-attr: 'data-bs-theme'; /* the attribute used to indicate the resolved theme */\n$theme-options: light, dark;\n$theme: null !default; /* set by Jekyll site configuration */\n","@use 'sass:list';\n@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n@use '../themes/light';\n@use '../themes/dark';\n\n$enable-dual: not list.index(v.$theme-options, v.$theme);\n$enable-light: v.$theme == light or $enable-dual;\n$enable-dark: v.$theme == dark or $enable-dual;\n\n@if $enable-light {\n  :root[#{v.$theme-attr}='light'] {\n    @include light.styles;\n  }\n}\n\n@if $enable-dark {\n  :root[#{v.$theme-attr}='dark'] {\n    @include dark.styles;\n  }\n}\n\n@if $enable-dual {\n  :root:not([#{v.$theme-attr}]) {\n    @include mx.color-scheme(light) {\n      @include light.styles;\n    }\n\n    @include mx.color-scheme(dark) {\n      @include dark.styles;\n    }\n  }\n}\n\n:root {\n  font-size: 16px;\n\n  @include bp.lg {\n    overflow-y: scroll;\n  }\n}\n\nbody {\n  background: var(--main-bg);\n  padding: env(safe-area-inset-top) env(safe-area-inset-right)\n    env(safe-area-inset-bottom) env(safe-area-inset-left);\n  color: var(--text-color);\n  -webkit-font-smoothing: antialiased;\n  font-family: v.$font-family-base;\n}\n\nh1.dynamic-title {\n  @include bp.lt(bp.get(lg)) {\n    display: none;\n\n    ~ .content {\n      margin-top: 2.5rem;\n    }\n  }\n}\n\nmain {\n  &.col-12 {\n    @include bp.xxxl {\n      padding-right: 4.5rem !important;\n    }\n  }\n}\n\n.preview-img {\n  aspect-ratio: 40 / 21;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n\n  @extend %rounded;\n\n  &:not(.no-bg) {\n    background: var(--img-bg);\n  }\n\n  img {\n    height: 100%;\n    -o-object-fit: cover;\n    object-fit: cover;\n\n    @extend %rounded;\n\n    @at-root #post-list & {\n      width: 100%;\n    }\n  }\n}\n\n.post-preview {\n  @extend %rounded;\n\n  border: 0;\n  background: var(--card-bg);\n  box-shadow: var(--card-shadow);\n\n  &::before {\n    @extend %rounded;\n\n    content: '';\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    background-color: var(--card-hover-bg);\n    opacity: 0;\n    transition: opacity 0.35s ease-in-out;\n  }\n\n  &:hover {\n    &::before {\n      opacity: 0.3;\n    }\n  }\n}\n\n.post-meta {\n  @extend %text-sm;\n\n  a {\n    &:not([class]):hover {\n      @extend %link-hover;\n    }\n  }\n\n  em {\n    @extend %normal-font-style;\n  }\n}\n\n.content {\n  font-size: 1.08rem;\n  margin-top: 2rem;\n  overflow-wrap: break-word;\n\n  @include bp.xl {\n    font-size: 1.03rem;\n  }\n\n  a {\n    &.popup {\n      @extend %no-cursor;\n      @extend %img-caption;\n      @include mx.mt-mb(0.5rem);\n\n      cursor: zoom-in;\n    }\n\n    &:not(.img-link) {\n      @extend %link-underline;\n\n      &:hover {\n        @extend %link-hover;\n      }\n    }\n  }\n\n  ol,\n  ul {\n    &:not([class]),\n    &.task-list {\n      -webkit-padding-start: 1.75rem;\n      padding-inline-start: 1.75rem;\n\n      li {\n        margin: 0.25rem 0;\n        padding-left: 0.25rem;\n      }\n\n      ol,\n      ul {\n        -webkit-padding-start: 1.25rem;\n        padding-inline-start: 1.25rem;\n        margin: 0.5rem 0;\n      }\n    }\n  }\n\n  ul.task-list {\n    -webkit-padding-start: 1.25rem;\n    padding-inline-start: 1.25rem;\n\n    li {\n      list-style-type: none;\n      padding-left: 0;\n\n      /* checkbox icon */\n      > i {\n        width: 2rem;\n        margin-left: -1.25rem;\n        color: var(--checkbox-color);\n\n        &.checked {\n          color: var(--checkbox-checked-color);\n        }\n      }\n\n      ul {\n        -webkit-padding-start: 1.75rem;\n        padding-inline-start: 1.75rem;\n      }\n    }\n\n    input[type='checkbox'] {\n      margin: 0 0.5rem 0.2rem -1.3rem;\n      vertical-align: middle;\n    }\n  } /* ul */\n\n  dl > dd {\n    margin-left: 1rem;\n  }\n\n  ::marker {\n    color: var(--text-muted-color);\n  }\n\n  .table-wrapper > table {\n    @include bp.lg {\n      min-width: 70%;\n    }\n  }\n} /* .content */\n\n.tag:hover {\n  @extend %tag-hover;\n}\n\n.post-tag {\n  display: inline-block;\n  min-width: 2rem;\n  text-align: center;\n  border-radius: 0.5rem;\n  border: 1px solid var(--btn-border-color);\n  padding: 0 0.4rem;\n  color: var(--text-muted-color);\n  line-height: 1.3rem;\n\n  &:not(:last-child) {\n    margin-right: 0.2rem;\n  }\n}\n\n.rounded-10 {\n  border-radius: 10px !important;\n}\n\n.img-link {\n  color: transparent;\n  display: inline-flex;\n}\n\n.shimmer {\n  overflow: hidden;\n  position: relative;\n  background: var(--img-bg);\n\n  &::before {\n    content: '';\n    position: absolute;\n    background: var(--shimmer-bg);\n    height: 100%;\n    width: 100%;\n    -webkit-animation: shimmer 1.3s infinite;\n    animation: shimmer 1.3s infinite;\n  }\n\n  @-webkit-keyframes shimmer {\n    0% {\n      transform: translateX(-100%);\n    }\n\n    100% {\n      transform: translateX(100%);\n    }\n  }\n\n  @keyframes shimmer {\n    0% {\n      transform: translateX(-100%);\n    }\n\n    100% {\n      transform: translateX(100%);\n    }\n  }\n}\n\n.embed-video {\n  width: 100%;\n  height: 100%;\n  margin-bottom: 1rem;\n  aspect-ratio: 16 / 9;\n\n  @extend %rounded;\n\n  &.twitch {\n    aspect-ratio: 310 / 189;\n  }\n\n  &.file {\n    display: block;\n    width: auto;\n    height: auto;\n    max-width: 100%;\n    max-height: 100%;\n    margin: auto;\n    margin-bottom: 0;\n  }\n\n  @extend %img-caption;\n}\n\n.embed-audio {\n  width: 100%;\n\n  &.file {\n    display: block;\n  }\n\n  &.spotify {\n    border-radius: 14px;\n  }\n\n  @extend %img-caption;\n}\n\n/* --- Effects classes --- */\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.btn-box-shadow {\n  box-shadow: var(--card-shadow);\n}\n\n/* overwrite bootstrap muted */\n.text-muted {\n  color: var(--text-muted-color) !important;\n}\n\n/* Overwrite bootstrap tooltip */\n.tooltip-inner {\n  font-size: 0.7rem;\n  max-width: 220px;\n  text-align: left;\n}\n\n/* Overwrite bootstrap outline button */\n.btn.btn-outline-primary {\n  &:not(.disabled):hover {\n    border-color: #007bff !important;\n  }\n}\n\n.disabled {\n  color: rgb(206 196 196);\n  pointer-events: auto;\n  cursor: not-allowed;\n}\n\n.hide-border-bottom {\n  border-bottom: none !important;\n}\n\n.input-focus {\n  box-shadow: none;\n  border-color: var(--input-focus-border-color) !important;\n  background: center !important;\n  transition:\n    background-color 0.15s ease-in-out,\n    border-color 0.15s ease-in-out;\n}\n\n.left {\n  float: left;\n  margin: 0.75rem 1rem 1rem 0;\n}\n\n.right {\n  float: right;\n  margin: 0.75rem 0 1rem 1rem;\n}\n\n/* --- Overriding --- */\n\n/* mermaid */\n.mermaid {\n  text-align: center;\n}\n\n/* MathJax */\nmjx-container {\n  a {\n    display: inline-block;\n  }\n}\n\n@media (hover: hover) {\n  #sidebar ul > li:last-child::after {\n    transition: top 0.5s ease;\n  }\n\n  .nav-link {\n    transition: background-color 0.3s ease-in-out;\n  }\n\n  .post-preview {\n    transition: background-color 0.35s ease-in-out;\n  }\n}\n\n#mask {\n  inset: 0 0 0 0;\n}\n\n#main-wrapper {\n  position: relative;\n\n  @include mx.pl-pr(0);\n\n  @include bp.lt(bp.get(lg)) {\n    @include mx.slide;\n  }\n\n  @include bp.lg {\n    margin-left: v.$sidebar-width;\n  }\n\n  @include bp.xxxl {\n    margin-left: v.$sidebar-width-large;\n  }\n\n  > .container {\n    min-height: 100vh;\n\n    @include bp.lte(bp.get(md)) {\n      @include mx.max-w-100;\n      @include mx.pl-pr(0);\n    }\n\n    @include bp.lt(bp.get(lg)) {\n      max-width: 100%;\n    }\n\n    /* Pad horizontal */\n    @include bp.between(992px, calc(#{bp.get(xl)} - 1px)) {\n      .col-lg-11 {\n        flex: 0 0 96%;\n        max-width: 96%;\n      }\n    }\n\n    @include bp.lt(bp.get(xl)) {\n      > .row {\n        justify-content: center !important;\n      }\n    }\n\n    @include bp.xxxl {\n      max-width: v.$main-content-max-width;\n\n      @include mx.pl-pr(1.75rem, true);\n    }\n  }\n}\n\n/* --- basic wrappers --- */\n\n#topbar-wrapper.row,\n#main-wrapper > .container > .row,\n#search-result-wrapper > .row {\n  @include mx.ml-mr(0);\n}\n\n#tail-wrapper {\n  @include bp.xxxl {\n    padding-right: 4.5rem !important;\n  }\n\n  > :not(script) {\n    margin-top: 3rem;\n  }\n}\n","@mixin styles {\n  /* Framework color */\n  --main-bg: white;\n  --mask-bg: #c1c3c5;\n  --main-border-color: #f3f3f3;\n\n  /* Common color */\n  --text-color: #34343c;\n  --text-muted-color: #757575;\n  --text-muted-highlight-color: inherit;\n  --heading-color: #2a2a2a;\n  --label-color: #585858;\n  --blockquote-border-color: #eeeeee;\n  --blockquote-text-color: #757575;\n  --link-color: #0056b2;\n  --link-underline-color: #dee2e6;\n  --button-bg: #ffffff;\n  --btn-border-color: #e9ecef;\n  --btn-backtotop-color: #686868;\n  --btn-backtotop-border-color: #f1f1f1;\n  --checkbox-color: #c5c5c5;\n  --checkbox-checked-color: #07a8f7;\n  --img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(239 239 239) 100%);\n  --shimmer-bg: linear-gradient(\n    90deg,\n    rgb(250 250 250 / 0%) 0%,\n    rgb(232 230 230 / 100%) 50%,\n    rgb(250 250 250 / 0%) 100%\n  );\n  --menu-bg: white;\n  --menu-border-color: white;\n  --menu-shadow-color: rgb(0 0 0 / 16%);\n  --menu-active-color: rgb(91 91 91);\n  --menu-highlight-bg: rgb(243 244 245 / 50%);\n\n  /* Sidebar */\n  --site-title-color: rgb(113 113 113);\n  --site-subtitle-color: #717171;\n  --sidebar-bg: #f6f8fa;\n  --sidebar-border-color: #efefef;\n  --sidebar-muted-color: #545454;\n  --sidebar-active-color: #1d1d1d;\n  --sidebar-hover-bg: rgb(223 233 241 / 64%);\n  --sidebar-btn-bg: white;\n  --sidebar-btn-color: #8e8e8e;\n  --avatar-border-color: white;\n\n  /* Topbar */\n  --topbar-bg: rgb(255 255 255 / 70%);\n  --topbar-text-color: rgb(78 78 78);\n  --search-border-color: rgb(240 240 240);\n  --search-icon-color: #c2c6cc;\n  --input-focus-border-color: #b8b8b8;\n\n  /* Home page */\n  --post-list-text-color: dimgray;\n  --btn-patinator-text-color: #555555;\n  --btn-paginator-hover-color: var(--sidebar-bg);\n\n  /* Posts */\n  --toc-highlight: #0550ae;\n  --toc-popup-border-color: lightgray;\n  --btn-share-color: gray;\n  --btn-share-hover-color: #0d6efd;\n  --card-bg: white;\n  --card-hover-bg: #e2e2e2;\n  --card-shadow:\n    rgb(104 104 104 / 5%) 0 2px 6px 0, rgb(211 209 209 / 15%) 0 0 0 1px;\n  --footnote-target-bg: lightcyan;\n  --tb-odd-bg: #fbfcfd;\n  --tb-border-color: #eaeaea;\n  --dash-color: silver;\n  --kbd-wrap-color: #bdbdbd;\n  --kbd-text-color: var(--text-color);\n  --kbd-bg-color: white;\n  --prompt-text-color: rgb(46 46 46 / 77%);\n  --prompt-tip-bg: rgb(123 247 144 / 20%);\n  --prompt-tip-icon-color: #03b303;\n  --prompt-info-bg: #e1f5fe;\n  --prompt-info-icon-color: #0070cb;\n  --prompt-warning-bg: rgb(255 243 205);\n  --prompt-warning-icon-color: #ef9c03;\n  --prompt-danger-bg: rgb(248 215 218 / 56%);\n  --prompt-danger-icon-color: #df3c30;\n\n  /* Tags */\n  --tag-border: #dee2e6;\n  --tag-shadow: var(--btn-border-color);\n  --tag-hover: rgb(222 226 230);\n  --search-tag-bg: #f8f9fa;\n\n  /* Categories */\n  --categories-border: rgb(0 0 0 / 12.5%);\n  --categories-hover-bg: var(--btn-border-color);\n  --categories-icon-hover-color: darkslategray;\n\n  /* Archive */\n  --timeline-color: rgb(0 0 0 / 7.5%);\n  --timeline-node-bg: #c2c6cc;\n  --timeline-year-dot-color: #ffffff;\n\n  /* --- Custom code light mode colors --- */\n  --language-border-color: #ececec;\n  --highlight-bg-color: #f6f8fa;\n  --highlighter-rouge-color: #3f596f;\n  --highlight-lineno-color: #9e9e9e;\n  --inline-code-bg: rgb(25 25 28 / 5%);\n  --code-color: #3a3a3a;\n  --code-header-text-color: #a3a3a3;\n  --code-header-muted-color: #e5e5e5;\n  --code-header-icon-color: #c9c8c8;\n  --clipboard-checked-color: #43c743;\n\n  [class^='prompt-'] {\n    --link-underline-color: rgb(219 216 216);\n  }\n\n  .dark {\n    display: none;\n  }\n\n  /* --- Syntax highlight theme from `rougify style github` --- */\n\n  .highlight table td {\n    padding: 5px;\n  }\n\n  .highlight table pre {\n    margin: 0;\n  }\n\n  .highlight,\n  .highlight .w {\n    color: #24292f;\n    background-color: #f6f8fa;\n  }\n\n  .highlight .k,\n  .highlight .kd,\n  .highlight .kn,\n  .highlight .kp,\n  .highlight .kr,\n  .highlight .kt,\n  .highlight .kv {\n    color: #cf222e;\n  }\n\n  .highlight .gr {\n    color: #f6f8fa;\n  }\n\n  .highlight .gd {\n    color: #82071e;\n    background-color: #ffebe9;\n  }\n\n  .highlight .nb {\n    color: #953800;\n  }\n\n  .highlight .nc {\n    color: #953800;\n  }\n\n  .highlight .no {\n    color: #953800;\n  }\n\n  .highlight .nn {\n    color: #953800;\n  }\n\n  .highlight .sr {\n    color: #116329;\n  }\n\n  .highlight .na {\n    color: #116329;\n  }\n\n  .highlight .nt {\n    color: #116329;\n  }\n\n  .highlight .gi {\n    color: #116329;\n    background-color: #dafbe1;\n  }\n\n  .highlight .kc {\n    color: #0550ae;\n  }\n\n  .highlight .l,\n  .highlight .ld,\n  .highlight .m,\n  .highlight .mb,\n  .highlight .mf,\n  .highlight .mh,\n  .highlight .mi,\n  .highlight .il,\n  .highlight .mo,\n  .highlight .mx {\n    color: #0550ae;\n  }\n\n  .highlight .sb {\n    color: #0550ae;\n  }\n\n  .highlight .bp {\n    color: #0550ae;\n  }\n\n  .highlight .ne {\n    color: #0550ae;\n  }\n\n  .highlight .nl {\n    color: #0550ae;\n  }\n\n  .highlight .py {\n    color: #0550ae;\n  }\n\n  .highlight .nv,\n  .highlight .vc,\n  .highlight .vg,\n  .highlight .vi,\n  .highlight .vm {\n    color: #0550ae;\n  }\n\n  .highlight .o,\n  .highlight .ow {\n    color: #0550ae;\n  }\n\n  .highlight .gh {\n    color: #0550ae;\n    font-weight: bold;\n  }\n\n  .highlight .gu {\n    color: #0550ae;\n    font-weight: bold;\n  }\n\n  .highlight .s,\n  .highlight .sa,\n  .highlight .sc,\n  .highlight .dl,\n  .highlight .sd,\n  .highlight .s2,\n  .highlight .se,\n  .highlight .sh,\n  .highlight .sx,\n  .highlight .s1,\n  .highlight .ss {\n    color: #0a3069;\n  }\n\n  .highlight .nd {\n    color: #8250df;\n  }\n\n  .highlight .nf,\n  .highlight .fm {\n    color: #8250df;\n  }\n\n  .highlight .err {\n    color: #f6f8fa;\n    background-color: #82071e;\n  }\n\n  .highlight .c,\n  .highlight .ch,\n  .highlight .cd,\n  .highlight .cm,\n  .highlight .cp,\n  .highlight .cpf,\n  .highlight .c1,\n  .highlight .cs {\n    color: #68717a;\n  }\n\n  .highlight .gl {\n    color: #68717a;\n  }\n\n  .highlight .gt {\n    color: #68717a;\n  }\n\n  .highlight .ni {\n    color: #24292f;\n  }\n\n  .highlight .si {\n    color: #24292f;\n  }\n\n  .highlight .ge {\n    color: #24292f;\n    font-style: italic;\n  }\n\n  .highlight .gs {\n    color: #24292f;\n    font-weight: bold;\n  }\n}\n","@mixin styles {\n  color-scheme: dark;\n\n  /* Framework color */\n  --main-bg: rgb(27 27 30);\n  --mask-bg: rgb(68 69 70);\n  --main-border-color: rgb(44 45 45);\n\n  /* Common color */\n  --text-color: rgb(175 176 177);\n  --text-muted-color: #868686;\n  --text-muted-highlight-color: #aeaeae;\n  --heading-color: #cccccc;\n  --label-color: #a7a7a7;\n  --blockquote-border-color: rgb(66 66 66);\n  --blockquote-text-color: #868686;\n  --link-color: rgb(138 180 248);\n  --link-underline-color: rgb(82 108 150);\n  --button-bg: #1e1e1e;\n  --btn-border-color: #2e2f31;\n  --btn-backtotop-color: var(--text-color);\n  --btn-backtotop-border-color: #212122;\n  --card-header-bg: #292929;\n  --checkbox-color: rgb(118 120 121);\n  --checkbox-checked-color: var(--link-color);\n  --img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);\n  --shimmer-bg: linear-gradient(\n    90deg,\n    rgb(255 255 255 / 0%) 0%,\n    rgb(58 55 55 / 40%) 50%,\n    rgb(255 255 255 / 0%) 100%\n  );\n  --menu-bg: rgb(30 30 30);\n  --menu-border-color: rgb(77 77 77 / 60%);\n  --menu-shadow-color: rgb(4 4 4 / 42%);\n  --menu-active-color: rgb(240 248 255 / 63%);\n  --menu-highlight-bg: rgb(90 91 92 / 12%);\n\n  /* Sidebar */\n  --site-title-color: #717070;\n  --site-subtitle-color: #868686;\n  --sidebar-bg: #1e1e1e;\n  --sidebar-border-color: #292929;\n  --sidebar-muted-color: #868686;\n  --sidebar-active-color: rgb(255 255 255 / 95%);\n  --sidebar-hover-bg: #262626;\n  --sidebar-btn-bg: #232328;\n  --sidebar-btn-color: #787878;\n  --avatar-border-color: rgb(206 206 206 / 90%);\n\n  /* Topbar */\n  --topbar-bg: rgb(27 27 30 / 64%);\n  --topbar-text-color: var(--text-color);\n  --search-border-color: rgb(55 55 55);\n  --search-icon-color: rgb(100 102 105);\n  --input-focus-border-color: rgb(112 114 115);\n\n  /* Home page */\n  --post-list-text-color: rgb(175 176 177);\n  --btn-patinator-text-color: var(--text-color);\n  --btn-paginator-hover-color: #2e2e2e;\n\n  /* Posts */\n  --toc-highlight: rgb(116 178 243);\n  --toc-popup-border-color: #373737;\n  --tag-hover: rgb(43 56 62);\n  --tb-odd-bg: #252526; /* odd rows of the posts' table */\n  --tb-even-bg: rgb(31 31 34); /* even rows of the posts' table */\n  --tb-border-color: var(--tb-odd-bg);\n  --footnote-target-bg: rgb(63 81 181);\n  --btn-share-color: #6c757d;\n  --btn-share-hover-color: #bfc1ca;\n  --card-bg: #1e1e1e;\n  --card-hover-bg: #464d51;\n  --card-shadow:\n    rgb(21 21 21 / 72%) 0 6px 18px 0, rgb(137 135 135 / 24%) 0 0 0 1px;\n  --kbd-wrap-color: #6a6a6a;\n  --kbd-text-color: #d3d3d3;\n  --kbd-bg-color: #242424;\n  --prompt-text-color: rgb(216 212 212 / 75%);\n  --prompt-tip-bg: rgb(22 60 36 / 64%);\n  --prompt-tip-icon-color: rgb(15 164 15 / 81%);\n  --prompt-info-bg: rgb(7 59 104 / 80%);\n  --prompt-info-icon-color: #0075d1;\n  --prompt-warning-bg: rgb(90 69 3 / 88%);\n  --prompt-warning-icon-color: rgb(255 165 0 / 80%);\n  --prompt-danger-bg: rgb(86 28 8 / 80%);\n  --prompt-danger-icon-color: #cd0202;\n\n  /* Tags */\n  --tag-border: rgb(59 79 88);\n  --tag-shadow: rgb(32 33 33);\n  --dash-color: rgb(63 65 68);\n  --search-tag-bg: #292828;\n\n  /* Categories */\n  --categories-border: rgb(64 66 69 / 50%);\n  --categories-hover-bg: rgb(73 75 76);\n  --categories-icon-hover-color: white;\n\n  /* Archive */\n  --timeline-node-bg: rgb(150 152 156);\n  --timeline-color: rgb(63 65 68);\n  --timeline-year-dot-color: var(--timeline-color);\n\n  /* Code highlight colors */\n  --language-border-color: #2d2d2d;\n  --highlight-bg-color: #151515;\n  --highlighter-rouge-color: #c9def1;\n  --highlight-lineno-color: #808080;\n  --inline-code-bg: rgb(255 255 255 / 5%);\n  --code-color: #b0b0b0;\n  --code-header-text-color: #6a6a6a;\n  --code-header-muted-color: #353535;\n  --code-header-icon-color: #565656;\n  --clipboard-checked-color: #2bcc2b;\n  --filepath-text-color: #cacaca;\n\n  .light {\n    display: none;\n  }\n\n  /* Categories */\n  .categories.card,\n  .list-group-item {\n    background-color: var(--card-bg);\n  }\n\n  .categories {\n    .card-header {\n      background-color: var(--card-header-bg);\n    }\n\n    .list-group-item {\n      border-left: none;\n      border-right: none;\n      padding-left: 2rem;\n      border-color: var(--categories-border);\n\n      &:last-child {\n        border-bottom-color: var(--card-bg);\n      }\n    }\n  }\n\n  #archives li:nth-child(odd) {\n    background-image: linear-gradient(\n      to left,\n      rgb(26 26 30),\n      rgb(39 39 45),\n      rgb(39 39 45),\n      rgb(39 39 45),\n      rgb(26 26 30)\n    );\n  }\n\n  /* stylelint-disable-next-line selector-id-pattern */\n  #disqus_thread {\n    color-scheme: none;\n  }\n\n  /* --- Syntax highlight theme from `rougify style base16.dark` --- */\n\n  .highlight .gp {\n    color: #87939d;\n  }\n\n  .highlight table td {\n    padding: 5px;\n  }\n\n  .highlight table pre {\n    margin: 0;\n  }\n\n  .highlight,\n  .highlight .w {\n    color: #d0d0d0;\n    background-color: #151515;\n  }\n\n  .highlight .err {\n    color: #151515;\n    background-color: #ac4142;\n  }\n\n  .highlight .c,\n  .highlight .ch,\n  .highlight .cd,\n  .highlight .cm,\n  .highlight .cpf,\n  .highlight .c1,\n  .highlight .cs {\n    color: #848484;\n  }\n\n  .highlight .cp {\n    color: #f4bf75;\n  }\n\n  .highlight .nt {\n    color: #f4bf75;\n  }\n\n  .highlight .o,\n  .highlight .ow {\n    color: #d0d0d0;\n  }\n\n  .highlight .p,\n  .highlight .pi {\n    color: #d0d0d0;\n  }\n\n  .highlight .gi {\n    color: #90a959;\n  }\n\n  .highlight .gd {\n    color: #f08a8b;\n    background-color: #320000;\n  }\n\n  .highlight .gh {\n    color: #6a9fb5;\n    background-color: #151515;\n    font-weight: bold;\n  }\n\n  .highlight .k,\n  .highlight .kn,\n  .highlight .kp,\n  .highlight .kr,\n  .highlight .kv {\n    color: #aa759f;\n  }\n\n  .highlight .kc {\n    color: #d28445;\n  }\n\n  .highlight .kt {\n    color: #d28445;\n  }\n\n  .highlight .kd {\n    color: #d28445;\n  }\n\n  .highlight .s,\n  .highlight .sb,\n  .highlight .sc,\n  .highlight .dl,\n  .highlight .sd,\n  .highlight .s2,\n  .highlight .sh,\n  .highlight .sx,\n  .highlight .s1 {\n    color: #90a959;\n  }\n\n  .highlight .sa {\n    color: #aa759f;\n  }\n\n  .highlight .sr {\n    color: #75b5aa;\n  }\n\n  .highlight .si {\n    color: #b76d45;\n  }\n\n  .highlight .se {\n    color: #b76d45;\n  }\n\n  .highlight .nn {\n    color: #f4bf75;\n  }\n\n  .highlight .nc {\n    color: #f4bf75;\n  }\n\n  .highlight .no {\n    color: #f4bf75;\n  }\n\n  .highlight .na {\n    color: #6a9fb5;\n  }\n\n  .highlight .m,\n  .highlight .mb,\n  .highlight .mf,\n  .highlight .mh,\n  .highlight .mi,\n  .highlight .il,\n  .highlight .mo,\n  .highlight .mx {\n    color: #90a959;\n  }\n\n  .highlight .ss {\n    color: #90a959;\n  }\n}\n","@use 'sass:map';\n\n$-breakpoints: (\n  // 1 column\n  sm: 576px,\n  md: 768px,\n  // 2 columns\n  lg: 850px,\n  // 3 columns\n  xl: 1200px,\n  xxl: 1400px,\n  xxxl: 1650px\n);\n\n@function get($breakpoint) {\n  @return map.get($-breakpoints, $breakpoint);\n}\n\n/* Less than the given width */\n@mixin lt($width) {\n  @media all and (max-width: calc(#{$width} - 1px)) {\n    @content;\n  }\n}\n\n/* Less than or equal to the given width */\n@mixin lte($width) {\n  @media all and (max-width: $width) {\n    @content;\n  }\n}\n\n@mixin sm {\n  @media all and (min-width: get(sm)) {\n    @content;\n  }\n}\n\n@mixin md {\n  @media all and (min-width: get(md)) {\n    @content;\n  }\n}\n\n@mixin lg {\n  @media all and (min-width: get(lg)) {\n    @content;\n  }\n}\n\n@mixin xl {\n  @media all and (min-width: get(xl)) {\n    @content;\n  }\n}\n\n@mixin xxl {\n  @media all and (min-width: get(xxl)) {\n    @content;\n  }\n}\n\n@mixin xxxl {\n  @media all and (min-width: get(xxxl)) {\n    @content;\n  }\n}\n\n@mixin between($min, $max) {\n  @media all and (min-width: $min) and (max-width: $max) {\n    @content;\n  }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n@for $i from 1 through 5 {\n  h#{$i} {\n    @extend %heading;\n\n    @if $i > 1 {\n      @extend %anchor;\n    }\n\n    @if $i < 5 {\n      $size-factor: 0.25rem;\n\n      @if $i > 1 {\n        $size-factor: 0.18rem;\n\n        main & {\n          @if $i == 2 {\n            margin: 2.5rem 0 1.25rem;\n          } @else {\n            margin: 2rem 0 1rem;\n          }\n        }\n      }\n\n      font-size: 1rem + (5 - $i) * $size-factor;\n    } @else {\n      font-size: 1.05rem;\n    }\n  }\n}\n\na {\n  @extend %link-color;\n\n  text-decoration: none;\n}\n\nimg {\n  max-width: 100%;\n  height: auto;\n  transition: all 0.35s ease-in-out;\n\n  .blur & {\n    $blur: 20px;\n\n    -webkit-filter: blur($blur);\n    filter: blur($blur);\n  }\n}\n\nblockquote {\n  border-left: 0.125rem solid var(--blockquote-border-color);\n  padding-left: 1rem;\n  color: var(--blockquote-text-color);\n  margin-top: 0.5rem;\n\n  > p:last-child {\n    margin-bottom: 0;\n  }\n\n  &[class^='prompt-'] {\n    border-left: 0;\n    position: relative;\n    padding: 1rem 1rem 1rem 3rem;\n    color: var(--prompt-text-color);\n\n    @extend %rounded;\n\n    &::before {\n      text-align: center;\n      width: 3rem;\n      position: absolute;\n      left: 0.25rem;\n      margin-top: 0.4rem;\n      text-rendering: auto;\n      -webkit-font-smoothing: antialiased;\n    }\n  }\n\n  @include mx.prompt('tip', '\\f0eb', $fa-style: 'regular');\n  @include mx.prompt('info', '\\f06a', $rotate: 180);\n  @include mx.prompt('warning', '\\f06a');\n  @include mx.prompt('danger', '\\f071');\n}\n\nkbd {\n  font-family: Lato, sans-serif;\n  display: inline-block;\n  vertical-align: middle;\n  line-height: 1.3rem;\n  min-width: 1.75rem;\n  text-align: center;\n  margin: 0 0.3rem;\n  padding-top: 0.1rem;\n  color: var(--kbd-text-color);\n  background-color: var(--kbd-bg-color);\n  border-radius: v.$radius-sm;\n  border: solid 1px var(--kbd-wrap-color);\n  box-shadow: inset 0 -2px 0 var(--kbd-wrap-color);\n}\n\nhr {\n  border-color: var(--main-border-color);\n  opacity: 1;\n}\n\nfooter {\n  background-color: var(--main-bg);\n  height: v.$footer-height;\n  border-top: 1px solid var(--main-border-color);\n\n  @extend %text-xs;\n\n  a {\n    @extend %text-highlight;\n\n    &:hover {\n      @extend %link-hover;\n    }\n  }\n\n  em {\n    @extend %text-highlight;\n  }\n\n  p {\n    text-align: center;\n    margin-bottom: 0;\n  }\n}\n\n/* fontawesome icons */\ni {\n  &.far,\n  &.fas {\n    @extend %no-cursor;\n  }\n}\n\nsup {\n  @extend %sup-fn-target;\n}\n\nmain {\n  line-height: 1.75;\n\n  h1 {\n    margin-top: 2rem;\n\n    @include bp.lg {\n      margin-top: 3rem;\n    }\n  }\n\n  p {\n    > a.popup {\n      &:not(.normal):not(.left):not(.right) {\n        @include mx.align-center;\n      }\n    }\n  }\n\n  .categories,\n  #tags,\n  #archives {\n    a:not(:hover) {\n      @extend %no-bottom-border;\n    }\n  }\n\n  @include bp.lte(bp.get(sm)) {\n    .content {\n      > blockquote[class^='prompt-'] {\n        @include mx.ml-mr(-1rem);\n\n        border-radius: 0;\n        max-width: none;\n      }\n    }\n  }\n}\n\n.footnotes > ol {\n  padding-left: 2rem;\n  margin-top: 0.5rem;\n\n  > li {\n    &:not(:last-child) {\n      margin-bottom: 0.3rem;\n    }\n\n    @extend %sup-fn-target;\n\n    > p {\n      margin-left: 0.25em;\n\n      @include mx.mt-mb(0);\n    }\n  }\n}\n\n.footnote {\n  @at-root a#{&} {\n    @include mx.ml-mr(1px);\n    @include mx.pl-pr(2px);\n\n    border-bottom-style: none !important;\n  }\n}\n\n.reversefootnote {\n  @at-root a#{&} {\n    font-size: 0.6rem;\n    line-height: 1;\n    position: relative;\n    bottom: 0.25em;\n    margin-left: 0.25em;\n    border-bottom-style: none !important;\n  }\n}\n\n/* --- Begin of Markdown table style --- */\n\n/* it will be created by Liquid */\n.table-wrapper {\n  overflow-x: auto;\n  margin-bottom: 1.5rem;\n\n  > table {\n    min-width: 100%;\n    overflow-x: auto;\n    border-spacing: 0;\n\n    thead {\n      border-bottom: solid 2px rgb(210 215 217 / 75%);\n\n      th {\n        @extend %table-cell;\n      }\n    }\n\n    tbody {\n      tr {\n        border-bottom: 1px solid var(--tb-border-color);\n\n        &:nth-child(2n) {\n          background-color: var(--tb-even-bg);\n        }\n\n        &:nth-child(2n + 1) {\n          background-color: var(--tb-odd-bg);\n        }\n\n        td {\n          @extend %table-cell;\n        }\n      }\n    } /* tbody */\n  } /* table */\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n.highlighter-rouge {\n  color: var(--highlighter-rouge-color);\n  margin-top: 0.5rem;\n  margin-bottom: 1.2em; /* Override BS Inline-code style */\n}\n\n.highlight {\n  @extend %rounded;\n  @extend %code-snippet-bg;\n\n  overflow: auto;\n  padding-bottom: 0.75rem;\n\n  @at-root figure#{&} {\n    @extend %code-snippet-bg;\n  }\n\n  pre {\n    margin-bottom: 0;\n    font-size: v.$code-font-size;\n    line-height: 1.4rem;\n  }\n\n  table {\n    td {\n      &:first-child {\n        display: inline-block;\n        margin-left: 1rem;\n        margin-right: 0.75rem;\n      }\n\n      &:last-child {\n        padding-right: 2rem !important;\n      }\n\n      pre {\n        overflow: visible; /* Fixed iOS safari overflow-x */\n        word-break: normal; /* Fixed iOS safari linenos code break */\n      }\n    }\n  }\n\n  .lineno {\n    text-align: right;\n    color: var(--highlight-lineno-color);\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -o-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n  }\n} /* .highlight */\n\ncode {\n  -webkit-hyphens: none;\n  -ms-hyphens: none;\n  hyphens: none;\n  color: var(--code-color);\n\n  &.highlighter-rouge {\n    font-size: v.$code-font-size;\n    padding: 3px 5px;\n    overflow-wrap: break-word;\n    border-radius: v.$radius-sm;\n    background-color: var(--inline-code-bg);\n  }\n\n  &.filepath {\n    background-color: inherit;\n    color: var(--filepath-text-color);\n    font-weight: 600;\n    padding: 0;\n  }\n\n  a > &.highlighter-rouge {\n    padding-bottom: 0; /* show link's underline */\n    color: inherit;\n  }\n\n  a:hover > &.highlighter-rouge {\n    border-bottom: none;\n  }\n\n  blockquote & {\n    color: inherit;\n  }\n}\n\ntd.rouge-code {\n  @extend %code-snippet-padding;\n\n  /*\n    Prevent some browser extends from\n    changing the URL string of code block.\n  */\n  a {\n    color: inherit !important;\n    border-bottom: none !important;\n    pointer-events: none;\n  }\n}\n\ndiv[class^='language-'] {\n  @extend %rounded;\n  @extend %code-snippet-bg;\n\n  box-shadow: var(--language-border-color) 0 0 0 1px;\n\n  .content > & {\n    @include mx.ml-mr(-1rem);\n\n    border-radius: 0;\n\n    @include bp.sm {\n      @include mx.ml-mr(0);\n\n      border-radius: v.$radius-lg;\n    }\n  }\n\n  .code-header {\n    @include bp.sm {\n      @include mx.ml-mr(0);\n\n      $dot-margin: 1rem;\n\n      &::before {\n        content: '';\n        display: inline-block;\n        margin-left: $dot-margin;\n        width: v.$code-dot-size;\n        height: v.$code-dot-size;\n        border-radius: 50%;\n        background-color: var(--code-header-muted-color);\n        box-shadow:\n          (v.$code-dot-size + v.$code-dot-gap) 0 0\n            var(--code-header-muted-color),\n          (v.$code-dot-size + v.$code-dot-gap) * 2 0 0\n            var(--code-header-muted-color);\n      }\n\n      span {\n        // center the text of label\n        margin-left: calc(($dot-margin + v.$code-dot-size) / 2 * -1);\n      }\n    }\n  }\n\n  .highlight {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0;\n  }\n}\n\n/* Hide line numbers for default, console, and terminal code snippets */\ndiv {\n  &.nolineno,\n  &.language-plaintext,\n  &.language-console,\n  &.language-terminal {\n    td:first-child {\n      padding: 0 !important;\n      margin-right: 0;\n\n      .lineno {\n        display: none;\n      }\n    }\n  }\n}\n\n.code-header {\n  @extend %no-cursor;\n\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  height: v.$code-header-height;\n  margin-left: 0.75rem;\n  margin-right: 0.25rem;\n\n  /* the label block */\n  span {\n    line-height: v.$code-header-height;\n\n    /* label icon */\n    i {\n      font-size: 1rem;\n      width: v.$code-icon-width;\n      color: var(--code-header-icon-color);\n\n      &.small {\n        font-size: 70%;\n      }\n    }\n\n    @at-root [file] #{&} > i {\n      position: relative;\n      top: 1px; /* center the file icon */\n    }\n\n    /* label text */\n    &::after {\n      content: attr(data-label-text);\n      font-size: 0.85rem;\n      font-weight: 600;\n      color: var(--code-header-text-color);\n    }\n  }\n\n  /* clipboard */\n  button {\n    @extend %cursor-pointer;\n    @extend %rounded;\n\n    border: 1px solid transparent;\n    height: 2rem;\n    width: 2rem;\n    margin-right: 0.125rem;\n    padding: 0;\n    background-color: inherit;\n\n    i {\n      color: var(--code-header-icon-color);\n    }\n\n    &[timeout] {\n      &:hover {\n        border-color: var(--clipboard-checked-color);\n      }\n\n      i {\n        font-size: 90%;\n        color: var(--clipboard-checked-color);\n      }\n    }\n\n    &:focus {\n      outline: none;\n    }\n\n    &:not([timeout]):hover {\n      background-color: rgb(128 128 128 / 37%);\n\n      i {\n        color: white;\n      }\n    }\n  }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n\n#back-to-top {\n  visibility: hidden;\n  opacity: 0;\n  z-index: 1;\n  cursor: pointer;\n  position: fixed;\n  right: 1rem;\n  bottom: calc(v.$footer-height-large - v.$back2top-size / 2);\n  background: var(--button-bg);\n  color: var(--btn-backtotop-color);\n  padding: 0;\n  width: v.$back2top-size;\n  height: v.$back2top-size;\n  border-radius: 50%;\n  border: 1px solid var(--btn-backtotop-border-color);\n  transition: opacity 0.5s ease-in-out, transform 0.2s ease-out;\n\n  @include bp.lg {\n    right: 5%;\n    bottom: calc(v.$footer-height - v.$back2top-size / 2);\n  }\n\n  @include bp.xxl {\n    right: calc((100vw - v.$sidebar-width - 1140px) / 2 + 3rem);\n  }\n\n  @include bp.xxxl {\n    right: calc(\n      (100vw - v.$sidebar-width-large - v.$main-content-max-width) / 2 + 2rem\n    );\n  }\n\n  &:hover {\n    transform: translate3d(0, -5px, 0);\n    -webkit-transform: translate3d(0, -5px, 0);\n  }\n\n  i {\n    line-height: v.$back2top-size;\n    position: relative;\n    bottom: 2px;\n  }\n\n  &.show {\n    opacity: 1;\n    visibility: visible;\n  }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n/* PWA update popup */\n#notification {\n  @-webkit-keyframes popup {\n    from {\n      opacity: 0;\n      bottom: 10%;\n    }\n  }\n\n  @keyframes popup {\n    from {\n      opacity: 0;\n      bottom: 10%;\n    }\n  }\n\n  &.toast {\n    &.show {\n      -webkit-backdrop-filter: blur(10px);\n      backdrop-filter: blur(10px);\n      position: fixed;\n      left: 50%;\n      bottom: 30%;\n      transform: translateX(-50%);\n      -webkit-animation: popup 0.8s;\n      animation: popup 0.8s;\n    }\n\n    .toast-body {\n      line-height: 1.25rem;\n      font-family: v.$font-family-heading;\n    }\n\n    button[aria-label='Update'] {\n      font-size: 0.8rem;\n    }\n\n    .btn-close {\n      font-size: 0.625rem;\n    }\n  }\n}\n\n#toc-popup {\n  $slide-in: slide-in 0.3s ease-out;\n  $slide-out: slide-out 0.3s ease-out;\n  $curtain-height: 2rem;\n  $backdrop: blur(5px);\n\n  border-color: var(--toc-popup-border-color);\n  border-width: 1px;\n  border-radius: v.$radius-lg;\n  color: var(--text-color);\n  background: var(--card-bg);\n  margin-top: v.$topbar-height;\n  min-width: 20rem;\n  font-size: 1.05rem;\n\n  @include bp.sm {\n    max-width: 32rem;\n  }\n\n  &[open] {\n    -webkit-animation: $slide-in;\n    animation: $slide-in;\n  }\n\n  &[closing] {\n    -webkit-animation: $slide-out;\n    animation: $slide-out;\n  }\n\n  @include bp.lg {\n    left: v.$sidebar-width;\n  }\n\n  .header {\n    @extend %btn-color;\n\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    background-color: inherit;\n    border-bottom: 1px solid var(--main-border-color);\n\n    .label {\n      font-family: v.$font-family-heading;\n    }\n  }\n\n  button {\n    font-size: 0.75rem;\n\n    &:focus-visible {\n      box-shadow: none;\n    }\n  }\n\n  ul {\n    list-style-type: none;\n    padding-left: 0;\n\n    li {\n      ul,\n      & + li {\n        margin-top: 0.25rem;\n      }\n\n      a {\n        display: flex;\n        line-height: 1.5;\n        padding: 0.375rem 0;\n        padding-right: 1.125rem;\n\n        &.toc-link::before {\n          display: none;\n        }\n      }\n    }\n  }\n\n  @for $i from 2 through 4 {\n    .node-name--H#{$i} {\n      padding-left: 1.125rem * ($i - 1);\n    }\n  }\n\n  .is-active-link {\n    color: var(--toc-highlight) !important;\n    font-weight: 600;\n  }\n\n  &::-webkit-backdrop {\n    -webkit-backdrop-filter: $backdrop;\n    backdrop-filter: $backdrop;\n  }\n\n  &::backdrop {\n    -webkit-backdrop-filter: $backdrop;\n    backdrop-filter: $backdrop;\n  }\n\n  &::after {\n    display: flex;\n    content: '';\n    position: relative;\n    background: linear-gradient(transparent, var(--card-bg) 70%);\n    height: $curtain-height;\n  }\n\n  #toc-popup-content {\n    overflow: auto;\n    max-height: calc(100vh - 4 * v.$topbar-height);\n    font-family: v.$font-family-heading;\n    margin-bottom: -$curtain-height;\n  }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n$btn-border-width: 3px;\n$btn-mb: 0.5rem;\n$sidebar-display: 'sidebar-display'; /* the attribute for sidebar display */\n\n#sidebar {\n  @include mx.pl-pr(0);\n\n  position: fixed;\n  top: 0;\n  left: 0;\n  height: 100%;\n  overflow-y: auto;\n  width: v.$sidebar-width;\n  background: var(--sidebar-bg);\n\n  /* Hide scrollbar for IE, Edge and Firefox */\n  -ms-overflow-style: none; /* IE and Edge */\n  scrollbar-width: none; /* Firefox */\n\n  /* Hide scrollbar for Chrome, Safari and Opera */\n  &::-webkit-scrollbar {\n    display: none;\n  }\n\n  @include bp.lt(bp.get(lg)) {\n    @include mx.slide;\n\n    transform: translateX(-#{v.$sidebar-width}); /* hide */\n    -webkit-transform: translateX(-#{v.$sidebar-width});\n\n    [#{$sidebar-display}] & {\n      transform: translateX(0);\n    }\n  }\n\n  @include bp.xxxl {\n    width: v.$sidebar-width-large;\n  }\n\n  %sidebar-link-hover {\n    &:hover {\n      color: var(--sidebar-active-color);\n    }\n  }\n\n  a {\n    @extend %sidebar-links;\n  }\n\n  #avatar {\n    display: block;\n    width: 6.5rem;\n    height: 6.5rem;\n    overflow: hidden;\n    box-shadow: var(--avatar-border-color) 0 0 0 2px;\n    transform: translateZ(0); /* fixed the zoom in Safari */\n\n    @include bp.sm {\n      width: 7rem;\n      height: 7rem;\n    }\n\n    img {\n      transition: transform 0.5s;\n\n      &:hover {\n        transform: scale(1.2);\n      }\n    }\n  }\n\n  .profile-wrapper {\n    @extend %clickable-transition;\n\n    padding-left: 2.5rem;\n    padding-right: 1.25rem;\n    margin-top: 2.5rem;\n    margin-bottom: 1rem;\n    width: 100%;\n\n    @include bp.lg {\n      margin-top: 3rem;\n    }\n\n    @include bp.xxxl {\n      margin-top: 3.5rem;\n      margin-bottom: 2.5rem;\n      padding-left: 3.5rem;\n    }\n  }\n\n  .site-title {\n    @extend %clickable-transition;\n    @extend %sidebar-link-hover;\n\n    font-family: inherit;\n    font-weight: 900;\n    font-size: 1.75rem;\n    line-height: 1.2;\n    letter-spacing: 0.25px;\n    margin-top: 1.25rem;\n    margin-bottom: 0.5rem;\n    width: -webkit-fit-content;\n    width: -moz-fit-content;\n    width: fit-content;\n    color: var(--site-title-color);\n  }\n\n  .site-subtitle {\n    font-size: 95%;\n    color: var(--site-subtitle-color);\n    margin-top: 0.25rem;\n    word-spacing: 1px;\n    height: 3rem;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n  }\n\n  ul {\n    margin-bottom: 2rem;\n\n    li.nav-item {\n      opacity: 0.9;\n      width: 100%;\n\n      @include mx.pl-pr(1.5rem);\n\n      @include bp.xxxl {\n        @include mx.pl-pr(2.75rem);\n      }\n\n      a.nav-link {\n        @include mx.pt-pb(0.6rem);\n\n        display: flex;\n        align-items: center;\n        border-radius: 0.75rem;\n        font-weight: 600;\n\n        &:hover {\n          background-color: var(--sidebar-hover-bg);\n        }\n\n        i {\n          font-size: 95%;\n          opacity: 0.8;\n          margin-right: 1.5rem;\n        }\n\n        span {\n          font-size: 90%;\n          letter-spacing: 0.2px;\n        }\n      }\n\n      &.active {\n        .nav-link {\n          color: var(--sidebar-active-color);\n          background-color: var(--sidebar-hover-bg);\n\n          span {\n            opacity: 1;\n          }\n        }\n      }\n\n      &:not(:first-child) {\n        margin-top: 0.25rem;\n      }\n    }\n  }\n\n  .sidebar-bottom {\n    padding-left: 2rem;\n    padding-right: 1rem;\n    margin-bottom: 1.5rem;\n\n    @include bp.xxxl {\n      padding-left: 2.75rem;\n      margin-bottom: 1.75rem;\n    }\n\n    $btn-size: 1.75rem;\n\n    %button {\n      width: $btn-size;\n      height: $btn-size;\n      margin-bottom: $btn-mb; // multi line gap\n      border-radius: 50%;\n      color: var(--sidebar-btn-color);\n      background-color: var(--sidebar-btn-bg);\n      text-align: center;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n\n      &:not(:focus-visible) {\n        box-shadow: var(--sidebar-border-color) 0 0 0 1px;\n      }\n\n      &:hover {\n        background-color: var(--sidebar-hover-bg);\n      }\n    }\n\n    > a {\n      @extend %button;\n      @extend %sidebar-link-hover;\n      @extend %clickable-transition;\n\n      &:not(:last-child) {\n        margin-right: v.$sb-btn-gap;\n\n        @include bp.xxxl {\n          margin-right: v.$sb-btn-gap-lg;\n        }\n      }\n    }\n\n    i {\n      line-height: $btn-size;\n    }\n\n    #mode-toggle {\n      @extend %button;\n      @extend %sidebar-link-hover;\n      @extend %clickable-transition;\n\n      > i {\n        display: none;\n\n        @at-root :root[data-bs-theme='light'][data-theme-persisted]\n            &[data-theme-mode='light'] {\n          display: block;\n        }\n\n        @at-root :root[data-bs-theme='dark'][data-theme-persisted]\n            &[data-theme-mode='dark'] {\n          display: block;\n        }\n\n        @at-root :root:not([data-theme-persisted]) &[data-theme-mode='system'] {\n          display: block;\n        }\n      }\n\n      @-webkit-keyframes menu-pop {\n        from {\n          opacity: 0;\n          translate: 0 0.5rem;\n        }\n\n        to {\n          opacity: 1;\n          translate: 0 0;\n        }\n      }\n\n      @keyframes menu-pop {\n        from {\n          opacity: 0;\n          translate: 0 0.5rem;\n        }\n\n        to {\n          opacity: 1;\n          translate: 0 0;\n        }\n      }\n\n      + .dropdown-menu {\n        background-color: var(--menu-bg);\n        border-color: var(--menu-border-color);\n        box-shadow: var(--menu-shadow-color) 0 1px 4px;\n        border-radius: 0.75rem !important;\n\n        &.show {\n          display: flex;\n          flex-direction: column;\n          gap: 0.25rem;\n          left: -0.25rem !important;\n          -webkit-animation: menu-pop 0.2s ease-out;\n          animation: menu-pop 0.2s ease-out;\n        }\n\n        .dropdown-item {\n          border-radius: 0.5rem;\n          color: var(--sidebar-muted-color);\n          font-size: 90%;\n\n          &.active {\n            font-weight: 600;\n            color: var(--menu-active-color);\n\n            &::after {\n              content: '\\f00c';\n              font: var(--fa-font-solid);\n              font-size: 0.75rem;\n              color: var(--sidebar-btn-color);\n              margin-left: auto;\n              padding-left: 1rem;\n            }\n          }\n\n          &:active,\n          &:hover,\n          &.active {\n            background-color: var(--menu-highlight-bg);\n          }\n\n          > i {\n            color: var(--sidebar-btn-color);\n            margin-right: 0.5rem;\n          }\n        }\n      }\n    }\n\n    .icon-border {\n      @extend %no-cursor;\n      @include mx.ml-mr(0.6rem);\n\n      background-color: var(--sidebar-btn-color);\n      content: '';\n      width: $btn-border-width;\n      height: $btn-border-width;\n      border-radius: 50%;\n      margin-bottom: $btn-mb;\n    }\n  } /* .sidebar-bottom */\n} /* #sidebar */\n\n[#{$sidebar-display}] {\n  #main-wrapper {\n    @include bp.lt(bp.get(lg)) {\n      transform: translateX(v.$sidebar-width);\n    }\n  }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n#topbar-wrapper {\n  height: v.$topbar-height;\n  background-color: var(--topbar-bg);\n\n  @include bp.lt(bp.get(lg)) {\n    @include mx.slide(top 0.2s ease);\n\n    left: 0;\n  }\n}\n\n#topbar {\n  @extend %btn-color;\n\n  #breadcrumb {\n    font-size: 1rem;\n    color: var(--text-muted-color);\n    padding-left: 0.5rem;\n\n    a:hover {\n      @extend %link-hover;\n    }\n\n    span {\n      &:not(:last-child) {\n        &::after {\n          content: '›';\n          padding: 0 0.3rem;\n        }\n      }\n    }\n\n    @include bp.lt(bp.get(lg)) {\n      display: none;\n    }\n\n    @include bp.between(bp.get(lg), calc(#{bp.get(xl)} - 1px)) {\n      width: 65%;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      word-break: keep-all;\n      white-space: nowrap;\n    }\n  }\n\n  @include bp.lte(bp.get(md)) {\n    @include mx.max-w-100;\n  }\n\n  @include bp.lt(bp.get(lg)) {\n    max-width: 100%;\n  }\n}\n\n#topbar-title {\n  display: none;\n  font-size: 1.1rem;\n  font-weight: 600;\n  font-family: sans-serif;\n  color: var(--topbar-text-color);\n  text-align: center;\n  width: 70%;\n  word-break: keep-all;\n\n  @include bp.lt(bp.get(lg)) {\n    display: block;\n  }\n\n  @include bp.lg {\n    text-align: left;\n  }\n}\n\n#sidebar-trigger,\n#search-trigger {\n  display: none;\n\n  @include bp.lt(bp.get(lg)) {\n    display: block;\n  }\n}\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n.access {\n  top: 2rem;\n  transition: top 0.2s ease-in-out;\n  margin-top: 3rem;\n\n  &:only-child {\n    position: -webkit-sticky;\n    position: sticky;\n  }\n\n  > section {\n    @extend %panel-border;\n\n    padding-left: 1rem;\n\n    &:not(:first-child) {\n      margin-top: 4rem;\n    }\n  }\n\n  .content {\n    font-size: 0.9rem;\n  }\n}\n\n#panel-wrapper {\n  /* the headings */\n  .panel-heading {\n    font-family: inherit;\n    line-height: inherit;\n\n    @include mx.label(inherit);\n  }\n\n  .post-tag {\n    line-height: 1.05rem;\n    font-size: 0.85rem;\n    border-radius: 0.8rem;\n    padding: 0.3rem 0.5rem;\n    margin: 0 0.35rem 0.5rem 0;\n\n    &:hover {\n      transition: all 0.3s ease-in;\n    }\n  }\n\n  > :last-child {\n    margin-bottom: 4rem;\n  }\n\n  @include bp.lt(bp.get(xl)) {\n    display: none;\n  }\n}\n\n#access-lastmod {\n  a {\n    color: inherit;\n\n    &:hover {\n      @extend %link-hover;\n    }\n\n    @extend %no-bottom-border;\n  }\n}\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/variables' as v;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\nfooter {\n  background-color: var(--main-bg);\n  height: v.$footer-height;\n  border-top: 1px solid var(--main-border-color);\n\n  @extend %text-xs;\n\n  @include bp.lt(bp.get(lg)) {\n    @include mx.slide;\n\n    height: v.$footer-height-large;\n    padding: 1.5rem 0;\n  }\n\n  a {\n    @extend %text-highlight;\n\n    &:hover {\n      @extend %link-hover;\n    }\n  }\n\n  em {\n    @extend %text-highlight;\n  }\n\n  p {\n    text-align: center;\n    margin-bottom: 0;\n  }\n}\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/variables' as v;\n@use '../abstracts/placeholders';\n\nsearch {\n  display: flex;\n  width: 100%;\n  border-radius: 1rem;\n  border: 1px solid var(--search-border-color);\n  background: var(--main-bg);\n  padding: 0 0.5rem;\n\n  i {\n    z-index: 2;\n    font-size: 0.9rem;\n    color: var(--search-icon-color);\n  }\n\n  @include bp.lt(bp.get(lg)) {\n    display: none;\n  }\n\n  @include bp.lg {\n    max-width: v.$search-max-width;\n  }\n\n  @include bp.xl {\n    margin-right: 4rem;\n  }\n\n  @include bp.xxxl {\n    margin-right: calc(\n      v.$main-content-max-width / 4 - v.$search-max-width - 0.75rem\n    );\n  }\n}\n\n#search-result-wrapper {\n  display: none;\n  height: 100%;\n  width: 100%;\n  overflow: auto;\n\n  .content {\n    margin-top: 2rem;\n  }\n\n  @include bp.lt(bp.get(lg)) {\n    width: 100%;\n\n    .content {\n      letter-spacing: 0;\n    }\n  }\n\n  @include bp.lg {\n    max-width: v.$main-content-max-width;\n    justify-content: start !important;\n  }\n}\n\n#search-results {\n  padding-bottom: 3rem;\n\n  @include bp.between(bp.get(lg), calc(#{bp.get(xl)} - 1px)) {\n    > div {\n      max-width: 700px;\n    }\n  }\n\n  a {\n    font-size: 1.4rem;\n    line-height: 1.5rem;\n\n    &:hover {\n      @extend %link-hover;\n    }\n\n    @extend %link-color;\n    @extend %no-bottom-border;\n    @extend %heading;\n  }\n\n  > article {\n    width: 100%;\n\n    &:not(:last-child) {\n      margin-bottom: 1rem;\n    }\n\n    @include bp.xl {\n      width: 45%;\n\n      &:nth-child(odd) {\n        margin-right: 1.5rem;\n      }\n\n      &:nth-child(even) {\n        margin-left: 1.5rem;\n      }\n\n      &:last-child:nth-child(odd) {\n        position: relative;\n        right: 24.3%;\n      }\n    }\n\n    h2 {\n      line-height: 2.5rem;\n    }\n\n    /* icons */\n    i {\n      color: #818182;\n      margin-right: 0.15rem;\n      font-size: 80%;\n    }\n\n    > p {\n      @extend %text-ellipsis;\n\n      white-space: break-spaces;\n      display: -webkit-box;\n      -webkit-line-clamp: 3;\n      -webkit-box-orient: vertical;\n    }\n  }\n}\n\n/* 'Cancel' link */\n#search-cancel {\n  color: var(--link-color);\n  display: none;\n  white-space: nowrap;\n\n  @extend %cursor-pointer;\n}\n\n#search-input {\n  background: center;\n  border: 0;\n  border-radius: 0;\n  padding: 0.18rem 0.3rem;\n  color: var(--text-color);\n  height: auto;\n\n  &:focus {\n    box-shadow: none;\n  }\n\n  @include bp.xl {\n    transition: all 0.3s ease-in-out;\n  }\n}\n\n#search-hints {\n  padding: 0 1rem;\n\n  @include bp.lg {\n    display: none;\n  }\n\n  h4 {\n    margin-bottom: 1.5rem;\n  }\n\n  .post-tag {\n    display: inline-block;\n    line-height: 1rem;\n    font-size: 1rem;\n    background: var(--search-tag-bg);\n    border: none;\n    padding: 0.5rem;\n    margin: 0 1.25rem 1rem 0;\n\n    &::before {\n      content: '#';\n      color: var(--text-muted-color);\n      padding-right: 0.2rem;\n    }\n\n    @extend %link-color;\n  }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n#post-list {\n  margin-top: 2rem;\n\n  @include bp.lg {\n    margin-top: 2.5rem;\n  }\n\n  .card-wrapper {\n    &:hover {\n      text-decoration: none;\n    }\n\n    &:not(:last-child) {\n      margin-bottom: 1.25rem;\n    }\n  }\n\n  .card {\n    border: 0;\n    background: none;\n\n    %img-radius {\n      border-radius: v.$radius-lg v.$radius-lg 0 0;\n\n      @include bp.md {\n        border-radius: 0 v.$radius-lg v.$radius-lg 0;\n      }\n    }\n\n    .preview-img {\n      @extend %img-radius;\n\n      img {\n        @extend %img-radius;\n      }\n    }\n\n    .card-body {\n      height: 100%;\n      padding: 1rem;\n\n      @include bp.md {\n        padding: 1.75rem 1.75rem 1.25rem;\n      }\n\n      .card-title {\n        @extend %text-clip;\n\n        color: var(--heading-color) !important;\n        font-size: 1.25rem;\n      }\n\n      %muted {\n        color: var(--text-muted-color) !important;\n      }\n\n      .card-text {\n        @include bp.md {\n          display: inherit !important;\n        }\n\n        &.content {\n          @extend %muted;\n\n          p {\n            @extend %text-clip;\n\n            line-height: 1.5;\n            margin: 0;\n          }\n        }\n      }\n\n      .post-meta {\n        @extend %muted;\n\n        i {\n          &:not(:first-child) {\n            margin-left: 1.5rem;\n\n            @include bp.md {\n              margin-left: 1.75rem;\n            }\n          }\n        }\n\n        em {\n          @extend %normal-font-style;\n\n          color: inherit;\n        }\n\n        > div:first-child {\n          display: block;\n\n          @extend %text-ellipsis;\n        }\n      }\n    }\n  }\n} /* #post-list */\n\n.pagination {\n  color: var(--text-color);\n  font-family: Lato, sans-serif;\n  justify-content: space-evenly;\n\n  @include bp.lg {\n    font-size: 0.85rem;\n    justify-content: center;\n  }\n\n  a:hover {\n    text-decoration: none;\n  }\n\n  .page-item {\n    @include bp.lt(bp.get(lg)) {\n      &:not(:first-child):not(:last-child) {\n        display: none;\n      }\n    }\n\n    @include bp.lg {\n      &:not(:last-child) {\n        margin-right: 0.7rem;\n      }\n    }\n\n    .page-link {\n      color: var(--btn-patinator-text-color);\n      padding: 0 0.6rem;\n      border-radius: 0.5rem;\n      border: 0;\n      background-color: inherit;\n    }\n\n    &.active {\n      .page-link {\n        background-color: var(--btn-paginator-hover-color);\n      }\n    }\n\n    &:not(.active) {\n      .page-link {\n        &:hover {\n          box-shadow: inset var(--btn-border-color) 0 0 0 1px;\n        }\n      }\n    }\n\n    &.disabled {\n      cursor: not-allowed;\n\n      .page-link {\n        color: rgb(108 117 125 / 57%);\n      }\n    }\n  } /* .page-item */\n\n  .page-index {\n    @include bp.lg {\n      display: none;\n    }\n  }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n%-btn-post-nav {\n  width: 50%;\n  position: relative;\n  border-color: var(--btn-border-color);\n}\n\n@mixin -dot($pl: 0.25rem, $pr: 0.25rem) {\n  content: '\\2022';\n  padding-left: $pl;\n  padding-right: $pr;\n}\n\nheader {\n  .post-desc {\n    @extend %heading;\n\n    font-size: 1.125rem;\n    line-height: 1.6;\n  }\n\n  .post-meta {\n    span + span::before {\n      @include -dot;\n    }\n\n    em,\n    time {\n      @extend %text-highlight;\n    }\n\n    em {\n      a {\n        color: inherit;\n      }\n    }\n  }\n\n  h1 + .post-meta {\n    margin-top: 1.5rem;\n  }\n}\n\n.post-tail-wrapper {\n  @extend %text-sm;\n\n  margin-top: 6rem;\n  border-bottom: 1px double var(--main-border-color);\n\n  .license-wrapper {\n    line-height: 1.2rem;\n\n    > a {\n      @extend %text-highlight;\n\n      &:hover {\n        @extend %link-hover;\n      }\n    }\n\n    span:last-child {\n      @extend %text-sm;\n    }\n  } /* .license-wrapper */\n\n  .post-meta a:not(:hover) {\n    @extend %link-underline;\n  }\n\n  .share-wrapper {\n    vertical-align: middle;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n\n    %icon-size {\n      font-size: 1.125rem;\n    }\n\n    .share-icons {\n      display: flex;\n\n      i {\n        color: var(--btn-share-color);\n\n        @extend %icon-size;\n      }\n\n      > * {\n        @extend %icon-size;\n\n        margin-left: 0.5rem;\n\n        &:hover {\n          i {\n            @extend %btn-share-hover;\n          }\n        }\n      }\n\n      button {\n        padding: 0;\n        border: none;\n        line-height: inherit;\n\n        @extend %cursor-pointer;\n      }\n    } /* .share-icons */\n  } /* .share-wrapper */\n}\n\n.post-tail-bottom {\n  @include bp.lte(bp.get(sm)) {\n    flex-wrap: wrap-reverse !important;\n\n    > div:first-child {\n      width: 100%;\n      margin-top: 1rem;\n    }\n  }\n}\n\n.share-mastodon {\n  /* See: https://github.com/justinribeiro/share-to-mastodon#properties */\n  --wc-stm-font-family: #{v.$font-family-base};\n  --wc-stm-dialog-background-color: var(--card-bg);\n  --wc-stm-form-button-border: 1px solid var(--btn-border-color);\n  --wc-stm-form-submit-background-color: var(--sidebar-btn-bg);\n  --wc-stm-form-cancel-background-color: var(--sidebar-btn-bg);\n  --wc-stm-form-button-background-color-hover: #007bff;\n  --wc-stm-form-button-color-hover: white;\n\n  font-size: 1rem;\n}\n\n.post-tags {\n  line-height: 2rem;\n\n  .post-tag {\n    &:hover {\n      @extend %tag-hover;\n    }\n  }\n}\n\n.post-edit {\n  line-height: 1.2rem;\n\n  > a {\n    &:hover {\n      @extend %link-hover;\n    }\n  }\n}\n\n.post-navigation {\n  @include bp.lt(bp.get(lg)) {\n    @include mx.pl-pr(0);\n    @include mx.ml-mr(-0.5rem);\n  }\n\n  .btn {\n    @extend %-btn-post-nav;\n\n    &:not(:hover) {\n      color: var(--link-color);\n    }\n\n    &:hover {\n      &:not(.disabled)::before {\n        color: whitesmoke;\n      }\n    }\n\n    &.disabled {\n      @extend %-btn-post-nav;\n\n      pointer-events: auto;\n      cursor: not-allowed;\n      background: none;\n      color: gray;\n    }\n\n    &.btn-outline-primary.disabled:focus {\n      box-shadow: none;\n    }\n\n    &::before {\n      color: var(--text-muted-color);\n      font-size: 0.65rem;\n      text-transform: uppercase;\n      content: attr(aria-label);\n    }\n\n    &:first-child {\n      border-radius: v.$radius-lg 0 0 v.$radius-lg;\n      left: 0.5px;\n    }\n\n    &:last-child {\n      border-radius: 0 v.$radius-lg v.$radius-lg 0;\n      right: 0.5px;\n    }\n  }\n\n  p {\n    font-size: 1.1rem;\n    line-height: 1.5rem;\n    margin-top: 0.3rem;\n    white-space: normal;\n  }\n} /* .post-navigation */\n\n@media (hover: hover) {\n  .post-navigation {\n    .btn,\n    .btn::before {\n      transition: all 0.35s ease-in-out;\n    }\n  }\n}\n\n@-webkit-keyframes fade-up {\n  from {\n    opacity: 0;\n    margin-top: 4rem;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes fade-up {\n  from {\n    opacity: 0;\n    margin-top: 4rem;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n/* TOC panel */\n\n%top-cover {\n  content: '';\n  display: block;\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  width: 100%;\n  height: 3rem;\n  background: linear-gradient(var(--main-bg) 50%, transparent);\n}\n\n#toc-wrapper {\n  top: 0;\n  transition: top 0.2s ease-in-out;\n  overflow-y: auto;\n  max-height: 100vh;\n  scrollbar-width: none;\n  margin-top: 2rem;\n\n  &:not(.invisible) {\n    -webkit-animation: fade-up 0.8s;\n    animation: fade-up 0.8s;\n  }\n\n  ul {\n    list-style: none;\n    font-size: 0.85rem;\n    line-height: 1.25;\n    padding-left: 0;\n\n    li {\n      a {\n        padding: 0.4rem 0 0.4rem 1.25rem;\n      }\n    }\n\n    /* Overwrite TOC plugin style */\n\n    .toc-link {\n      display: block;\n\n      @extend %text-ellipsis;\n\n      &:hover {\n        color: var(--toc-highlight);\n        text-decoration: none;\n      }\n\n      &::before {\n        display: none;\n      }\n    }\n\n    .is-active-link {\n      color: var(--toc-highlight) !important;\n      font-weight: 600;\n\n      &::before {\n        display: inline-block;\n        width: 1px;\n        height: 1.25rem;\n        background-color: var(--toc-highlight) !important;\n      }\n    }\n\n    ul {\n      padding-left: 0.75rem;\n    }\n  }\n\n  @at-root .toc-border-cover {\n    @extend %top-cover;\n\n    margin-bottom: -4rem;\n  }\n\n  &::before {\n    @extend %top-cover;\n  }\n\n  &::after {\n    content: '';\n    position: fixed;\n    bottom: 0;\n    width: 15%;\n    height: 2.25rem;\n    margin-left: -1px;\n    background: linear-gradient(transparent, var(--main-bg) 70%);\n  }\n\n  > * {\n    @extend %panel-border;\n  }\n}\n\n/* --- TOC button, bar and popup in mobile/tablet --- */\n\n#toc-bar {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1;\n  margin: 0 -1rem;\n  height: v.$topbar-height;\n  background: var(--main-bg);\n  border-bottom: 1px solid var(--main-border-color);\n  transition: all 0.2s ease-in-out;\n\n  @extend %btn-color;\n\n  @include bp.xl {\n    display: none !important;\n  }\n\n  .label {\n    @extend %heading;\n\n    margin-left: 0.375rem;\n    padding: 0 0.75rem;\n    color: inherit;\n  }\n\n  &.invisible {\n    top: -#{v.$topbar-height};\n    transition: none;\n  }\n}\n\n#toc-solo-trigger {\n  color: var(--text-muted-color);\n  border-color: var(--btn-border-color);\n  border-radius: v.$radius-lg;\n\n  @include bp.xl {\n    display: none !important;\n  }\n\n  .label {\n    font-size: 1rem;\n    font-family: v.$font-family-heading;\n  }\n\n  &:hover {\n    box-shadow: none;\n    background: none;\n  }\n}\n\n@mixin slide-in {\n  from {\n    opacity: 0.7;\n    transform: translateY(-#{v.$topbar-height});\n  }\n\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n@mixin slide-out {\n  0% {\n    transform: translateY(0);\n    opacity: 1;\n  }\n\n  100% {\n    transform: translateY(-#{v.$topbar-height});\n    opacity: 0;\n  }\n}\n\n@-webkit-keyframes slide-in {\n  @include slide-in;\n}\n\n@keyframes slide-in {\n  @include slide-in;\n}\n\n@-webkit-keyframes slide-out {\n  @include slide-out;\n}\n\n@keyframes slide-out {\n  @include slide-out;\n}\n\n/* --- Related Posts --- */\n\n#related-posts {\n  > h3 {\n    @include mx.label(1.1rem, 600);\n  }\n\n  time {\n    @extend %normal-font-style;\n    @extend %text-xs;\n\n    color: var(--text-muted-color);\n  }\n\n  p {\n    @extend %text-ellipsis;\n\n    font-size: 0.9rem;\n    margin-bottom: 0.5rem;\n    white-space: break-spaces;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n  }\n\n  .card {\n    h4 {\n      @extend %text-clip;\n    }\n  }\n}\n\n/* stylelint-disable-next-line selector-id-pattern */\n#disqus_thread {\n  min-height: 8.5rem;\n}\n\n.utterances {\n  max-width: 100%;\n  min-height: 269px;\n}\n\n%btn-share-hover {\n  color: var(--btn-share-hover-color) !important;\n}\n\n.share-label {\n  @include mx.label(inherit, 400, inherit);\n\n  &::after {\n    content: ':';\n  }\n}\n\n.content > p > img {\n  @include bp.lte(bp.get(md)) {\n    max-width: calc(100% + 1rem);\n  }\n}\n\nh2,\nh3,\nh4 {\n  @include bp.xl {\n    scroll-margin-top: 2rem;\n  }\n}\n","@use '../abstracts/variables' as v;\n@use '../abstracts/placeholders';\n\n%-category-icon-color {\n  color: gray;\n}\n\n.categories {\n  margin-bottom: 2rem;\n  border-color: var(--categories-border);\n\n  &.card,\n  .list-group {\n    @extend %rounded;\n  }\n\n  .card-header {\n    $radius: calc(v.$radius-lg - 1px);\n\n    padding: 0.75rem;\n    border-radius: $radius;\n    border-bottom: 0;\n\n    &.hide-border-bottom {\n      border-bottom-left-radius: 0;\n      border-bottom-right-radius: 0;\n    }\n  }\n\n  i {\n    @extend %-category-icon-color;\n\n    font-size: 86%; /* fontawesome icons */\n  }\n\n  .list-group-item {\n    border-left: none;\n    border-right: none;\n    padding-left: 2rem;\n\n    &:first-child {\n      border-top-left-radius: 0;\n      border-top-right-radius: 0;\n    }\n\n    &:last-child {\n      border-bottom: 0;\n    }\n  }\n} /* .categories */\n\n.category-trigger {\n  width: 1.7rem;\n  height: 1.7rem;\n  border-radius: 50%;\n  text-align: center;\n  color: #6c757d !important;\n\n  i {\n    position: relative;\n    height: 0.7rem;\n    width: 1rem;\n    transition: transform 300ms ease;\n  }\n\n  &:hover {\n    i {\n      color: var(--categories-icon-hover-color);\n    }\n  }\n}\n\n/* only works on desktop */\n@media (hover: hover) {\n  .category-trigger:hover {\n    background-color: var(--categories-hover-bg);\n  }\n}\n\n.rotate {\n  transform: rotate(-90deg);\n}\n","@use '../abstracts/breakpoints' as bp;\n\n.tag {\n  border-radius: 0.7em;\n  padding: 6px 8px 7px;\n  margin-right: 0.8rem;\n  line-height: 3rem;\n  letter-spacing: 0;\n  border: 1px solid var(--tag-border) !important;\n  box-shadow: 0 0 3px 0 var(--tag-shadow);\n\n  span {\n    margin-left: 0.6em;\n    font-size: 0.7em;\n    font-family: Oswald, sans-serif;\n  }\n}\n\n#tags {\n  @include bp.lt(bp.get(lg)) {\n    justify-content: center !important;\n  }\n}\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/placeholders';\n\n#archives {\n  letter-spacing: 0.03rem;\n\n  @include bp.lt(bp.get(sm)) {\n    margin-top: -1rem;\n\n    ul {\n      letter-spacing: 0;\n    }\n  }\n\n  $timeline-width: 4px;\n\n  %timeline {\n    content: '';\n    width: $timeline-width;\n    position: relative;\n    float: left;\n    background-color: var(--timeline-color);\n  }\n\n  .year {\n    height: 3.5rem;\n    font-size: 1.5rem;\n    position: relative;\n    left: 2px;\n    margin-left: -$timeline-width;\n\n    &::before {\n      @extend %timeline;\n\n      height: 72px;\n      left: 79px;\n      bottom: 16px;\n    }\n\n    &:first-child::before {\n      @extend %timeline;\n\n      height: 32px;\n      top: 24px;\n    }\n\n    /* Year dot */\n    &::after {\n      content: '';\n      display: inline-block;\n      position: relative;\n      border-radius: 50%;\n      width: 12px;\n      height: 12px;\n      left: 21.5px;\n      border: 3px solid;\n      background-color: var(--timeline-year-dot-color);\n      border-color: var(--timeline-node-bg);\n      box-shadow: 0 0 2px 0 #c2c6cc;\n      z-index: 1;\n    }\n  }\n\n  ul {\n    li {\n      font-size: 1.1rem;\n      line-height: 3rem;\n\n      @extend %text-ellipsis;\n\n      &:nth-child(odd) {\n        background-color: var(--main-bg, #ffffff);\n        background-image: linear-gradient(\n          to left,\n          #ffffff,\n          #fbfbfb,\n          #fbfbfb,\n          #fbfbfb,\n          #ffffff\n        );\n      }\n\n      &::before {\n        @extend %timeline;\n\n        top: 0;\n        left: 77px;\n        height: 3.1rem;\n      }\n    }\n\n    &:last-child li:last-child::before {\n      height: 1.5rem;\n    }\n  } /* #archives ul */\n\n  .date {\n    white-space: nowrap;\n    display: inline-block;\n    position: relative;\n    right: 0.5rem;\n\n    &.month {\n      width: 1.4rem;\n      text-align: center;\n    }\n\n    &.day {\n      font-size: 85%;\n      font-family: Lato, sans-serif;\n    }\n  }\n\n  a {\n    /* post title in Archives */\n    margin-left: 2.5rem;\n    position: relative;\n    top: 0.1rem;\n\n    &:hover {\n      border-bottom: none;\n    }\n\n    &::before {\n      /* the dot before post title */\n      content: '';\n      display: inline-block;\n      position: relative;\n      border-radius: 50%;\n      width: 8px;\n      height: 8px;\n      float: left;\n      top: 1.35rem;\n      left: 71px;\n      background-color: var(--timeline-node-bg);\n      box-shadow: 0 0 3px 0 #c2c6cc;\n      z-index: 1;\n    }\n  }\n} /* #archives */\n","@use '../abstracts/breakpoints' as bp;\n@use '../abstracts/mixins' as mx;\n@use '../abstracts/placeholders';\n\n.dash {\n  margin: 0 0.5rem 0.6rem 0.5rem;\n  border-bottom: 2px dotted var(--dash-color);\n}\n\n#page-category,\n#page-tag {\n  ul > li {\n    line-height: 1.5rem;\n    padding: 0.6rem 0;\n\n    /* dot */\n    &::before {\n      background: #999999;\n      width: 5px;\n      height: 5px;\n      border-radius: 50%;\n      display: block;\n      content: '';\n      position: relative;\n      top: 0.6rem;\n      margin-right: 0.5rem;\n\n      @include bp.lt(bp.get(sm)) {\n        margin: 0 0.5rem;\n      }\n    }\n\n    /* post's title */\n    > a {\n      @extend %no-bottom-border;\n\n      font-size: 1.1rem;\n\n      @include bp.lt(bp.get(sm)) {\n        @include mx.text-ellipsis;\n      }\n    }\n  }\n}\n\n/* tag icon */\n#page-tag h1 > i {\n  font-size: 1.2rem;\n}\n\n#page-category h1 > i {\n  font-size: 1.25rem;\n}\n\n#page-category,\n#page-tag,\n#access-lastmod {\n  a:hover {\n    @extend %link-hover;\n\n    margin-bottom: -1px; /* Avoid jumping */\n  }\n}\n","/* OPSOAI visual-book reader\n   The article remains complete in the HTML. JavaScript only changes how its\n   semantic H2 sections are presented, so print, search and no-JS stay useful. */\n\nbody.book-page {\n  --book-accent: #315efb;\n  --book-accent-strong: #2449d8;\n  --book-mint: #20ad91;\n  --book-ink: #111827;\n  --book-muted: #667085;\n  --book-paper: #fffefa;\n  --book-paper-soft: #f4f5f7;\n  --book-line: rgba(17, 24, 39, 0.12);\n  --book-marker: rgba(255, 205, 74, 0.46);\n  --book-stage: #eceeec;\n  --book-shadow: 0 22px 54px rgba(22, 28, 40, 0.1), 0 2px 8px rgba(22, 28, 40, 0.04);\n\n  border: 0 !important;\n  overflow-x: hidden;\n  background: var(--book-stage);\n}\n\n/* Keep page mode pinned to one dynamic viewport. Mermaid/Chart SVGs may round\n   their intrinsic height up by a few pixels after rendering; clipping that\n   harmless remainder prevents a stray document scrollbar. Scroll view and\n   the afterword deliberately opt out so the complete article can flow. */\nhtml.book-js body.book-page:not(.book-scroll-view-open):not(.book-afterword-open):not(.book-afterword-ready) {\n  height: 100vh;\n  height: 100dvh;\n  overflow: hidden;\n}\n\n/* Mermaid appends an invisible 6px tooltip at the last pointer coordinate.\n   Keeping it in the viewport layer stops that helper from extending the\n   document beyond the reader's exact 100dvh canvas. */\nbody.book-page .mermaidTooltip {\n  position: fixed !important;\n}\n\nhtml[data-bs-theme='dark'] body.book-page,\nhtml[data-mode='dark'] body.book-page {\n  --book-accent: #8588ff;\n  --book-accent-strong: #a4a6ff;\n  --book-mint: #4ed6b9;\n  --book-ink: #eff1f7;\n  --book-muted: #a9afbf;\n  --book-paper: #171921;\n  --book-paper-soft: #20232d;\n  --book-line: rgba(238, 241, 248, 0.12);\n  --book-marker: rgba(255, 205, 74, 0.3);\n  --book-stage: #0e1017;\n  --book-shadow: 0 38px 90px rgba(0, 0, 0, 0.42), 0 8px 28px rgba(0, 0, 0, 0.24);\n}\n\nbody.book-page #sidebar,\nbody.book-page #topbar-wrapper,\nbody.book-page #back-to-top {\n  display: none !important;\n}\n\nbody.book-page #main-wrapper {\n  margin-left: 0 !important;\n  padding: 0;\n}\n\nbody.book-page #main-wrapper > .container {\n  width: 100%;\n  max-width: none;\n  padding: 0 !important;\n}\n\nbody.book-page #main-wrapper > .container > .row {\n  display: block;\n}\n\nbody.book-page main.book-main {\n  width: 100%;\n  max-width: none;\n}\n\nbody.book-page #tail-wrapper.book-tail {\n  width: min(1120px, calc(100% - 2rem));\n  max-width: 1120px;\n  margin: 0 auto;\n  padding-bottom: 4rem;\n}\n\nhtml.book-js body.book-page:not(.book-afterword-open):not(.book-afterword-ready) #tail-wrapper.book-tail {\n  display: none !important;\n}\n\n.book-afterword-panel[hidden] {\n  display: none !important;\n}\n\n.visual-book {\n  color: var(--book-ink);\n  margin: 0;\n}\n\n.book-reader-shell {\n  box-sizing: border-box;\n  height: 100vh;\n  height: 100dvh;\n  min-height: 100vh;\n  min-height: 100dvh;\n  padding: 0.7rem clamp(1rem, 3vw, 3.25rem) 0.65rem;\n  display: grid;\n  grid-template-rows: 3rem 2px minmax(0, 1fr);\n  row-gap: 0.48rem;\n  position: relative;\n  overflow: hidden;\n  background: var(--book-stage);\n}\n\n.book-reader-shell::before,\n.book-reader-shell::after {\n  display: none;\n}\n\n.book-reader-shell::before {\n  width: 32rem;\n  height: 32rem;\n  left: -22rem;\n  top: 26%;\n}\n\n.book-reader-shell::after {\n  width: 24rem;\n  height: 24rem;\n  right: -16rem;\n  top: 8%;\n}\n\n.book-toolbar,\n.book-progress,\n.book-stage,\n.book-controls,\n.book-reader-hint {\n  position: relative;\n  z-index: 1;\n  width: min(1180px, 100%);\n  margin-inline: auto;\n}\n\n.book-toolbar {\n  min-height: 3rem;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 1rem;\n  margin-bottom: 0;\n}\n\n.book-brand {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.65rem;\n  color: var(--book-ink);\n  text-decoration: none;\n}\n\n.book-brand:hover {\n  color: var(--book-ink);\n  text-decoration: none;\n}\n\n.book-brand-mark {\n  width: 2rem;\n  height: 2rem;\n  border-radius: 0.55rem;\n  display: grid;\n  place-items: center;\n  overflow: hidden;\n  background: #050505 url('/assets/img/logo.png') center / cover no-repeat;\n  box-shadow: 0 7px 16px rgba(17, 24, 39, 0.14);\n}\n\n.book-brand-name {\n  color: var(--book-ink);\n  font-size: 0.78rem;\n  font-weight: 800;\n  letter-spacing: 0.105em;\n}\n\n.book-brand-name b {\n  color: var(--book-accent-strong);\n  font-weight: 900;\n}\n\n.book-toolbar-actions {\n  display: flex;\n  align-items: center;\n  gap: 0.42rem;\n}\n\n.book-tool-button {\n  min-height: 2.45rem;\n  border: 0;\n  border-radius: 0.42rem;\n  padding: 0.55rem 0.9rem;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0.45rem;\n  color: var(--book-muted);\n  background: transparent;\n  box-shadow: none;\n  font-size: 0.78rem;\n  font-weight: 700;\n  line-height: 1;\n  transition: 160ms ease;\n}\n\n.book-tool-button:hover,\n.book-tool-button:focus-visible,\n.book-tool-button[aria-pressed='true'] {\n  color: var(--book-accent-strong);\n  background: color-mix(in srgb, var(--book-ink) 6%, transparent);\n}\n\n.book-theme-button {\n  width: 2.45rem;\n  padding-inline: 0;\n}\n\n.book-theme-button .visually-hidden {\n  display: none !important;\n}\n\n.book-theme-compat {\n  display: none !important;\n}\n\n.book-progress {\n  height: 2px;\n  overflow: hidden;\n  border-radius: 999px;\n  margin-bottom: 0;\n  background: color-mix(in srgb, var(--book-ink) 9%, transparent);\n}\n\n.book-progress > span {\n  display: block;\n  width: 0;\n  height: 100%;\n  border-radius: inherit;\n  background: var(--book-accent);\n  transition: width 360ms cubic-bezier(0.2, 0.7, 0.2, 1);\n}\n\n.book-stage {\n  width: min(1320px, 100%);\n  min-height: 0;\n  height: 100%;\n  perspective: 1600px;\n}\n\n.book-pages {\n  min-height: 0;\n  height: 100%;\n  position: relative;\n}\n\nhtml.book-js .visual-book:not(.is-ready):not(.is-scroll-view) .book-pages {\n  height: 100%;\n}\n\nhtml.book-js .visual-book:not(.is-ready):not(.is-scroll-view) .book-page {\n  position: absolute;\n  inset: 0;\n  height: 100%;\n}\n\nhtml.book-js .visual-book:not(.is-ready):not(.is-scroll-view) .book-page:not(.book-cover) {\n  visibility: hidden;\n  pointer-events: none;\n}\n\nhtml:not(.book-js) .book-toolbar,\nhtml:not(.book-js) .book-progress,\nhtml:not(.book-js) .book-controls,\nhtml:not(.book-js) .book-reader-hint {\n  display: none;\n}\n\nhtml:not(.book-js) .book-reader-shell {\n  height: auto;\n  min-height: 100vh;\n  min-height: 100dvh;\n  display: block;\n  overflow: visible;\n}\n\nhtml:not(.book-js) .book-pages {\n  height: auto;\n}\n\nhtml:not(.book-js) .book-page {\n  position: relative;\n  inset: auto;\n  height: auto;\n  min-height: 100vh;\n  min-height: 100dvh;\n  margin-bottom: 1rem;\n}\n\nhtml:not(.book-js) .book-page-scroll {\n  height: auto;\n  overflow: visible;\n}\n\n.visual-book.is-ready:not(.is-scroll-view) .book-pages {\n  height: 100%;\n}\n\n.visual-book.is-ready:not(.is-scroll-view) .book-page {\n  position: absolute;\n  inset: 0;\n  height: 100%;\n  margin: 0;\n}\n\n.book-page {\n  width: 100%;\n  min-height: 0;\n  overflow: hidden;\n  border: 1px solid color-mix(in srgb, var(--book-line) 82%, transparent);\n  border-radius: clamp(0.35rem, 0.8vw, 0.65rem);\n  color: var(--book-ink);\n  background:\n    linear-gradient(90deg, rgba(23, 32, 51, 0.022) 0, transparent 4.5rem),\n    var(--book-paper);\n  box-shadow: var(--book-shadow);\n  transform-origin: 100% 50%;\n}\n\n.book-page::after {\n  display: none;\n}\n\n.book-page.is-entering-forward {\n  animation: book-page-forward 390ms cubic-bezier(0.2, 0.75, 0.25, 1);\n}\n\n.book-page.is-entering-back {\n  animation: book-page-back 390ms cubic-bezier(0.2, 0.75, 0.25, 1);\n}\n\n@keyframes book-page-forward {\n  from {\n    opacity: 0;\n    transform: translateX(2.2rem) rotateY(-2.2deg) scale(0.992);\n  }\n  to {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes book-page-back {\n  from {\n    opacity: 0;\n    transform: translateX(-2.2rem) rotateY(2.2deg) scale(0.992);\n  }\n  to {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n/* Cover */\n\n.book-cover {\n  display: block;\n  position: relative;\n  overflow: hidden;\n  color: #f7f8ff;\n  border-color: rgba(255, 255, 255, 0.13);\n  background:\n    linear-gradient(90deg, #315efb 0 0.34rem, transparent 0.34rem) 0 clamp(2rem, 8vh, 5.5rem) / 100% clamp(5rem, 16vh, 10rem) no-repeat,\n    #050505;\n}\n\n.book-cover::before {\n  content: '';\n  position: absolute;\n  inset: 0;\n  z-index: 1;\n  display: block;\n  pointer-events: none;\n  background:\n    linear-gradient(90deg, rgba(3, 5, 9, 0.92) 0%, rgba(3, 5, 9, 0.77) 52%, rgba(3, 5, 9, 0.5) 100%),\n    linear-gradient(180deg, rgba(3, 5, 9, 0.15) 0%, rgba(3, 5, 9, 0.18) 50%, rgba(3, 5, 9, 0.72) 100%);\n}\n\n.book-cover-photo {\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  inset: 0;\n  z-index: 0;\n  object-fit: cover;\n  object-position: var(--book-cover-position, center center);\n  filter: saturate(0.86) contrast(1.04);\n  transform: scale(1.012);\n}\n\n.book-cover-copy {\n  width: 100%;\n  height: 100%;\n  min-width: 0;\n  padding: clamp(3rem, 7vw, 7rem);\n  display: flex;\n  align-items: flex-start;\n  justify-content: center;\n  position: relative;\n  z-index: 2;\n}\n\n.book-kicker {\n  margin: 0 0 1.45rem;\n  display: flex;\n  align-items: center;\n  gap: 0.6rem;\n  color: inherit;\n  font-size: 0.7rem;\n  font-weight: 850;\n  letter-spacing: 0.14em;\n  text-transform: uppercase;\n}\n\n.book-kicker span {\n  display: inline-flex;\n  align-items: center;\n  min-height: 1.75rem;\n  padding: 0;\n  border: 0;\n  border-radius: 0;\n  background: transparent;\n}\n\n.book-kicker span + span::before {\n  content: '/';\n  margin-right: 0.6rem;\n  color: var(--book-accent);\n}\n\n.book-cover h1 {\n  width: min(28ch, 100%);\n  max-width: 100%;\n  margin: 0;\n  color: #fff;\n  font-size: clamp(3.4rem, 7.2vw, 7.8rem);\n  font-weight: 800;\n  line-height: 0.98;\n  letter-spacing: -0.055em;\n  word-break: keep-all;\n  overflow-wrap: anywhere;\n  text-wrap: balance;\n  text-shadow: 0 0.08em 0.32em rgba(0, 0, 0, 0.28);\n}\n\n.book-cover-description {\n  max-width: 44rem;\n  margin: 1.45rem 0 0;\n  color: rgba(245, 247, 255, 0.72);\n  font-size: clamp(0.98rem, 1.3vw, 1.18rem);\n  line-height: 1.72;\n  word-break: keep-all;\n}\n\n.book-cover-meta {\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  gap: 0.65rem 1rem;\n  margin-bottom: 1.2rem;\n  color: rgba(245, 247, 255, 0.68);\n  font-size: 0.74rem;\n}\n\n.book-cover-meta > span {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.38rem;\n}\n\n.book-cover-meta > span + span::before {\n  display: none;\n}\n\n.book-cover-meta em,\n.book-cover-meta time {\n  color: inherit;\n  font-style: normal;\n}\n\n.book-cover-meta #read-time {\n  color: inherit;\n}\n\n.book-start-button {\n  min-height: 3.25rem;\n  padding: 0.82rem 1.2rem 0.82rem 1.35rem;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 1.2rem;\n  border: 0;\n  border-radius: 0.42rem;\n  color: #13172b;\n  background: #fff;\n  box-shadow: none;\n  font-size: 0.88rem;\n  font-weight: 850;\n  transition: 170ms ease;\n}\n\n.book-start-button:hover,\n.book-start-button:focus-visible {\n  color: #13172b;\n  transform: translateY(-1px);\n  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.22);\n}\n\n.book-start-button i {\n  width: 1.8rem;\n  height: 1.8rem;\n  border-radius: 50%;\n  display: grid;\n  place-items: center;\n  color: #fff;\n  background: var(--book-accent);\n}\n\n.book-cover-hint {\n  margin: 0.85rem 0 0;\n  color: rgba(245, 247, 255, 0.48);\n  font-size: 0.7rem;\n}\n\n.book-cover-visual {\n  min-width: 0;\n  margin: 0;\n  position: relative;\n  display: grid;\n  place-items: center;\n  overflow: hidden;\n  border-radius: 0;\n  background: #f5f5f2;\n  box-shadow: inset 1px 0 0 rgba(5, 5, 5, 0.12);\n}\n\n.book-cover-graphic {\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  inset: 0;\n  overflow: hidden;\n  color: #0a0a0a;\n  background:\n    linear-gradient(90deg, rgba(5, 5, 5, 0.08) 1px, transparent 1px) 0 0 / 25% 100%,\n    #f5f5f2;\n}\n\n.book-cover-graphic-number {\n  position: absolute;\n  left: 7%;\n  bottom: -0.12em;\n  color: #0a0a0a;\n  font-family: var(--opsoai-font-display) !important;\n  font-size: clamp(15rem, 27vw, 29rem);\n  font-weight: 800;\n  line-height: 0.82;\n  letter-spacing: -0.11em;\n}\n\n.book-cover-graphic-ring {\n  width: clamp(7rem, 18vw, 14rem);\n  aspect-ratio: 1;\n  position: absolute;\n  top: 14%;\n  right: 10%;\n  border: clamp(0.7rem, 1.35vw, 1.25rem) solid #315efb;\n  border-radius: 50%;\n  mix-blend-mode: multiply;\n}\n\n.book-cover-graphic-rule {\n  width: 72%;\n  height: 2px;\n  position: absolute;\n  top: 31%;\n  left: 14%;\n  background: #0a0a0a;\n  transform: rotate(-11deg);\n  transform-origin: center;\n}\n\n.book-cover-graphic-dot {\n  width: clamp(2.2rem, 5vw, 4.5rem);\n  aspect-ratio: 1;\n  position: absolute;\n  top: 25%;\n  left: 18%;\n  border-radius: 50%;\n  background: #20ad91;\n}\n\n.book-cover-orbit {\n  display: none;\n}\n\n.book-cover-orbit-one {\n  width: 10rem;\n  height: 10rem;\n  right: -4rem;\n  top: -3rem;\n}\n\n.book-cover-orbit-two {\n  width: 4.5rem;\n  height: 4.5rem;\n  left: -1.6rem;\n  bottom: 18%;\n}\n\n.book-cover-index {\n  position: absolute;\n  right: 1.15rem;\n  top: 1rem;\n  z-index: 4;\n  margin: 0;\n  display: flex;\n  gap: 0.24rem;\n  color: rgba(5, 5, 5, 0.62);\n  font-size: 0.66rem;\n  font-weight: 800;\n  letter-spacing: 0.13em;\n  writing-mode: vertical-rl;\n}\n\n.book-cover-index span {\n  color: var(--book-mint);\n}\n\n/* Interior pages */\n\n.book-content-page::before {\n  content: attr(data-book-chapter);\n  position: absolute;\n  right: 1.5rem;\n  bottom: -3.5rem;\n  color: var(--book-ink);\n  font-family: var(--opsoai-font-display);\n  font-size: clamp(12rem, 24vw, 26rem);\n  font-weight: 800;\n  line-height: 1;\n  opacity: 0.018;\n  pointer-events: none;\n}\n\n.book-page-scroll {\n  min-width: 0;\n  min-height: 0;\n  height: 100%;\n  position: relative;\n  z-index: 1;\n  overflow: hidden;\n  overscroll-behavior: contain;\n  padding: clamp(1.55rem, 3.4vw, 3.35rem) clamp(1.25rem, 5.2vw, 5.5rem) 3rem;\n  scrollbar-width: thin;\n  scrollbar-color: color-mix(in srgb, var(--book-accent) 28%, transparent) transparent;\n}\n\n.book-page-scroll::-webkit-scrollbar {\n  width: 7px;\n}\n\n.book-page-scroll::-webkit-scrollbar-thumb {\n  border-radius: 999px;\n  background: color-mix(in srgb, var(--book-accent) 24%, transparent);\n}\n\n.book-page-folio {\n  width: min(940px, 100%);\n  margin: 0 auto clamp(1.25rem, 2.4vw, 2rem);\n  padding-bottom: 0.72rem;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  border-bottom: 1px solid var(--book-line);\n  color: var(--book-muted);\n  font-size: 0.64rem;\n  font-weight: 800;\n  letter-spacing: 0.14em;\n}\n\n.book-page-content {\n  width: min(940px, 100%);\n  max-width: 940px;\n  margin: 0 auto;\n  color: var(--book-ink);\n  font-size: clamp(1rem, 1.05vw, 1.095rem);\n  line-height: 1.83;\n  letter-spacing: -0.016em;\n  word-break: keep-all;\n  overflow-wrap: anywhere;\n}\n\n.book-page-content > :where(h2, h3, h4, h5, p, ul, ol, blockquote, details) {\n  width: min(740px, 100%);\n  margin-left: auto;\n  margin-right: auto;\n}\n\n.book-page-content > h2 {\n  margin-top: 0.1rem;\n  margin-bottom: 1.65rem;\n  padding: 0;\n  color: var(--book-ink);\n  font-size: clamp(1.8rem, 3.1vw, 3.15rem);\n  font-weight: 800;\n  line-height: 1.18;\n  letter-spacing: -0.045em;\n  text-wrap: balance;\n  word-break: keep-all;\n}\n\n.book-page-content > h2::before {\n  display: none;\n}\n\n.book-page.is-active .book-page-content > :where(figure, .chartjs-wrap, .mermaid, .table-wrapper, .book-prologue-art) {\n  animation: book-visual-in 520ms 90ms cubic-bezier(0.2, 0.75, 0.25, 1) both;\n}\n\n@keyframes book-visual-in {\n  from {\n    opacity: 0;\n    clip-path: inset(0 12% 0 0);\n    transform: translateY(0.7rem);\n  }\n  to {\n    opacity: 1;\n    clip-path: inset(0);\n    transform: none;\n  }\n}\n\n.book-page-content h3 {\n  margin-top: 2rem;\n  color: var(--book-ink);\n  font-size: 1.28rem;\n  font-weight: 800;\n  line-height: 1.4;\n  letter-spacing: -0.025em;\n}\n\n.book-page-content p {\n  margin-top: 0;\n  margin-bottom: 1.15rem;\n}\n\n/* Markdown bold already carries the author's semantic emphasis. Render only\n   those phrases as a restrained marker stroke instead of guessing importance\n   from every sentence. */\n.book-page-content :where(p, li, blockquote, figcaption) strong {\n  padding-inline: 0.06em;\n  background-image: linear-gradient(\n    transparent 57%,\n    var(--book-marker) 57%,\n    var(--book-marker) 91%,\n    transparent 91%\n  );\n  -webkit-box-decoration-break: clone;\n  box-decoration-break: clone;\n}\n\n.book-prologue-art {\n  width: 100%;\n  min-height: clamp(10rem, 26dvh, 15rem);\n  margin: 1.5rem auto 0;\n  border: 1px solid var(--book-line);\n  border-radius: 0.48rem;\n  background-image:\n    linear-gradient(180deg, transparent 58%, rgba(5, 5, 5, 0.14)),\n    var(--book-prologue-image);\n  background-position: center;\n  background-size: cover;\n  background-repeat: no-repeat;\n  box-shadow: 0 10px 28px rgba(29, 35, 66, 0.06);\n}\n\n.book-prologue-art.is-graphic {\n  background-color: #f5f5f2;\n  background-image: var(--book-prologue-image);\n  background-size: contain;\n}\n\n.book-page-content a {\n  color: var(--book-accent-strong);\n  text-decoration-color: color-mix(in srgb, var(--book-accent) 32%, transparent);\n  text-underline-offset: 0.2em;\n}\n\n.book-page-content a:hover {\n  text-decoration-thickness: 2px;\n}\n\n.book-page-content .anchor {\n  opacity: 0;\n}\n\n.book-page-content :where(ul, ol) {\n  padding-left: 1.45rem;\n}\n\n.book-page-content li {\n  margin-block: 0.38rem;\n}\n\n/* Directory posts turn each three-item chunk into a compact card page.\n * A desktop spread therefore carries six useful references at a glance. */\n.visual-book[data-book-directory='true'] .book-page-content > ol {\n  display: grid;\n  gap: 0.68rem;\n  padding: 0;\n  list-style-position: inside;\n}\n\n.visual-book[data-book-directory='true'] .book-page-content > ol > li {\n  margin: 0;\n  padding: 0.82rem 0.9rem;\n  border: 1px solid color-mix(in srgb, var(--book-accent) 18%, var(--book-line));\n  border-radius: 0.44rem;\n  background: color-mix(in srgb, var(--book-accent) 3%, var(--book-paper-soft));\n  font-size: 0.9rem;\n  line-height: 1.58;\n}\n\n.visual-book[data-book-directory='true'] .book-page-content > ol > li::marker {\n  color: var(--book-accent-strong);\n  font-family: var(--opsoai-font-display);\n  font-weight: 800;\n}\n\n.visual-book[data-book-directory='true'] .book-page-content > ol > li strong:first-child a {\n  color: var(--book-ink);\n  font-family: var(--opsoai-font-display);\n  font-weight: 800;\n  text-decoration-thickness: 1px;\n}\n\n.book-page-content blockquote,\n.book-page-content .prompt-info,\n.book-page-content .prompt-tip,\n.book-page-content .prompt-warning,\n.book-page-content .prompt-danger {\n  position: relative;\n  margin-block: 1.6rem;\n  padding: 1.15rem 1.25rem 1.15rem 1.4rem;\n  border: 0;\n  border-radius: 0.38rem;\n  color: var(--book-ink);\n  background: color-mix(in srgb, var(--book-accent) 7%, var(--book-paper-soft));\n  box-shadow: inset 3px 0 0 color-mix(in srgb, var(--book-accent) 78%, transparent);\n}\n\n.book-page-content blockquote::before {\n  color: var(--book-accent);\n}\n\n.book-page-content > :where(figure, .table-wrapper, .chartjs-wrap, .mermaid, .highlight, pre) {\n  width: min(940px, 100%);\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.book-page-content figure,\n.book-page-content .news-source-image {\n  position: relative;\n  overflow: hidden;\n  margin-block: 1.5rem 1.85rem;\n  padding: 0.42rem;\n  border: 1px solid var(--book-line);\n  border-radius: 0.48rem;\n  background: var(--book-paper-soft);\n  box-shadow: 0 10px 28px rgba(29, 35, 66, 0.06);\n}\n\n.book-page-content figure > .img-link,\n.book-page-content .news-source-image > .img-link {\n  width: 100%;\n  display: block;\n  overflow: hidden;\n  border-radius: 0.28rem;\n}\n\n.book-page-content figure img,\n.book-page-content .news-source-image img {\n  width: 100%;\n  max-height: 47vh;\n  margin: 0;\n  border-radius: 0.28rem;\n  object-fit: contain;\n  background: color-mix(in srgb, var(--book-paper-soft) 88%, black);\n}\n\n.book-page-content .book-lead-visual {\n  margin-block: 0.75rem !important;\n  padding: 0.45rem;\n}\n\n.book-page-content .book-lead-visual-image {\n  aspect-ratio: var(--book-visual-ratio, auto);\n}\n\n.book-page-content .book-lead-visual figcaption {\n  display: flex;\n  align-items: baseline;\n  justify-content: space-between;\n  flex-wrap: wrap;\n  gap: 0.35rem 0.8rem;\n}\n\n.book-page-content .book-lead-visual figcaption a {\n  flex: 0 0 auto;\n  font-weight: 750;\n}\n\n.book-page-content .manim-visual video {\n  width: 100%;\n  height: auto;\n  max-height: 39dvh;\n  display: block;\n  border-radius: 0.28rem;\n  object-fit: contain;\n  background: #0b0d0e;\n}\n\n.book-page[data-book-chunk-kind='visual'] .book-page-content .manim-visual {\n  margin-block: 0.75rem !important;\n}\n\n.book-page[data-book-chunk-kind='visual'] .book-page-content .manim-visual figcaption {\n  padding-bottom: 0.15rem;\n}\n\n.book-page-content figcaption {\n  margin: 0;\n  padding: 0.72rem 0.82rem 0.48rem;\n  color: var(--book-muted);\n  font-size: 0.72rem;\n  line-height: 1.55;\n  text-align: left;\n}\n\n.book-page-content .table-wrapper {\n  max-height: 50vh;\n  margin-block: 1.55rem !important;\n  overflow: auto;\n  border: 1px solid var(--book-line);\n  border-radius: 0.48rem;\n  background: var(--book-paper);\n  box-shadow: 0 12px 32px rgba(29, 35, 66, 0.06);\n}\n\n.book-page-content .table-wrapper table {\n  width: 100%;\n  margin: 0;\n  color: var(--book-ink);\n  font-size: 0.82rem;\n  line-height: 1.55;\n}\n\n.book-page-content .table-wrapper th {\n  position: sticky;\n  top: 0;\n  z-index: 1;\n  color: var(--book-ink);\n  background: color-mix(in srgb, var(--book-accent) 10%, var(--book-paper));\n}\n\n.book-page-content .table-wrapper :where(th, td) {\n  vertical-align: top;\n  white-space: normal;\n}\n\n.book-page-content .table-wrapper tr:nth-child(even) td {\n  background: color-mix(in srgb, var(--book-paper-soft) 74%, transparent);\n}\n\n.book-page-content .chartjs-wrap {\n  max-width: 940px !important;\n  height: clamp(280px, 43vh, 440px) !important;\n  margin-block: 1.6rem !important;\n  padding: 1rem 1.15rem !important;\n  overflow: hidden;\n  border-color: var(--book-line) !important;\n  border-radius: 0.48rem !important;\n  box-shadow: 0 10px 28px rgba(29, 35, 66, 0.06);\n}\n\n.book-page-content .mermaid {\n  max-width: 940px;\n  max-height: 49vh;\n  margin-block: 1.6rem !important;\n  padding: 1.15rem;\n  overflow: hidden;\n  border: 1px solid var(--book-line);\n  border-radius: 0.48rem;\n  background: var(--book-paper-soft);\n  box-shadow: 0 10px 28px rgba(29, 35, 66, 0.05);\n}\n\n.book-page-content .mermaid svg {\n  display: block;\n  width: 100% !important;\n  height: auto !important;\n  max-width: 100% !important;\n  max-height: 39vh;\n  margin: auto;\n}\n\n.book-page[data-book-chunk-kind='chart'] .book-page-content .chartjs-wrap {\n  height: clamp(190px, 34dvh, 340px) !important;\n}\n\n.book-page[data-book-chunk-kind='flow'] .book-page-content .mermaid,\n.book-page[data-book-chunk-kind='table'] .book-page-content .table-wrapper {\n  max-height: 36dvh;\n}\n\n.book-page[data-book-chunk-kind='flow'] .book-page-content .mermaid svg {\n  max-height: calc(36dvh - 2.3rem);\n}\n\n.book-page[data-book-chunk-kind='visual'] .book-prologue-art {\n  min-height: clamp(190px, 36dvh, 360px);\n}\n\n.book-page.book-density-compact .book-page-scroll {\n  padding-top: 1rem;\n  padding-bottom: 1rem;\n}\n\n.book-page.book-density-compact .book-page-folio {\n  margin-bottom: 0.78rem;\n}\n\n.book-page.book-density-compact .book-page-content {\n  font-size: 0.9rem;\n  line-height: 1.64;\n}\n\n.book-page.book-density-compact .book-page-content > h2 {\n  margin-bottom: 0.82rem;\n  font-size: clamp(1.3rem, 2vw, 1.9rem);\n}\n\n.book-page.book-density-compact .book-page-content > :where(p, ul, ol, blockquote, details),\n.book-page.book-density-compact .book-page-content > :where(figure, .chartjs-wrap, .mermaid, .table-wrapper) {\n  margin-top: 0.72rem !important;\n  margin-bottom: 0.72rem !important;\n}\n\n.book-page.book-density-tight .book-page-scroll {\n  padding-top: 0.72rem;\n  padding-bottom: 0.72rem;\n}\n\n.book-page.book-density-tight .book-page-folio {\n  margin-bottom: 0.55rem;\n  padding-bottom: 0.45rem;\n}\n\n.book-page.book-density-tight .book-page-content {\n  font-size: 0.82rem;\n  line-height: 1.52;\n}\n\n.book-page.book-density-tight .book-page-content > h2 {\n  margin-bottom: 0.62rem;\n  font-size: clamp(1.14rem, 1.8vw, 1.55rem);\n}\n\n.book-page.book-density-tight .book-page-content .chartjs-wrap {\n  height: clamp(165px, 30dvh, 280px) !important;\n}\n\n.book-page.book-density-tight .book-page-content .mermaid,\n.book-page.book-density-tight .book-page-content .table-wrapper {\n  max-height: 31dvh;\n}\n\n.book-page-content .highlight,\n.book-page-content pre {\n  max-height: 48vh;\n  overflow: auto;\n  border-radius: 1rem;\n}\n\n.book-page-content .footnotes {\n  width: min(740px, 100%);\n  margin-inline: auto;\n}\n\n/* Project facts keep their original data while matching the book surface. */\n\n.book-content-page .proj {\n  width: min(940px, 100%);\n  margin: 0 auto 1.6rem;\n  padding: 1rem 1.1rem 1.15rem;\n  border: 1px solid var(--book-line);\n  border-radius: 1.1rem;\n  background: var(--book-paper-soft);\n}\n\n.book-content-page .proj-h {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  margin-bottom: 0.9rem;\n  color: var(--book-ink);\n  font-size: 0.78rem;\n  font-weight: 850;\n}\n\n.book-content-page .proj-h > i {\n  color: var(--book-accent-strong);\n}\n\n.book-content-page .proj.is-github .proj-h > i {\n  font-size: 1.05rem;\n}\n\n.book-content-page .proj-h .sep {\n  flex: 1;\n  height: 1px;\n  background: var(--book-line);\n}\n\n.book-content-page .proj-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(84px, 1fr));\n  gap: 0.55rem;\n}\n\n.book-content-page .proj-t {\n  padding: 0.68rem 0.3rem 0.72rem;\n  text-align: center;\n  border: 1px solid var(--book-line);\n  border-radius: 0.78rem;\n  background: color-mix(in srgb, var(--book-accent) 5%, var(--book-paper));\n}\n\n.book-content-page .proj-t > i {\n  color: var(--book-accent-strong);\n  font-size: 0.8rem;\n}\n\n.book-content-page .proj-t .n {\n  margin-top: 0.25rem;\n  display: block;\n  color: var(--book-ink);\n  font-size: 1rem;\n  font-weight: 850;\n  line-height: 1.15;\n  font-variant-numeric: tabular-nums;\n  word-break: break-word;\n}\n\n.book-content-page .proj-t .n.sm {\n  font-size: 0.82rem;\n}\n\n.book-content-page .proj-t .l {\n  margin-top: 0.2rem;\n  display: block;\n  color: var(--book-muted);\n  font-size: 0.62rem;\n}\n\n.book-content-page .proj-langs {\n  margin-top: 0.85rem;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.35rem;\n}\n\n.book-content-page .proj-langs .lg {\n  padding: 0.18rem 0.55rem;\n  border-radius: 999px;\n  color: var(--book-ink);\n  background: color-mix(in srgb, var(--book-ink) 7%, transparent);\n  font-size: 0.66rem;\n}\n\n.book-content-page .proj-langs .lg.top {\n  color: var(--book-accent-strong);\n  background: color-mix(in srgb, var(--book-accent) 11%, transparent);\n  font-weight: 750;\n}\n\n/* Existing top-of-post resource rows become deliberate source buttons. */\n\n.book-page-content .post-links {\n  width: min(740px, 100%);\n  margin: 0 auto 1.5rem;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n}\n\n.book-page-content .post-links a.post-link {\n  min-height: 2.45rem;\n  padding: 0.55rem 0.86rem;\n  display: inline-flex;\n  align-items: center;\n  gap: 0.4rem;\n  border: 1px solid var(--book-line);\n  border-radius: 0.75rem;\n  color: var(--book-ink);\n  background: var(--book-paper-soft);\n  font-size: 0.78rem;\n  font-weight: 750;\n  text-decoration: none;\n  transition: 150ms ease;\n}\n\n.book-page-content .post-links a.post-link:hover {\n  border-color: color-mix(in srgb, var(--book-accent) 40%, transparent);\n  color: var(--book-accent-strong);\n  transform: translateY(-1px);\n}\n\n.book-page-content .post-links i {\n  width: 1.65rem;\n  height: 1.65rem;\n  flex: 0 0 1.65rem;\n  display: grid;\n  place-items: center;\n  border-radius: 0.45rem;\n  color: var(--book-accent-strong);\n  background: color-mix(in srgb, var(--book-accent) 8%, var(--book-paper));\n  font-size: 0.76rem;\n}\n\n.book-page-content .post-links a.post-link > span:not(.visually-hidden) {\n  min-width: 0;\n  overflow-wrap: anywhere;\n}\n\n/* Visible question-and-answer cards mirror the FAQPage JSON-LD. Answers stay\n   inside the 100dvh leaf instead of forcing the whole document to scroll. */\n.book-faq-item {\n  overflow: hidden;\n  border: 1px solid var(--book-line);\n  border-radius: 0.9rem;\n  background: color-mix(in srgb, var(--book-paper-soft) 72%, var(--book-paper));\n}\n\n.book-faq-item + .book-faq-item {\n  margin-top: 0.7rem;\n}\n\n.book-faq-item summary {\n  min-height: 3.6rem;\n  padding: 0.8rem 1rem;\n  display: grid;\n  grid-template-columns: 1.7rem minmax(0, 1fr) 1.5rem;\n  align-items: center;\n  gap: 0.6rem;\n  color: var(--book-ink);\n  cursor: pointer;\n  font-weight: 800;\n  line-height: 1.45;\n  list-style: none;\n}\n\n.book-faq-item summary::-webkit-details-marker {\n  display: none;\n}\n\n.book-faq-item summary::after {\n  content: '+';\n  width: 1.5rem;\n  height: 1.5rem;\n  display: grid;\n  place-items: center;\n  border-radius: 50%;\n  color: var(--book-accent-strong);\n  background: color-mix(in srgb, var(--book-accent) 9%, transparent);\n  font-size: 1rem;\n  line-height: 1;\n}\n\n.book-faq-item[open] summary::after {\n  content: '−';\n}\n\n.book-faq-letter {\n  width: 1.7rem;\n  height: 1.7rem;\n  display: grid;\n  place-items: center;\n  border-radius: 0.5rem;\n  color: #fff;\n  background: var(--book-accent);\n  font-size: 0.7rem;\n  font-weight: 900;\n}\n\n.book-faq-answer {\n  max-height: min(34dvh, 18rem);\n  padding: 0 1rem 1rem;\n  display: grid;\n  grid-template-columns: 1.7rem minmax(0, 1fr);\n  align-items: start;\n  gap: 0.6rem;\n  overflow: auto;\n  color: var(--book-muted);\n  line-height: 1.68;\n}\n\n.book-faq-answer .book-faq-letter {\n  color: var(--book-accent-strong);\n  background: color-mix(in srgb, var(--book-accent) 10%, var(--book-paper));\n}\n\n.book-faq-answer p:last-child {\n  margin-bottom: 0;\n}\n\n/* Completion page */\n\n.book-finish {\n  display: grid;\n  place-items: center;\n  text-align: center;\n  background:\n    radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--book-accent) 14%, transparent), transparent 20rem),\n    var(--book-paper);\n}\n\n.book-finish-inner {\n  width: min(40rem, calc(100% - 2rem));\n  padding: 2rem;\n}\n\n.book-finish-mark {\n  width: 4.3rem;\n  height: 4.3rem;\n  margin: 0 auto 1.45rem;\n  display: grid;\n  place-items: center;\n  border-radius: 1.35rem;\n  color: #fff;\n  background: linear-gradient(145deg, var(--book-accent), var(--book-mint));\n  box-shadow: 0 18px 42px color-mix(in srgb, var(--book-accent) 28%, transparent);\n  transform: rotate(-4deg);\n}\n\n.book-finish .book-kicker {\n  display: block;\n  margin-bottom: 0.8rem;\n  color: var(--book-accent-strong);\n}\n\n.book-finish h2 {\n  margin: 0;\n  color: var(--book-ink);\n  font-size: clamp(2rem, 4vw, 3.7rem);\n  font-weight: 900;\n  letter-spacing: -0.045em;\n}\n\n.book-finish h2 + p {\n  max-width: 34rem;\n  margin: 1rem auto 1.6rem;\n  color: var(--book-muted);\n  line-height: 1.75;\n  word-break: keep-all;\n}\n\n.book-publication-meta {\n  margin: -0.55rem auto 1.35rem;\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: 0.45rem 0.9rem;\n  color: var(--book-muted);\n  font-size: 0.72rem;\n  font-variant-numeric: tabular-nums;\n}\n\n.book-publication-meta :where(a, time) {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.35rem;\n  color: inherit;\n  text-decoration: none;\n}\n\n.book-publication-meta a:hover {\n  color: var(--book-accent-strong);\n}\n\n.book-finish-actions {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  gap: 0.55rem;\n}\n\n.book-primary-action,\n.book-secondary-action {\n  min-height: 2.85rem;\n  padding: 0.7rem 1rem;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0.45rem;\n  border: 1px solid var(--book-line);\n  border-radius: 0.8rem;\n  font-size: 0.8rem;\n  font-weight: 800;\n  text-decoration: none;\n}\n\n.book-primary-action {\n  border-color: transparent;\n  color: #fff;\n  background: var(--book-accent);\n}\n\n.book-primary-action:hover {\n  color: #fff;\n  background: var(--book-accent-strong);\n}\n\n.book-secondary-action {\n  color: var(--book-ink);\n  background: var(--book-paper-soft);\n}\n\n.book-secondary-action:hover {\n  color: var(--book-accent-strong);\n  border-color: color-mix(in srgb, var(--book-accent) 34%, transparent);\n  text-decoration: none;\n}\n\n.book-afterword-link {\n  margin: 1.35rem auto 0;\n  padding: 0.35rem;\n  display: inline-flex;\n  align-items: center;\n  gap: 0.42rem;\n  border: 0;\n  color: var(--book-muted);\n  background: transparent;\n  font-size: 0.75rem;\n  font-weight: 700;\n}\n\n.book-afterword-link:hover {\n  color: var(--book-accent-strong);\n}\n\n/* Navigation */\n\n.book-controls {\n  width: 100%;\n  position: absolute;\n  inset: 0;\n  z-index: 20;\n  margin: 0;\n  pointer-events: none;\n}\n\n.book-page-button {\n  width: 3.1rem;\n  height: 3.1rem;\n  min-width: 0;\n  min-height: 0;\n  padding: 0;\n  position: absolute;\n  top: calc(50% + 1.6rem);\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border: 1px solid color-mix(in srgb, var(--book-line) 90%, transparent);\n  border-radius: 50%;\n  color: var(--book-ink);\n  background: color-mix(in srgb, var(--book-paper) 92%, transparent);\n  box-shadow: 0 9px 26px rgba(17, 24, 39, 0.13);\n  font-size: 0.79rem;\n  font-weight: 800;\n  transition: 150ms ease;\n  transform: translateY(-50%);\n  pointer-events: auto;\n  backdrop-filter: blur(12px);\n}\n\n.book-page-button span {\n  width: 1px;\n  height: 1px;\n  position: absolute;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n}\n\n.book-page-button-prev {\n  left: max(0.25rem, calc((100% - 1320px) / 2 - 3.6rem));\n}\n\n.book-page-button-next {\n  right: max(0.25rem, calc((100% - 1320px) / 2 - 3.6rem));\n}\n\n.book-page-button:hover:not(:disabled),\n.book-page-button:focus-visible:not(:disabled) {\n  color: var(--book-accent-strong);\n  border-color: color-mix(in srgb, var(--book-accent) 35%, var(--book-line));\n  background: var(--book-paper);\n  transform: translateY(-50%) scale(1.06);\n}\n\n.book-page-button:disabled {\n  pointer-events: none;\n  opacity: 0;\n}\n\n.book-page-status {\n  display: none;\n}\n\n.book-page-label {\n  max-width: 20rem;\n  display: block;\n  overflow: hidden;\n  color: var(--book-muted);\n  font-size: 0.65rem;\n  font-weight: 700;\n  line-height: 1.2;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.book-page-numbers {\n  margin-top: 0.18rem;\n  display: flex;\n  justify-content: center;\n  gap: 0.36rem;\n  color: var(--book-muted);\n  font-size: 0.72rem;\n  font-variant-numeric: tabular-nums;\n}\n\n.book-page-numbers b {\n  color: var(--book-ink);\n  font-size: 0.86rem;\n}\n\n.book-reader-hint {\n  display: none;\n}\n\n.book-reader-hint kbd {\n  min-width: 1.25rem;\n  margin-inline: 0.1rem;\n  padding: 0.12rem 0.25rem;\n  border: 1px solid var(--book-line);\n  border-bottom-width: 2px;\n  border-radius: 0.3rem;\n  color: var(--book-muted);\n  background: color-mix(in srgb, var(--book-paper) 70%, transparent);\n  box-shadow: none;\n  font-size: 0.62rem;\n}\n\n/* Contents dialog */\n\n.book-toc-dialog {\n  width: min(35rem, calc(100% - 2rem));\n  max-height: min(78vh, 48rem);\n  padding: 0;\n  overflow: hidden;\n  border: 1px solid var(--book-line);\n  border-radius: 1.35rem;\n  color: var(--book-ink);\n  background: var(--book-paper);\n  box-shadow: 0 38px 100px rgba(12, 16, 35, 0.35);\n}\n\n.book-toc-dialog::backdrop {\n  background: rgba(8, 11, 24, 0.62);\n  backdrop-filter: blur(8px);\n}\n\n.book-toc-head {\n  padding: 1.35rem 1.45rem 1rem;\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  gap: 1rem;\n  border-bottom: 1px solid var(--book-line);\n}\n\n.book-toc-head p {\n  margin: 0 0 0.3rem;\n  color: var(--book-accent-strong);\n  font-size: 0.62rem;\n  font-weight: 900;\n  letter-spacing: 0.16em;\n}\n\n.book-toc-head h2 {\n  margin: 0;\n  color: var(--book-ink);\n  font-size: 1.4rem;\n  font-weight: 880;\n  letter-spacing: -0.035em;\n}\n\n.book-toc-head button {\n  width: 2.35rem;\n  height: 2.35rem;\n  border: 1px solid var(--book-line);\n  border-radius: 50%;\n  color: var(--book-muted);\n  background: var(--book-paper-soft);\n}\n\n.book-toc-list {\n  max-height: min(54vh, 34rem);\n  margin: 0;\n  padding: 0.65rem;\n  overflow: auto;\n  list-style: none;\n}\n\n.book-toc-list li {\n  margin: 0;\n}\n\n.book-toc-list button {\n  width: 100%;\n  min-height: 3.1rem;\n  padding: 0.65rem 0.78rem;\n  display: grid;\n  grid-template-columns: 2.1rem 1fr auto;\n  align-items: center;\n  gap: 0.55rem;\n  border: 0;\n  border-radius: 0.72rem;\n  color: var(--book-ink);\n  background: transparent;\n  text-align: left;\n}\n\n.book-toc-list button:hover,\n.book-toc-list button.is-current {\n  color: var(--book-accent-strong);\n  background: color-mix(in srgb, var(--book-accent) 8%, transparent);\n}\n\n.book-toc-number {\n  color: var(--book-muted);\n  font-size: 0.62rem;\n  font-weight: 850;\n  font-variant-numeric: tabular-nums;\n}\n\n.book-toc-title {\n  overflow: hidden;\n  font-size: 0.8rem;\n  font-weight: 760;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.book-toc-page {\n  color: var(--book-muted);\n  font-size: 0.65rem;\n  font-variant-numeric: tabular-nums;\n}\n\n.book-toc-foot {\n  padding: 0.85rem 1.45rem;\n  display: flex;\n  justify-content: space-between;\n  border-top: 1px solid var(--book-line);\n  color: var(--book-muted);\n  background: var(--book-paper-soft);\n  font-size: 0.67rem;\n}\n\n/* Desktop opens like a real book: two independently scrollable 100dvh pages. */\n\n@media (min-width: 768px) {\n  /* Reserve real side gutters so both page arrows sit beside the paper,\n     rather than covering its text or artwork. */\n  .book-stage {\n    width: min(1320px, calc(100% - 4rem));\n  }\n}\n\n@media (min-width: 1024px) {\n  .visual-book.is-spread:not(.is-scroll-view) .book-page.is-spread-left,\n  .visual-book.is-spread:not(.is-scroll-view) .book-page.is-spread-right,\n  .visual-book.has-unpaired-page:not(.is-scroll-view) .book-page.is-spread-solo {\n    width: calc(50% - 0.24rem);\n    top: 0;\n    bottom: 0;\n  }\n\n  .visual-book.is-spread:not(.is-scroll-view) .book-page.is-spread-left,\n  .visual-book.has-unpaired-page:not(.is-scroll-view) .book-page.is-spread-solo {\n    right: auto;\n    left: 0;\n    border-radius: 0.55rem 0.08rem 0.08rem 0.55rem;\n    box-shadow: -12px 20px 42px rgba(22, 28, 40, 0.08);\n    transform-origin: 100% 50%;\n  }\n\n  .visual-book.is-spread:not(.is-scroll-view) .book-page.is-spread-right {\n    right: 0;\n    left: auto;\n    border-radius: 0.08rem 0.55rem 0.55rem 0.08rem;\n    box-shadow: 12px 20px 42px rgba(22, 28, 40, 0.08);\n    transform-origin: 0 50%;\n  }\n\n  .visual-book.is-spread:not(.is-scroll-view) .book-page.is-spread-solo:not(.book-content-page) {\n    width: 100%;\n    inset: 0;\n  }\n\n  .visual-book.has-open-spread .book-pages::after,\n  .visual-book.has-unpaired-page .book-pages::after {\n    content: '';\n    width: 1.05rem;\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 50%;\n    z-index: 5;\n    pointer-events: none;\n    background: linear-gradient(90deg, rgba(17, 24, 39, 0.08), rgba(255, 255, 255, 0.7) 46%, rgba(17, 24, 39, 0.1));\n    filter: blur(2px);\n    transform: translateX(-50%);\n  }\n\n  .visual-book.has-unpaired-page .book-pages::before {\n    content: '';\n    width: calc(50% - 0.24rem);\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    border: 1px solid color-mix(in srgb, var(--book-line) 82%, transparent);\n    border-radius: 0.08rem 0.55rem 0.55rem 0.08rem;\n    background:\n      linear-gradient(90deg, rgba(17, 24, 39, 0.035), transparent 4rem),\n      var(--book-paper);\n    box-shadow: 12px 20px 42px rgba(22, 28, 40, 0.08);\n  }\n\n  .visual-book.is-spread .book-content-page .book-page-scroll {\n    padding: clamp(1.25rem, 2.3vw, 2.35rem) clamp(1.15rem, 2.8vw, 2.8rem) 2.4rem;\n  }\n\n  .visual-book.is-spread .book-page-content {\n    font-size: clamp(0.9rem, 0.86vw, 1rem);\n    line-height: 1.76;\n  }\n\n  .visual-book.is-spread .book-page-content > :where(h2, h3, h4, h5, p, ul, ol, blockquote, details),\n  .visual-book.is-spread .book-page-content > :where(figure, .table-wrapper, .chartjs-wrap, .mermaid, .highlight, pre) {\n    width: 100%;\n    max-width: 100%;\n  }\n\n  .visual-book.is-spread .book-page-content > h2 {\n    margin-bottom: 1.25rem;\n    font-size: clamp(1.55rem, 2vw, 2.35rem);\n  }\n\n  .visual-book.is-spread .book-page-content h3 {\n    font-size: 1.12rem;\n  }\n\n  .visual-book.is-spread .book-page-content .chartjs-wrap {\n    height: clamp(250px, 39dvh, 390px) !important;\n  }\n\n  .visual-book.is-spread .book-page-content .mermaid,\n  .visual-book.is-spread .book-page-content .table-wrapper {\n    max-height: 42dvh;\n  }\n\n  .visual-book.is-spread .book-page-content figure img,\n  .visual-book.is-spread .book-page-content .news-source-image img {\n    max-height: 42dvh;\n  }\n}\n\n/* Scroll view is an explicit escape hatch and a better target for browser find. */\n\n.visual-book.is-scroll-view .book-reader-shell {\n  height: auto;\n  min-height: 100vh;\n  min-height: 100dvh;\n  display: block;\n  overflow: visible;\n}\n\n.visual-book.is-scroll-view .book-progress,\n.visual-book.is-scroll-view .book-controls,\n.visual-book.is-scroll-view .book-reader-hint {\n  display: none;\n}\n\n.visual-book.is-scroll-view .book-stage {\n  width: min(1040px, 100%);\n}\n\n.visual-book.is-scroll-view .book-pages {\n  height: auto;\n}\n\n.book-scroll-ad {\n  display: none;\n}\n\n.visual-book.is-scroll-view .book-scroll-ad {\n  display: block;\n  margin: 1.25rem 0;\n  padding: 1rem clamp(0.75rem, 3vw, 2rem);\n  border: 1px solid var(--book-line);\n  border-radius: 0.65rem;\n  background: var(--book-paper);\n}\n\n.visual-book.is-scroll-view .book-scroll-ad .google-ad-inline {\n  width: min(820px, 100%);\n  margin: 0 auto;\n}\n\n.visual-book.is-scroll-view .book-page {\n  position: relative;\n  inset: auto;\n  display: block !important;\n  height: auto;\n  min-height: 0;\n  margin-bottom: 1.25rem;\n  overflow: visible;\n}\n\n.visual-book.is-scroll-view .book-cover {\n  min-height: min(760px, 82vh);\n  display: grid !important;\n}\n\n.visual-book.is-scroll-view .book-page-scroll {\n  height: auto;\n  overflow: visible;\n}\n\n.visual-book.is-scroll-view .book-page-content figure img,\n.visual-book.is-scroll-view .book-page-content .news-source-image img {\n  max-height: none;\n}\n\n/* The conventional blog tail stays out of the reading experience. It opens\n * only from the completion page, so the document is exactly one viewport tall\n * while the book is being read. */\n\n.book-afterword-panel {\n  width: min(1120px, calc(100% - 2rem));\n  margin: 0 auto;\n  padding: 2.5rem 0 1rem;\n}\n\n.book-afterword-panel > .google-ad,\n.book-afterword-panel > .google-ad-inline {\n  width: min(970px, calc(100% - 2rem));\n  margin: 2.5rem auto;\n}\n\n.book-afterword-ad {\n  min-height: 280px;\n  padding: 0.9rem 0;\n  border-top: 1px solid var(--book-line);\n  border-bottom: 1px solid var(--book-line);\n}\n\n[data-book-ad]:has(ins[data-ad-status='unfilled']) {\n  display: none !important;\n  min-height: 0 !important;\n}\n\n.visual-book .post-tail-wrapper {\n  width: min(1040px, calc(100% - 2rem));\n  margin: 3rem auto 0;\n  padding-bottom: 1.4rem;\n  color: var(--text-muted-color);\n  border-bottom-color: var(--main-border-color);\n}\n\n/* The shelf follows the same restrained, logo-led visual language. */\n\n#post-list .card-wrapper {\n  overflow: hidden;\n  border: 1px solid var(--main-border-color);\n  border-radius: 0.48rem;\n  box-shadow: none;\n  transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;\n}\n\n#post-list .card-wrapper:hover {\n  border-color: color-mix(in srgb, var(--link-color) 32%, var(--main-border-color));\n  box-shadow: 0 18px 42px rgba(24, 31, 50, 0.08);\n  transform: translateY(-2px);\n}\n\n#post-list .card-title {\n  font-weight: 800;\n  letter-spacing: -0.035em;\n  line-height: 1.28;\n}\n\n#post-list .card-text p {\n  line-height: 1.72;\n}\n\n#sidebar .site-title {\n  font-weight: 800;\n  letter-spacing: 0.075em;\n}\n\n#sidebar .site-subtitle {\n  font-style: normal !important;\n  letter-spacing: -0.012em;\n  word-break: keep-all;\n  opacity: 0.68;\n}\n\n/* Mobile keeps one complete page inside the dynamic viewport. */\n\n@media (max-width: 767.98px) {\n  body.book-page #tail-wrapper.book-tail {\n    width: 100%;\n  }\n\n  .book-cover::before {\n    background:\n      linear-gradient(180deg, rgba(3, 5, 9, 0.68) 0%, rgba(3, 5, 9, 0.8) 70%, rgba(3, 5, 9, 0.92) 100%),\n      linear-gradient(90deg, rgba(3, 5, 9, 0.78), rgba(3, 5, 9, 0.54));\n  }\n\n  .book-reader-shell {\n    height: 100vh;\n    height: 100dvh;\n    min-height: 100vh;\n    min-height: 100dvh;\n    padding: 0.35rem 0.45rem 0;\n    grid-template-rows: 2.75rem 2px minmax(0, 1fr) 3rem;\n    row-gap: 0.35rem;\n    overflow: hidden;\n  }\n\n  .book-toolbar {\n    min-height: 2.75rem;\n    margin-bottom: 0;\n  }\n\n  .book-brand {\n    gap: 0.45rem;\n  }\n\n  .book-brand-mark {\n    width: 1.85rem;\n    height: 1.85rem;\n  }\n\n  .book-brand-name {\n    font-size: 0.67rem;\n  }\n\n  .book-tool-button {\n    min-width: 2.35rem;\n    min-height: 2.35rem;\n    padding: 0;\n  }\n\n  .book-tool-button > span:not(.visually-hidden) {\n    display: none;\n  }\n\n  .book-progress {\n    margin-bottom: 0;\n  }\n\n  .visual-book.is-ready:not(.is-scroll-view) .book-pages {\n    height: 100%;\n  }\n\n  .visual-book.is-ready:not(.is-scroll-view) .book-page {\n    position: absolute;\n    inset: 0;\n    height: 100%;\n    min-height: 0;\n  }\n\n  .book-page {\n    min-height: 0;\n    border-radius: 0.48rem;\n    background: var(--book-paper);\n  }\n\n  .book-cover {\n    display: block;\n    overflow: hidden;\n    background: #050505;\n  }\n\n  .book-cover-copy {\n    padding: clamp(1.5rem, 8vw, 3.25rem);\n  }\n\n  .book-cover h1 {\n    width: 100%;\n    max-width: none;\n    font-size: clamp(2.65rem, 13vw, 4.2rem);\n  }\n\n  .book-cover-description {\n    display: -webkit-box;\n    overflow: hidden;\n    font-size: 0.9rem;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 3;\n  }\n\n  .book-cover-bottom {\n    margin-top: 1.5rem;\n  }\n\n  .book-cover-hint {\n    display: none;\n  }\n\n  .book-cover-visual {\n    min-height: 11rem;\n    margin: 0 0.65rem 0.65rem;\n  }\n\n  .book-page-scroll {\n    height: 100%;\n    overflow: hidden;\n    padding: 1.25rem 1rem 2rem;\n  }\n\n  .book-page-content {\n    font-size: 1.04rem;\n    line-height: 1.86;\n    word-break: normal;\n  }\n\n  .book-page-content > h2 {\n    font-size: clamp(1.7rem, 8vw, 2.4rem);\n  }\n\n  .book-page-content > :where(figure, .table-wrapper, .chartjs-wrap, .mermaid, .highlight, pre) {\n    width: 100%;\n  }\n\n  .book-page-content figure img,\n  .book-page-content .news-source-image img {\n    max-height: 48dvh;\n  }\n\n  .book-page-content .manim-visual video {\n    max-height: 38dvh;\n  }\n\n  .book-page-content .chartjs-wrap {\n    height: 310px !important;\n    padding: 0.65rem !important;\n  }\n\n  .book-page-content .mermaid {\n    max-height: 50dvh;\n    padding: 0.65rem;\n  }\n\n  .book-page-content .table-wrapper,\n  .book-page-content .highlight,\n  .book-page-content pre {\n    max-height: 48dvh;\n  }\n\n  .book-controls {\n    height: 3rem;\n    position: relative;\n    inset: auto;\n    z-index: 20;\n    padding: 0 0.15rem;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    background: transparent;\n  }\n\n  .book-page-button {\n    width: 2.75rem;\n    height: 2.75rem;\n    position: relative;\n    top: auto;\n    border-color: transparent;\n    border-radius: 0;\n    color: var(--book-accent-strong);\n    background: transparent;\n    box-shadow: none;\n    backdrop-filter: none;\n    opacity: 0.72;\n    transform: none;\n  }\n\n  .book-page-button-prev {\n    left: auto;\n  }\n\n  .book-page-button-next {\n    right: auto;\n  }\n\n  .visual-book:not(.is-cover-open) .book-page-button:hover:not(:disabled),\n  .visual-book:not(.is-cover-open) .book-page-button:focus-visible:not(:disabled) {\n    border-color: transparent;\n    border-radius: 0;\n    color: var(--book-accent-strong);\n    background: transparent;\n    box-shadow: none;\n    transform: none;\n  }\n\n  .visual-book.is-cover-open .book-page-button:not(:disabled) {\n    border: 1px solid rgba(255, 255, 255, 0.2);\n    border-radius: 50%;\n    color: #111827;\n    background: rgba(255, 255, 255, 0.9);\n    box-shadow: 0 9px 26px rgba(0, 0, 0, 0.2);\n    opacity: 1;\n  }\n\n  .book-reader-hint {\n    display: none;\n  }\n\n  .book-toc-dialog {\n    width: calc(100% - 1rem);\n    max-height: 84vh;\n    border-radius: 1.15rem;\n  }\n\n}\n\n@media (max-width: 420px) {\n  .book-cover-meta > span:nth-child(3) {\n    display: none;\n  }\n\n  .book-page-button span {\n    display: none;\n  }\n\n  .visual-book:not(.is-cover-open) .book-page-button {\n    width: 2.75rem;\n    height: 3rem;\n  }\n\n  .book-page:not(.book-cover) .book-page-scroll:not(:has(.mermaid)) {\n    padding-right: 1rem;\n    padding-left: 1rem;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-scroll {\n    padding-right: 1rem;\n    padding-left: 1rem;\n  }\n\n  .book-page[data-book-chunk-kind='project'] .book-page-scroll {\n    padding: 0.75rem 1rem 1rem;\n  }\n\n  .book-page[data-book-chunk-kind='project'] .proj {\n    margin-bottom: 0;\n    padding: 0.65rem;\n  }\n\n  .book-page[data-book-chunk-kind='project'] .proj-h {\n    margin-bottom: 0.55rem;\n    font-size: 0.7rem;\n  }\n\n  .book-page[data-book-chunk-kind='project'] .proj-grid {\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 0.35rem;\n  }\n\n  .book-page[data-book-chunk-kind='project'] .proj-t {\n    padding: 0.48rem 0.15rem 0.52rem;\n  }\n\n  .book-page[data-book-chunk-kind='project'] .proj-t .n {\n    font-size: 0.84rem;\n  }\n\n  .book-page[data-book-chunk-kind='project'] .proj-langs {\n    margin-top: 0.55rem;\n    gap: 0.22rem;\n  }\n\n  .book-page[data-book-chunk-kind='project'] .proj-langs .lg {\n    padding: 0.12rem 0.38rem;\n    font-size: 0.58rem;\n  }\n}\n\n@media (max-height: 650px) and (max-width: 1023.98px) {\n  .book-cover-description {\n    display: none;\n  }\n\n  .book-cover-copy {\n    padding: 1rem clamp(1.25rem, 7vw, 3.5rem);\n  }\n\n  .book-cover h1 {\n    font-size: clamp(2rem, 7vw, 4rem);\n    line-height: 0.98;\n  }\n\n  .book-cover-bottom {\n    margin-top: 0.8rem;\n  }\n\n  .book-cover-meta {\n    margin-bottom: 0;\n    font-size: 0.63rem;\n  }\n\n  .book-cover-meta > span:nth-child(n + 2) {\n    display: none;\n  }\n\n  .visual-book[data-book-directory='true'] .book-page-content > ol > li {\n    padding: 0.58rem 0.65rem;\n    font-size: 0.8rem;\n    line-height: 1.46;\n  }\n}\n\n/* Diagram pages are visual plates, not text pages with a thumbnail attached.\n * Give the SVG the full remaining sheet and remove the repeated chapter title. */\n.book-page[data-book-chunk-kind='project'] .book-page-scroll {\n  display: grid;\n  grid-template-rows: auto minmax(0, 1fr);\n  gap: 0.65rem;\n}\n\n.book-page[data-book-chunk-kind='project'] .book-page-content {\n  height: 100%;\n  min-height: 0;\n  display: grid;\n  align-items: center;\n}\n\n.book-page[data-book-chunk-kind='project'] .proj {\n  margin-bottom: 0;\n}\n\n.book-page[data-book-chunk-kind='flow'] .book-page-scroll {\n  padding: clamp(0.85rem, 1.8vw, 1.5rem) clamp(1rem, 2.2vw, 2rem);\n  display: grid;\n  grid-template-rows: auto minmax(0, 1fr);\n  gap: 0.65rem;\n}\n\n.book-page[data-book-chunk-kind='chart'] .book-page-scroll {\n  padding: clamp(0.85rem, 1.8vw, 1.5rem) clamp(1rem, 2.2vw, 2rem);\n  display: grid;\n  grid-template-rows: auto minmax(0, 1fr);\n  gap: 0.65rem;\n}\n\n.book-page[data-book-chunk-kind='flow'] .book-page-folio {\n  margin-bottom: 0;\n}\n\n.book-page[data-book-chunk-kind='chart'] .book-page-folio {\n  margin-bottom: 0;\n}\n\n.book-page[data-book-chunk-kind='flow'] .book-page-content {\n  width: 100%;\n  max-width: none;\n  min-height: 0;\n  height: 100%;\n  display: grid;\n}\n\n.book-page[data-book-chunk-kind='chart'] .book-page-content {\n  width: 100%;\n  max-width: none;\n  min-height: 0;\n  height: 100%;\n  display: grid;\n}\n\n.book-page[data-book-chunk-kind='flow'] .book-page-content > h2 {\n  display: none;\n}\n\n.book-page[data-book-chunk-kind='chart'] .book-page-content > h2 {\n  display: none;\n}\n\n.book-page[data-book-chunk-kind='chart'] .book-page-content .chartjs-wrap {\n  width: 100%;\n  max-width: none !important;\n  height: 100% !important;\n  min-height: 0;\n  margin: 0 !important;\n}\n\n.book-page[data-book-chunk-kind='flow'] .book-page-content .mermaid {\n  width: 100%;\n  max-width: none;\n  height: 100%;\n  min-height: 0;\n  max-height: none;\n  margin: 0 !important;\n  padding: clamp(0.75rem, 1.8vw, 1.35rem);\n  display: grid;\n  place-items: center;\n}\n\n.book-page[data-book-chunk-kind='flow'] .book-page-content .mermaid svg {\n  width: 100% !important;\n  height: 100% !important;\n  max-width: 100% !important;\n  max-height: 100% !important;\n}\n\n.book-page[data-book-chunk-kind='flow'] .mermaid :where(.nodeLabel, .edgeLabel) {\n  color: var(--book-ink) !important;\n}\n\n.book-page[data-book-chunk-kind='flow'] .mermaid .node :where(rect, polygon, path) {\n  fill: color-mix(in srgb, var(--book-accent) 6%, var(--book-paper)) !important;\n  stroke: var(--book-accent) !important;\n  stroke-width: 1.6px !important;\n}\n\n.book-page[data-book-chunk-kind='flow'] .mermaid .node rect {\n  rx: 8px;\n  ry: 8px;\n}\n\n.book-page[data-book-chunk-kind='flow'] .mermaid .flowchart-link {\n  stroke: color-mix(in srgb, var(--book-ink) 56%, transparent) !important;\n  stroke-width: 1.7px !important;\n}\n\n.book-page[data-book-chunk-kind='flow'] .mermaid marker path {\n  fill: var(--book-accent-strong) !important;\n  stroke: var(--book-accent-strong) !important;\n}\n\n.book-page[data-book-chunk-kind='flow'] .mermaid .edgeLabel {\n  color: var(--book-muted) !important;\n  background: var(--book-paper-soft) !important;\n}\n\n@media (max-width: 767.98px) {\n  .book-cover-visual {\n    margin: 0;\n  }\n\n  .book-page:not(.book-cover) .book-page-scroll:not(:has(.mermaid)) {\n    padding-right: 3rem;\n    padding-left: 3rem;\n  }\n\n  .book-page[data-book-chunk-kind='flow'] .book-page-scroll {\n    padding: 0.8rem 2rem 1rem;\n  }\n\n  .book-page[data-book-chunk-kind='chart'] .book-page-scroll {\n    padding: 0.8rem 2rem 1rem;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-scroll {\n    padding-right: 3rem;\n    padding-left: 3rem;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-content .table-wrapper {\n    max-height: none;\n    margin-block: 0.75rem !important;\n    overflow: hidden;\n    border: 0;\n    background: transparent;\n    box-shadow: none;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-content table,\n  .book-page[data-book-chunk-kind='table'] .book-page-content tbody {\n    width: 100%;\n    display: block;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-content thead {\n    display: none;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-content tbody {\n    display: grid;\n    gap: 0.52rem;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-content tr {\n    padding: 0.58rem 0.65rem;\n    display: grid;\n    gap: 0.18rem;\n    border: 1px solid color-mix(in srgb, var(--book-accent) 18%, var(--book-line));\n    border-radius: 0.44rem;\n    background: var(--book-paper-soft);\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-content td {\n    padding: 0.14rem 0 !important;\n    display: grid;\n    grid-template-columns: minmax(3.7rem, 0.32fr) minmax(0, 1fr);\n    gap: 0.45rem;\n    border: 0;\n    color: var(--book-ink);\n    font-size: 0.72rem;\n    line-height: 1.42;\n    white-space: normal;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-content td::before {\n    content: attr(data-book-cell-label);\n    color: var(--book-muted);\n    font-size: 0.56rem;\n    font-weight: 800;\n    letter-spacing: 0.02em;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-content .book-cell-value {\n    min-width: 0;\n  }\n\n}\n\n@media (max-width: 420px) {\n  .book-page:not(.book-cover) .book-page-scroll:not(:has(.mermaid)) {\n    padding-right: 2.25rem;\n    padding-left: 2.25rem;\n  }\n\n  .book-page[data-book-chunk-kind='table'] .book-page-scroll {\n    padding-right: 2.25rem;\n    padding-left: 2.25rem;\n  }\n\n  .book-page[data-book-chunk-kind='flow'] .book-page-scroll,\n  .book-page[data-book-chunk-kind='chart'] .book-page-scroll {\n    padding-right: 1.5rem;\n    padding-left: 1.5rem;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .book-page,\n  .book-page-content > :where(figure, .chartjs-wrap, .mermaid, .table-wrapper, .book-prologue-art),\n  .book-progress > span,\n  .book-tool-button,\n  .book-page-button,\n  .book-start-button {\n    animation: none !important;\n    scroll-behavior: auto !important;\n    transition-duration: 0.01ms !important;\n  }\n}\n\n@media print {\n  body.book-page {\n    background: #fff !important;\n  }\n\n  .book-reader-shell {\n    overflow: visible;\n    padding: 0;\n    background: #fff !important;\n  }\n\n  .book-reader-shell::before,\n  .book-reader-shell::after,\n  .book-toolbar,\n  .book-progress,\n  .book-controls,\n  .book-reader-hint,\n  .book-toc-dialog,\n  .book-cover-orbit,\n  .book-cover-photo,\n  .book-scroll-ad,\n  .book-afterword-panel > .google-ad,\n  .visual-book > .google-ad,\n  .visual-book > .google-ad-inline {\n    display: none !important;\n  }\n\n  .visual-book .book-pages {\n    height: auto !important;\n  }\n\n  .visual-book .book-page,\n  .visual-book .book-page[hidden] {\n    display: block !important;\n    position: relative !important;\n    inset: auto !important;\n    min-height: 0;\n    height: auto !important;\n    margin: 0 0 0.35in;\n    overflow: visible;\n    border: 0;\n    border-radius: 0;\n    box-shadow: none;\n    break-after: page;\n    color: #111 !important;\n    background: #fff !important;\n  }\n\n  .visual-book .book-cover {\n    min-height: 8.4in;\n    display: grid !important;\n    color: #111 !important;\n  }\n\n  .visual-book .book-cover h1,\n  .visual-book .book-cover-description,\n  .visual-book .book-cover-meta {\n    color: #111 !important;\n  }\n\n  .book-page-scroll {\n    height: auto;\n    overflow: visible;\n    padding: 0.35in;\n  }\n\n  .book-page-content figure img,\n  .book-page-content .news-source-image img,\n  .book-page-content .mermaid {\n    max-height: 6in;\n  }\n\n  .book-page-content .table-wrapper,\n  .book-page-content .highlight,\n  .book-page-content pre {\n    max-height: none;\n    overflow: visible;\n  }\n}\n","@use 'abstracts/variables' with (\n  $theme: ''\n);\n\n/* prettier-ignore */\n@use 'main.bundle';\n\n@use 'book-reader';\n\n/* ───────────────────────── 커스텀 스타일 ─────────────────────────\n   테마 원본(assets/css/jekyll-theme-chirpy.scss)을 그대로 복사하고\n   아래만 덧붙였다. 테마 업그레이드 시 위쪽이 바뀌었는지 확인할 것.\n   ──────────────────────────────────────────────────────────────── */\n\n/* 우측 패널을 스크롤에 붙여 둔다.\n\n   테마는 .access 에 `&:only-child` 조건으로 sticky 를 걸어 두는데,\n   패널에 광고를 형제로 넣는 순간 그 조건이 깨져 sticky 가 사라진다.\n   그래서 목차와 광고를 한 덩어리로 묶어 붙여 둔다.\n\n   패널 안에서 따로 스크롤시키지 않는다. 예전에는 max-height 와 overflow-y 로\n   잘라 뒀는데, 사이드바에 커서가 있으면 페이지 대신 패널만 움직여서 읽기를 방해했다.\n   지금은 페이지 스크롤을 그대로 따라 내려오다가 제자리에 멈춰 서는 방식이다. */\n@media all and (min-width: 1200px) {\n  .panel-sticky {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 2rem;\n  }\n\n  /* 패널(광고 + 목차 + 태그 + 광고)은 1,100px 안팎이라 웬만한 창에서는 화면을 넘긴다.\n     위를 기준으로 붙이면 넘치는 아래쪽, 즉 광고가 끝내 화면에 안 들어온다.\n     그래서 낮은 창에서는 아래를 기준으로 붙인다. 스크롤을 내리는 동안 패널이\n     페이지를 따라 내려오고, 바닥이 다 드러난 지점에서 멈춘다.\n     bottom 을 0 으로 둔 이유는 테마가 이미 margin-bottom: 4rem 을 주기 때문이다. */\n  @media all and (max-height: 1200px) {\n    .panel-sticky {\n      top: auto;\n      bottom: 0;\n    }\n  }\n}\n\n/* 본문 사이에 들어가는 광고.\n   글의 일부처럼 보이면 오인 클릭이 되므로, 위아래 여백과 옅은 구분선으로\n   본문과 확실히 분리한다. 최소 높이를 잡아 두는 이유는 광고가 늦게 로드될 때\n   본문이 밀리는 레이아웃 이동(CLS)을 막기 위해서다. CLS 는 Core Web Vitals\n   점수를 깎고, 그게 검색 순위로 이어진다. */\n.google-ad-inline {\n  margin: 2.2rem 0;\n  padding: 0.6rem 0;\n  border-top: 1px solid var(--btn-border-color);\n  border-bottom: 1px solid var(--btn-border-color);\n  min-height: 120px;\n  text-align: center;\n\n  ins {\n    display: block;\n  }\n}\n\n.google-ad-label {\n  display: block;\n  margin-bottom: 0.45rem;\n  color: var(--text-muted-color);\n  font-size: 0.62rem;\n  font-weight: 700;\n  letter-spacing: 0.08em;\n  text-align: center;\n}\n\n.google-ad-preview {\n  min-height: 5rem;\n  display: grid;\n  place-items: center;\n  color: var(--text-muted-color);\n  background: color-mix(in srgb, var(--main-bg) 80%, var(--card-bg));\n  font-size: 0.76rem;\n}\n\n.home-feed-ad {\n  margin: 1.25rem 0 2rem;\n  padding: 0 clamp(0.4rem, 2vw, 1.25rem);\n  overflow: hidden;\n  border: 1px solid var(--main-border-color);\n  border-radius: 0.48rem;\n  background: var(--card-bg);\n}\n\n.home-feed-ad .google-ad-inline {\n  margin: 0;\n  border: 0;\n}\n\n/* 사이드바 광고도 같은 이유로 높이를 예약한다. */\n.google-ad {\n  min-height: 250px;\n  margin-bottom: 1.5rem;\n}\n\n/* 자동 발행 브리핑에서 한국어 번역문 아래 붙는 원문 문장.\n   원문을 지우면 인용의 근거를 대조할 수 없고, 본문과 같은 크기로 두면 같은 내용을\n   두 번 읽는 글이 된다. 그래서 남기되 작고 흐리게 둔다. */\n.source-original {\n  display: block;\n  margin-top: 0.2rem;\n  font-size: 0.82em;\n  line-height: 1.5;\n  color: var(--text-muted-color);\n}\n"],"file":"jekyll-theme-chirpy.css"}