auto-coder-web 0.1.60__tar.gz → 0.1.61__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/PKG-INFO +2 -2
  2. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/proxy.py +2 -1
  3. auto_coder_web-0.1.61/src/auto_coder_web/routers/editable_preview_router.py +202 -0
  4. auto_coder_web-0.1.61/src/auto_coder_web/version.py +1 -0
  5. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/cssMode-C28WkqEl.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/cssMode-DzQL_FdL.js +1 -1
  6. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/freemarker2-ZqPV3OAn.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/freemarker2-B6aemwaC.js +1 -1
  7. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/handlebars-BeVH6MoZ.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/handlebars-C2cM4xS8.js +1 -1
  8. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/html-CbnuufYM.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/html-Da2X74rm.js +1 -1
  9. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/htmlMode-CpsZVLwy.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/htmlMode-Y3eBAl3y.js +1 -1
  10. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/index-Bnnll9cx.css → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/index-CRXh98Y9.css +1 -1
  11. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/index-U694gZ5i.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/index-kyBHOjJU.js +303 -301
  12. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/javascript-CUA7SFHC.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/javascript-zkPPW3gg.js +1 -1
  13. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/jsonMode-BzAAFwlN.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/jsonMode-Ce8jLIxT.js +1 -1
  14. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/liquid-B1UkAnrE.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/liquid-CHrk1uPD.js +1 -1
  15. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/mdx-2eOqd4a8.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/mdx-B7AzIQ1K.js +1 -1
  16. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/python-DadwP7sa.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/python-D340AvYz.js +1 -1
  17. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/razor-CCybM3Rs.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/razor-DfFnL0En.js +1 -1
  18. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/tsMode-Bk47zhhf.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/tsMode-CwjVYPI2.js +1 -1
  19. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/typescript-vvCv9Db5.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/typescript-JxFW6htN.js +1 -1
  20. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/xml-CLM5-Fko.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/xml-CY673mn0.js +1 -1
  21. auto_coder_web-0.1.60/src/auto_coder_web/web/assets/yaml-BF217FNY.js → auto_coder_web-0.1.61/src/auto_coder_web/web/assets/yaml-D2wmMay7.js +1 -1
  22. auto_coder_web-0.1.61/src/auto_coder_web/web/bridge.js +189 -0
  23. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/index.html +2 -2
  24. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web.egg-info/PKG-INFO +2 -2
  25. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web.egg-info/SOURCES.txt +19 -17
  26. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web.egg-info/requires.txt +1 -1
  27. auto_coder_web-0.1.60/src/auto_coder_web/version.py +0 -1
  28. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/README.md +0 -0
  29. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/setup.cfg +0 -0
  30. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/setup.py +0 -0
  31. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/__init__.py +0 -0
  32. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/auto_coder_runner_wrapper.py +0 -0
  33. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/common_router/__init__.py +0 -0
  34. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/common_router/auto_coder_conf_router.py +0 -0
  35. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/common_router/chat_list_router.py +0 -0
  36. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/common_router/compiler_router.py +0 -0
  37. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/common_router/completions_router.py +0 -0
  38. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/common_router/file_group_router.py +0 -0
  39. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/common_router/file_router.py +0 -0
  40. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/common_router/model_router.py +0 -0
  41. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/expert_routers/__init__.py +0 -0
  42. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/expert_routers/history_router.py +0 -0
  43. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/file_group.py +0 -0
  44. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/file_manager.py +0 -0
  45. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/init_project.py +0 -0
  46. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/json_file_storage.py +0 -0
  47. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/lang.py +0 -0
  48. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/__init__.py +0 -0
  49. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/auto_router.py +0 -0
  50. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/chat_router.py +0 -0
  51. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/coding_router.py +0 -0
  52. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/commit_router.py +0 -0
  53. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/config_router.py +0 -0
  54. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/index_router.py +0 -0
  55. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/mcp_router.py +0 -0
  56. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/rag_router.py +0 -0
  57. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/settings_router.py +0 -0
  58. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/todo_router.py +0 -0
  59. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/routers/upload_router.py +0 -0
  60. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/terminal.py +0 -0
  61. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/types.py +0 -0
  62. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/abap-BrgZPUOV.js +0 -0
  63. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/apex-DyP6w7ZV.js +0 -0
  64. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/azcli-BaLxmfj-.js +0 -0
  65. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/bat-CFOPXBzS.js +0 -0
  66. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/bicep-BfEKNvv3.js +0 -0
  67. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/cameligo-BFG1Mk7z.js +0 -0
  68. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/clojure-DTECt2xU.js +0 -0
  69. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/codicon-DCmgc-ay.ttf +0 -0
  70. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/coffee-CDGzqUPQ.js +0 -0
  71. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/cpp-CLLBncYj.js +0 -0
  72. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/csharp-dUCx_-0o.js +0 -0
  73. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/csp-5Rap-vPy.js +0 -0
  74. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/css-D3h14YRZ.js +0 -0
  75. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/cypher-DrQuvNYM.js +0 -0
  76. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/dart-CFKIUWau.js +0 -0
  77. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/dockerfile-Zznr-cwX.js +0 -0
  78. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/ecl-Ce3n6wWz.js +0 -0
  79. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/elixir-deUWdS0T.js +0 -0
  80. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/flow9-i9-g7ZhI.js +0 -0
  81. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/fsharp-CzKuDChf.js +0 -0
  82. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/go-Cphgjts3.js +0 -0
  83. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/graphql-Cg7bfA9N.js +0 -0
  84. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/hcl-0cvrggvQ.js +0 -0
  85. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/ini-Drc7WvVn.js +0 -0
  86. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/java-B_fMsGYe.js +0 -0
  87. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/julia-Bqgm2twL.js +0 -0
  88. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/kotlin-BSkB5QuD.js +0 -0
  89. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/less-BsTHnhdd.js +0 -0
  90. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/lexon-YWi4-JPR.js +0 -0
  91. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/lua-nf6ki56Z.js +0 -0
  92. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/m3-Cpb6xl2v.js +0 -0
  93. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/markdown-DSZPf7rp.js +0 -0
  94. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/mips-B_c3zf-v.js +0 -0
  95. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/msdax-rUNN04Wq.js +0 -0
  96. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/mysql-DDwshQtU.js +0 -0
  97. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/objective-c-B5zXfXm9.js +0 -0
  98. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/pascal-CXOwvkN_.js +0 -0
  99. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/pascaligo-Bc-ZgV77.js +0 -0
  100. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/perl-CwNk8-XU.js +0 -0
  101. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/pgsql-tGk8EFnU.js +0 -0
  102. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/php-CpIb_Oan.js +0 -0
  103. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/pla-B03wrqEc.js +0 -0
  104. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/postiats-BKlk5iyT.js +0 -0
  105. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/powerquery-Bhzvs7bI.js +0 -0
  106. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/powershell-Dd3NCNK9.js +0 -0
  107. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/protobuf-COyEY5Pt.js +0 -0
  108. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/pug-BaJupSGV.js +0 -0
  109. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/qsharp-DXyYeYxl.js +0 -0
  110. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/r-CdQndTaG.js +0 -0
  111. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/redis-CVwtpugi.js +0 -0
  112. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/redshift-25W9uPmb.js +0 -0
  113. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/restructuredtext-DfzH4Xui.js +0 -0
  114. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/ruby-Cp1zYvxS.js +0 -0
  115. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/rust-D5C2fndG.js +0 -0
  116. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/sb-CDntyWJ8.js +0 -0
  117. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/scala-BoFRg7Ot.js +0 -0
  118. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/scheme-Bio4gycK.js +0 -0
  119. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/scss-4Ik7cdeQ.js +0 -0
  120. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/shell-CX-rkNHf.js +0 -0
  121. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/solidity-Tw7wswEv.js +0 -0
  122. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/sophia-C5WLch3f.js +0 -0
  123. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/sparql-DHaeiCBh.js +0 -0
  124. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/sql-CCSDG5nI.js +0 -0
  125. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/st-pnP8ivHi.js +0 -0
  126. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/swift-DwJ7jVG9.js +0 -0
  127. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/systemverilog-B9Xyijhd.js +0 -0
  128. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/tcl-DnHyzjbg.js +0 -0
  129. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/twig-CPajHgWi.js +0 -0
  130. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/typespec-D-MeaMDU.js +0 -0
  131. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/vb-DgyLZaXg.js +0 -0
  132. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/assets/wgsl-BIv9DU6q.js +0 -0
  133. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/favicon.ico +0 -0
  134. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/logo192.png +0 -0
  135. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/logo512.png +0 -0
  136. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/manifest.json +0 -0
  137. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  138. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/base/worker/workerMain.js +0 -0
  139. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/abap/abap.js +0 -0
  140. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/apex/apex.js +0 -0
  141. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/azcli/azcli.js +0 -0
  142. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/bat/bat.js +0 -0
  143. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/bicep/bicep.js +0 -0
  144. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cameligo/cameligo.js +0 -0
  145. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/clojure/clojure.js +0 -0
  146. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/coffee/coffee.js +0 -0
  147. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cpp/cpp.js +0 -0
  148. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/csharp/csharp.js +0 -0
  149. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/csp/csp.js +0 -0
  150. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/css/css.js +0 -0
  151. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/cypher/cypher.js +0 -0
  152. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/dart/dart.js +0 -0
  153. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/dockerfile/dockerfile.js +0 -0
  154. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ecl/ecl.js +0 -0
  155. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/elixir/elixir.js +0 -0
  156. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/flow9/flow9.js +0 -0
  157. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/freemarker2/freemarker2.js +0 -0
  158. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/fsharp/fsharp.js +0 -0
  159. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/go/go.js +0 -0
  160. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/graphql/graphql.js +0 -0
  161. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/handlebars/handlebars.js +0 -0
  162. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/hcl/hcl.js +0 -0
  163. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/html/html.js +0 -0
  164. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ini/ini.js +0 -0
  165. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/java/java.js +0 -0
  166. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/javascript/javascript.js +0 -0
  167. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/julia/julia.js +0 -0
  168. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/kotlin/kotlin.js +0 -0
  169. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/less/less.js +0 -0
  170. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/lexon/lexon.js +0 -0
  171. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/liquid/liquid.js +0 -0
  172. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/lua/lua.js +0 -0
  173. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/m3/m3.js +0 -0
  174. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/markdown/markdown.js +0 -0
  175. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mdx/mdx.js +0 -0
  176. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mips/mips.js +0 -0
  177. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/msdax/msdax.js +0 -0
  178. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/mysql/mysql.js +0 -0
  179. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/objective-c/objective-c.js +0 -0
  180. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pascal/pascal.js +0 -0
  181. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pascaligo/pascaligo.js +0 -0
  182. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/perl/perl.js +0 -0
  183. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pgsql/pgsql.js +0 -0
  184. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/php/php.js +0 -0
  185. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pla/pla.js +0 -0
  186. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/postiats/postiats.js +0 -0
  187. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/powerquery/powerquery.js +0 -0
  188. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/powershell/powershell.js +0 -0
  189. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/protobuf/protobuf.js +0 -0
  190. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/pug/pug.js +0 -0
  191. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/python/python.js +0 -0
  192. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/qsharp/qsharp.js +0 -0
  193. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/r/r.js +0 -0
  194. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/razor/razor.js +0 -0
  195. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/redis/redis.js +0 -0
  196. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/redshift/redshift.js +0 -0
  197. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/restructuredtext/restructuredtext.js +0 -0
  198. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/ruby/ruby.js +0 -0
  199. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/rust/rust.js +0 -0
  200. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sb/sb.js +0 -0
  201. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scala/scala.js +0 -0
  202. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scheme/scheme.js +0 -0
  203. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/scss/scss.js +0 -0
  204. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/shell/shell.js +0 -0
  205. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/solidity/solidity.js +0 -0
  206. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sophia/sophia.js +0 -0
  207. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sparql/sparql.js +0 -0
  208. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/sql/sql.js +0 -0
  209. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/st/st.js +0 -0
  210. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/swift/swift.js +0 -0
  211. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/systemverilog/systemverilog.js +0 -0
  212. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/tcl/tcl.js +0 -0
  213. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/twig/twig.js +0 -0
  214. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/typescript/typescript.js +0 -0
  215. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/typespec/typespec.js +0 -0
  216. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/vb/vb.js +0 -0
  217. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/wgsl/wgsl.js +0 -0
  218. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/xml/xml.js +0 -0
  219. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/basic-languages/yaml/yaml.js +0 -0
  220. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/editor/editor.main.css +0 -0
  221. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/editor/editor.main.js +0 -0
  222. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/language/css/cssMode.js +0 -0
  223. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/language/css/cssWorker.js +0 -0
  224. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/language/html/htmlMode.js +0 -0
  225. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/language/html/htmlWorker.js +0 -0
  226. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/language/json/jsonMode.js +0 -0
  227. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/language/json/jsonWorker.js +0 -0
  228. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/language/typescript/tsMode.js +0 -0
  229. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/language/typescript/tsWorker.js +0 -0
  230. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/loader.js +0 -0
  231. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.de.js +0 -0
  232. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.es.js +0 -0
  233. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.fr.js +0 -0
  234. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.it.js +0 -0
  235. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ja.js +0 -0
  236. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ko.js +0 -0
  237. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.ru.js +0 -0
  238. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.zh-cn.js +0 -0
  239. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/monaco-editor/min/vs/nls.messages.zh-tw.js +0 -0
  240. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web/web/robots.txt +0 -0
  241. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web.egg-info/dependency_links.txt +0 -0
  242. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web.egg-info/entry_points.txt +0 -0
  243. {auto_coder_web-0.1.60 → auto_coder_web-0.1.61}/src/auto_coder_web.egg-info/top_level.txt +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto_coder_web
3
- Version: 0.1.60
3
+ Version: 0.1.61
4
4
  Summary: auto-coder.web: A Python Project
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.9
7
7
  Classifier: Programming Language :: Python :: 3.10
8
8
  Classifier: Programming Language :: Python :: 3.11
9
9
  Description-Content-Type: text/markdown
10
- Requires-Dist: auto-coder>=0.1.332
10
+ Requires-Dist: auto-coder>=0.1.333
11
11
  Requires-Dist: aiofiles
12
12
  Requires-Dist: psutil
13
13
  Requires-Dist: sse-starlette
@@ -19,7 +19,7 @@ import sys
19
19
  from auto_coder_web.terminal import terminal_manager
20
20
  from autocoder.common import AutoCoderArgs
21
21
  from auto_coder_web.auto_coder_runner_wrapper import AutoCoderRunnerWrapper
22
- from auto_coder_web.routers import todo_router, settings_router, auto_router, commit_router, chat_router, coding_router, index_router, config_router, upload_router, rag_router
22
+ from auto_coder_web.routers import todo_router, settings_router, auto_router, commit_router, chat_router, coding_router, index_router, config_router, upload_router, rag_router, editable_preview_router
23
23
  from auto_coder_web.expert_routers import history_router
24
24
  from auto_coder_web.common_router import completions_router, file_router, auto_coder_conf_router, chat_list_router, file_group_router, model_router, compiler_router
25
25
  from rich.console import Console
@@ -100,6 +100,7 @@ class ProxyServer:
100
100
  self.app.include_router(config_router.router)
101
101
  self.app.include_router(upload_router.router)
102
102
  self.app.include_router(rag_router.router)
103
+ self.app.include_router(editable_preview_router.router)
103
104
  # self.app.include_router(rag_router.router)
104
105
 
105
106
  @self.app.on_event("shutdown")
@@ -0,0 +1,202 @@
1
+ import logging
2
+ from pydantic import BaseModel
3
+ import requests
4
+ from fastapi import APIRouter, HTTPException, Request, Query, Body
5
+ from fastapi.responses import HTMLResponse
6
+ from bs4 import BeautifulSoup
7
+ from urllib.parse import urljoin, urlparse
8
+ import aiofiles
9
+ from pathlib import Path
10
+ import json
11
+ from datetime import datetime
12
+ import uuid
13
+ from loguru import logger as global_logger
14
+
15
+ logger = global_logger.bind(name="editable_preview")
16
+ router = APIRouter()
17
+
18
+ # --- Configuration ---
19
+ BRIDGE_SCRIPT_PATH = "/bridge.js" # Path where the frontend serves bridge.js
20
+ SAVED_PREVIEWS_DIR = Path(".auto-coder/auto-coder.web/editable-previews")
21
+ SAVED_PREVIEWS_DIR.mkdir(parents=True, exist_ok=True)
22
+ # --- End Configuration ---
23
+
24
+
25
+ def resolve_url(base_url: str, relative_url: str) -> str:
26
+ """Resolves a relative URL against a base URL."""
27
+ try:
28
+ return urljoin(base_url, relative_url)
29
+ except ValueError:
30
+ # Handle cases where relative_url might be invalid
31
+ return relative_url
32
+
33
+ def rewrite_html_resources(soup: BeautifulSoup, base_url: str, proxy_base: str):
34
+ """Rewrites relative URLs in common HTML tags to absolute URLs or proxy URLs."""
35
+ tags_attributes = {
36
+ 'a': 'href',
37
+ 'link': 'href',
38
+ 'script': 'src',
39
+ 'img': 'src',
40
+ 'iframe': 'src',
41
+ 'form': 'action',
42
+ # Add other tags/attributes as needed
43
+ }
44
+
45
+ for tag_name, attr_name in tags_attributes.items():
46
+ for tag in soup.find_all(tag_name):
47
+ attr_value = tag.get(attr_name)
48
+ if attr_value:
49
+ # Resolve relative URLs relative to the original page's base URL
50
+ absolute_url = resolve_url(base_url, attr_value)
51
+
52
+ # Optionally, rewrite to go through proxy (more complex, might break things)
53
+ # For simplicity now, just make them absolute to original domain
54
+ # proxy_url = f"{proxy_base}?url={absolute_url}" # Example proxy rewrite
55
+ # tag[attr_name] = proxy_url
56
+ tag[attr_name] = absolute_url # Keep original absolute for now
57
+
58
+ # Special handling for inline styles with url()
59
+ for tag in soup.find_all(style=True):
60
+ # Basic url() rewriting - might need a more robust CSS parser for complex cases
61
+ style_content = tag['style']
62
+ # This regex is basic, might need refinement
63
+ import re
64
+ def replace_url(match):
65
+ url = match.group(1).strip("'\"")
66
+ absolute_url = resolve_url(base_url, url)
67
+ return f"url('{absolute_url}')"
68
+
69
+ tag['style'] = re.sub(r"url\((.*?)\)", replace_url, style_content)
70
+
71
+ # Consider rewriting srcset for images as well if needed
72
+
73
+ @router.get("/api/editable-preview/proxy", response_class=HTMLResponse)
74
+ async def proxy_external_url(request: Request, url: str = Query(...)):
75
+ """
76
+ Fetches an external URL, injects a bridge script, and returns the HTML.
77
+ Handles basic resource URL rewriting.
78
+ """
79
+ if not url or not url.startswith(('http://', 'https://')):
80
+ raise HTTPException(status_code=400, detail="Invalid or missing URL parameter")
81
+
82
+ try:
83
+ headers = {
84
+ # Mimic a browser request
85
+ 'User-Agent': request.headers.get('user-agent', 'Mozilla/5.0'),
86
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
87
+ 'Accept-Language': 'en-US,en;q=0.5',
88
+ 'Referer': urlparse(url).scheme + "://" + urlparse(url).netloc # Set referer to target domain
89
+ }
90
+ response = requests.get(url, headers=headers, timeout=15, allow_redirects=True)
91
+ response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
92
+
93
+ # Check content type
94
+ content_type = response.headers.get('content-type', '').lower()
95
+ if 'text/html' not in content_type:
96
+ logger.warning(f"Proxied URL {url} returned non-HTML content-type: {content_type}")
97
+ # Return as is if not HTML, or raise error? Decide based on desired behavior.
98
+ # For now, let's try parsing anyway, but log a warning.
99
+ # raise HTTPException(status_code=400, detail=f"URL did not return HTML content. Content-Type: {content_type}")
100
+
101
+ # Parse HTML content
102
+ soup = BeautifulSoup(response.text, 'html.parser')
103
+
104
+ # --- Inject Bridge Script ---
105
+ bridge_script_tag = soup.new_tag("script")
106
+ bridge_script_tag["src"] = BRIDGE_SCRIPT_PATH
107
+ bridge_script_tag["defer"] = True # Load after HTML parsing but before DOMContentLoaded
108
+
109
+ # Try injecting into <head>, fallback to <body>
110
+ head = soup.find('head')
111
+ if head:
112
+ head.append(bridge_script_tag)
113
+ else:
114
+ body = soup.find('body')
115
+ if body:
116
+ body.append(bridge_script_tag)
117
+ else:
118
+ # If no head or body, append to the root (less ideal)
119
+ soup.append(bridge_script_tag)
120
+ # --- End Injection ---
121
+
122
+ # --- Rewrite Resource URLs ---
123
+ # Get the final URL after potential redirects
124
+ final_url = response.url
125
+ # Define the base for our proxy endpoint (needed if we decide to proxy resources)
126
+ proxy_base_url = str(request.base_url) + "api/editable-preview/proxy"
127
+ rewrite_html_resources(soup, final_url, proxy_base_url)
128
+ # --- End Rewriting ---
129
+
130
+ # Return modified HTML
131
+ modified_html = str(soup)
132
+
133
+ # Prepare response, try to remove X-Frame-Options
134
+ resp_headers = dict(response.headers)
135
+ # Remove security headers that prevent framing (use with caution)
136
+ resp_headers.pop('X-Frame-Options', None)
137
+ resp_headers.pop('Content-Security-Policy', None)
138
+ # Remove Content-Length header
139
+ resp_headers.pop('Content-Length', None)
140
+ # Ensure correct content type
141
+ resp_headers['Content-Type'] = 'text/html; charset=utf-8' # Force UTF-8
142
+
143
+ return HTMLResponse(content=modified_html, headers=resp_headers)
144
+
145
+ except requests.exceptions.Timeout:
146
+ raise HTTPException(status_code=504, detail=f"Timeout while fetching URL: {url}")
147
+ except requests.exceptions.RequestException as e:
148
+ logger.error(f"Error fetching URL {url}: {e}")
149
+ raise HTTPException(status_code=502, detail=f"Failed to fetch URL: {url}. Error: {str(e)}")
150
+ except Exception as e:
151
+ logger.error(f"Error processing proxy request for {url}: {e}", exc_info=True)
152
+ raise HTTPException(status_code=500, detail=f"Internal server error processing URL: {url}")
153
+
154
+
155
+ class SavePreviewRequest(BaseModel):
156
+ url: str
157
+ html_content: str
158
+
159
+ @router.post("/api/editable-preview/save")
160
+ async def save_edited_preview(payload: SavePreviewRequest = Body(...)):
161
+ """Saves the edited HTML content for a given URL."""
162
+ try:
163
+ url = payload.url
164
+ html_content = payload.html_content
165
+
166
+ if not url or not html_content:
167
+ raise HTTPException(status_code=400, detail="Missing URL or HTML content")
168
+
169
+ # Generate a unique filename or use a hash of the URL
170
+ parsed_url = urlparse(url)
171
+ # Sanitize filename (basic example)
172
+ filename_base = f"{parsed_url.netloc}_{parsed_url.path}".replace('/', '_').replace('.', '_')
173
+ filename_base = "".join(c for c in filename_base if c.isalnum() or c in ('_', '-')).rstrip('_')[:100] # Limit length
174
+
175
+ save_id = str(uuid.uuid4())
176
+ timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
177
+ filename = f"{filename_base}_{timestamp}_{save_id}.html"
178
+ filepath = SAVED_PREVIEWS_DIR / filename
179
+
180
+ metadata = {
181
+ "original_url": url,
182
+ "saved_at": datetime.now().isoformat(),
183
+ "save_id": save_id,
184
+ "filename": filename
185
+ }
186
+ meta_filepath = SAVED_PREVIEWS_DIR / f"{filename}.meta.json"
187
+
188
+
189
+ async with aiofiles.open(filepath, mode='w', encoding='utf-8') as f:
190
+ await f.write(html_content)
191
+
192
+ async with aiofiles.open(meta_filepath, mode='w', encoding='utf-8') as f:
193
+ await f.write(json.dumps(metadata, indent=2))
194
+
195
+ logger.info(f"Saved edited preview for URL '{url}' to '{filepath}'")
196
+ return {"status": "success", "save_id": save_id, "filename": filename}
197
+
198
+ except HTTPException:
199
+ raise # Re-raise HTTP exceptions
200
+ except Exception as e:
201
+ logger.error(f"Error saving edited preview for URL '{payload.url}': {e}", exc_info=True)
202
+ raise HTTPException(status_code=500, detail="Failed to save edited preview")
@@ -0,0 +1 @@
1
+ __version__ = "0.1.61"
@@ -1,4 +1,4 @@
1
- import{m as et}from"./index-U694gZ5i.js";/*!-----------------------------------------------------------------------------
1
+ import{m as et}from"./index-kyBHOjJU.js";/*!-----------------------------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
3
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
4
4
  * Released under the MIT license
@@ -1,4 +1,4 @@
1
- import{m as f}from"./index-U694gZ5i.js";/*!-----------------------------------------------------------------------------
1
+ import{m as f}from"./index-kyBHOjJU.js";/*!-----------------------------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
3
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
4
4
  * Released under the MIT license
@@ -1,4 +1,4 @@
1
- import{m as l}from"./index-U694gZ5i.js";/*!-----------------------------------------------------------------------------
1
+ import{m as l}from"./index-kyBHOjJU.js";/*!-----------------------------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
3
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
4
4
  * Released under the MIT license
@@ -1,4 +1,4 @@
1
- import{m as s}from"./index-U694gZ5i.js";/*!-----------------------------------------------------------------------------
1
+ import{m as s}from"./index-kyBHOjJU.js";/*!-----------------------------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
3
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
4
4
  * Released under the MIT license
@@ -1,4 +1,4 @@
1
- import{m as lt}from"./index-U694gZ5i.js";/*!-----------------------------------------------------------------------------
1
+ import{m as lt}from"./index-kyBHOjJU.js";/*!-----------------------------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
3
  * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
4
4
  * Released under the MIT license
@@ -29,4 +29,4 @@
29
29
  * The original design remains. The terminal itself
30
30
  * has been extended to include xterm CSI codes, among
31
31
  * other features.
32
- */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.split-container{display:flex;width:100%;height:100%}.gutter{background-color:#4b5563;position:relative}.gutter.gutter-horizontal{cursor:col-resize}.gutter:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:4px;height:20px;background-color:#9ca3af;border-radius:2px}.gutter:hover:after{background-color:#f3f4f6}.split-container>div{height:100%;min-width:0;overflow:hidden}.task-status-card{width:100%;margin-bottom:16px;box-shadow:0 2px 8px #00000026;background-color:#2d2d2d;border:1px solid #374151}.task-status-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.task-status-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 0;gap:16px}.task-status-footer{display:flex;justify-content:flex-end;padding-top:8px}.todo-container{background-color:transparent}.todo-column{background-color:#1a1a1a;border:1px solid #2d2d2d;transition:all .2s ease;min-height:200px;transition:all .3s ease-in-out;position:relative;overflow:hidden}.todo-column:hover{border-color:#3d3d3d}.todo-column.is-dragging-over{border-color:#3b82f6;background:#3b82f61a;transition:background .2s ease}.todo-card{background-color:#2d2d2d;border:1px solid #374151;transition:all .2s ease;cursor:move;-webkit-user-select:none;user-select:none}.todo-card:hover{background-color:#374151;transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.todo-card.is-dragging{border-color:#3b82f6;box-shadow:0 4px 8px #3b82f633;transform:scale(1.02);opacity:.8}.todo-title{color:#e5e7eb;font-size:14px;line-height:1.4}.todo-due-date{color:#9ca3af;font-size:12px;margin-top:4px}.todo-tags{display:flex;gap:4px;flex-wrap:wrap}.ant-modal-title{color:#e5e7eb!important}.ant-modal-close{color:#9ca3af!important}.ant-modal-close:hover{color:#e5e7eb!important}.custom-input{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.custom-select .ant-select-selector{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:#1e293b}.custom-scrollbar::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#475569}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:#4B5563 #374151}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .3s ease-in-out}.loading-spinner{display:inline-block;width:30px;height:30px;border:3px solid rgba(59,130,246,.3);border-radius:50%;border-top-color:#3b82f6;animation:spin 1s ease-in-out infinite}.bg-gray-750{background-color:#222933}.task-split-result-view{box-shadow:0 4px 12px #00000040;animation:slideDown .3s ease-in-out;border-radius:8px;overflow:hidden}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.task-split-result-view .ant-typography{transition:color .3s ease}.task-split-result-view .ant-collapse-item{margin-bottom:8px;border-radius:6px;overflow:hidden}.task-split-result-view .ant-card{transition:all .3s ease}.task-split-result-view .ant-card:hover{transform:translateY(-1px);box-shadow:0 6px 12px #00000026}.task-split-result-view .ant-divider{margin:16px 0}.task-split-result-view .ant-tag{transition:all .3s ease}.task-split-result-view .ant-tag:hover{transform:scale(1.05)}.todo-board{gap:1rem}.todo-column.flex.w-full{animation:scaleUp .3s ease-in-out}@keyframes scaleUp{0%{transform:scale(.98)}to{transform:scale(1)}}.todo-column.flex-1{animation:fadeIn .3s ease-in-out}.todo-column.maximized{flex:1 0 100%}.todo-column .maximize-button{opacity:.7;transition:opacity .2s ease}.todo-column:hover .maximize-button{opacity:1}.todo-column-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.todo-column-header h3{margin:0;font-weight:500}.split-vertical{display:flex!important;flex-direction:column!important;height:100%!important;width:100%!important}.split-vertical>.gutter{height:5px!important;width:100%!important;background-color:#4b5563;cursor:row-resize!important;margin:0!important;z-index:10!important;transition:background-color .2s;position:relative!important;left:0!important;right:0!important}.split-vertical>.gutter:hover,.split-vertical>.gutter.dragging{background-color:#3b82f6}.split-vertical>.gutter:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:30px;height:2px;background-color:#fff9;border-radius:1px;box-shadow:0 -2px #fff9,0 2px #fff9}.split-horizontal{display:flex!important;height:100%!important}.split-horizontal>.gutter{width:5px!important;background-color:#4b5563;cursor:col-resize!important;margin:0!important;z-index:10!important;transition:background-color .2s}.split-horizontal>.gutter:hover,.split-horizontal>.gutter.dragging{background-color:#3b82f6}.initialization-page{min-height:100vh;background-color:#111827;color:#fff}.initialization-card{background-color:#1f2937!important;border-color:#374151!important;color:#fff!important;width:100%;max-width:640px}.initialization-title{color:#fff!important;font-size:1.25rem;margin-bottom:1rem}.initialization-description{color:#e5e7eb!important;margin-bottom:1.5rem}.ant-steps-item-title{color:#fff!important}.ant-steps-item-description{color:#e5e7eb!important}.ant-card-body{color:#fff!important}.ant-steps-item-wait .ant-steps-item-icon{background-color:#fff3!important;border-color:#fff3!important}.ant-steps-item-wait .ant-steps-item-icon>.ant-steps-icon{color:#fffc!important}.ant-spin-dot-item{background-color:#fff!important}.ant-steps-item-process .ant-steps-item-icon{background-color:#3b82f6!important;border-color:#3b82f6!important}.ant-steps-icon{color:#fff!important}.ant-steps-item-finish .ant-steps-item-icon{border-color:#3b82f6!important}.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#3b82f6!important}html,body{margin:0;height:100%;background-color:#1a1a1a}#root{height:100%}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:#2d2d2d}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}.custom-select .ant-select-selector{background-color:#374151!important;border-color:#4b5563!important;color:#fff!important;height:24px!important;padding:0 6px!important;font-size:12px!important}.custom-select .ant-select-selection-placeholder{color:#9ca3af!important}.custom-select .ant-select-selection-item{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important}.custom-select.ant-select-multiple .ant-select-selection-item{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important;margin-top:2px!important;margin-bottom:2px!important}.custom-select .ant-select-selection-item-content,.custom-select .ant-select-selection-item-remove,.custom-select .ant-select-selection-item .anticon,.custom-select .ant-select-selection-item span{color:#fff!important}.custom-select .ant-select-selection-item .ant-select-selection-item-remove{color:#ffffffa6!important}.custom-select .ant-select-selection-item .ant-select-selection-item-remove:hover{color:#fff!important}.custom-select .ant-select-dropdown{background-color:#374151!important;border:1px solid #4B5563!important}.custom-select .ant-select-item{color:#fff!important}.custom-select .ant-select-item-option-active{background-color:#4b5563!important}.custom-select .ant-select-item-option-selected{background-color:#6b7280!important}.custom-select .ant-select-selection-search input{color:#fff!important}.custom-select .ant-select-clear{background-color:transparent!important;color:#9ca3af!important}.custom-select .ant-select-arrow{color:#9ca3af!important}.dark-theme-modal .ant-modal-title{color:#e5e7eb!important}.dark-theme-modal .ant-modal-close{color:#9ca3af!important}.dark-theme-modal .ant-modal-close:hover{color:#e5e7eb!important}.dark-theme-list .ant-list-item{border-color:#374151!important}.dark-theme-list .ant-list-item:hover{background-color:#374151!important}.dark-theme-input{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.dark-theme-input::placeholder{color:#9ca3af!important}.dark-theme-input:hover,.dark-theme-input:focus{border-color:#6366f1!important;box-shadow:0 0 0 2px #6366f133!important}.split{display:flex;flex-direction:row}.gutter{background-color:#4b5563;cursor:col-resize;width:2px!important}.gutter:hover{background-color:#6b7280}.custom-input{background-color:#1f2937!important;border-color:#4b5563!important;color:#e5e7eb!important}.custom-input::placeholder{color:#9ca3af!important;opacity:1!important}.custom-input:hover,.custom-input:focus{border-color:#6366f1!important;box-shadow:0 0 0 2px #6366f133!important}.custom-input input{background-color:transparent!important;color:#e5e7eb!important}.custom-input .anticon{color:#9ca3af!important}.dark-mode-table,.dark-mode-table .ant-table{background-color:transparent!important}.dark-mode-table .ant-table-thead>tr>th{background-color:#374151!important;color:#fff!important;border-bottom:1px solid #4B5563!important}.dark-mode-table .ant-table-tbody>tr>td{border-bottom:1px solid #4B5563!important;color:#fff!important}.dark-mode-table .ant-table-tbody>tr:hover>td{background-color:#4b5563!important}.dark-mode-table .ant-table-row-expand-icon{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important}.dark-mode-table .nested-table{margin:0!important;padding:0!important}.dark-mode-table .nested-table .ant-table-tbody>tr>td{background-color:#1f2937!important}.dark-mode-table .nested-table .ant-table-tbody>tr:hover>td{background-color:#374151!important}.custom-select .ant-select-selection-overflow-item .ant-select-selection-item{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important}.custom-select .ant-select-selection-overflow-item .ant-select-selection-item-content{color:#fff!important}.custom-select .ant-select-selection-overflow-item .ant-select-selection-item-remove{color:#ffffffa6!important}.custom-select .ant-select-selection-overflow-item .ant-select-selection-item-remove:hover{color:#fff!important}.dark-dropdown-menu{background-color:#1f2937!important;border:1px solid #374151!important;color:#e5e7eb!important}.dark-dropdown-menu .ant-select-item{color:#e5e7eb!important;background-color:#1f2937!important}.dark-dropdown-menu .ant-select-item-option-active{background-color:#374151!important}.dark-dropdown-menu .ant-select-item-option-selected{background-color:#3b82f6!important;color:#fff!important}.dark-dropdown-menu .ant-select-item-empty{color:#9ca3af!important}.dark-dropdown-menu .ant-select-item-group{color:#9ca3af!important;font-weight:700;padding:8px 12px}.file-option{transition:background-color .2s}.dark-dropdown-menu .file-option{background-color:transparent!important}.dark-dropdown-menu .file-option:hover{background-color:#374151!important}.dark-table.ant-table-wrapper{background-color:#1e1e1e;color:#e0e0e0;border-radius:6px}.dark-table .ant-table{background-color:#1e1e1e!important;color:#e0e0e0!important}.dark-table .ant-table-container{background-color:#1e1e1e!important;border-radius:6px}.dark-table .ant-table-thead>tr>th{background-color:#2c2c2c!important;color:#e0e0e0!important;border-bottom:1px solid #383838!important}.dark-table .ant-table-tbody>tr>td{background-color:#1e1e1e!important;border-bottom:1px solid #383838!important;color:#e0e0e0!important}.dark-table .ant-table-tbody>tr.ant-table-row:hover>td{background-color:#2c2c2c!important}.dark-table .ant-empty{color:#a0a0a0!important}.dark-table .ant-empty-image svg{fill:#333!important}.dark-table .ant-empty-description,.dark-table .ant-empty-footer{color:#a0a0a0!important}.model-table .ant-table-placeholder .ant-table-cell{background-color:#1e1e1e!important;color:#a0a0a0!important;border-bottom:none!important}.model-table .ant-empty-normal .ant-empty-image{height:40px;margin-bottom:8px}.dark-table .ant-pagination{background-color:transparent!important;color:#e0e0e0!important}.dark-table .ant-pagination-item{background-color:#2c2c2c!important;border-color:#383838!important}.dark-table .ant-pagination-item a{color:#e0e0e0!important}.dark-table .ant-pagination-item-active{background-color:#177ddc!important;border-color:#177ddc!important}.dark-table .ant-pagination-item-active a{color:#fff!important}.dark-table .ant-pagination-prev button,.dark-table .ant-pagination-next button{color:#e0e0e0!important;background-color:#2c2c2c!important;border-color:#383838!important}.dark-modal .ant-modal-content{background-color:#1e1e1e;color:#e0e0e0;border-radius:6px;box-shadow:0 6px 16px -8px #0009}.dark-modal .ant-modal-header{background-color:#1e1e1e;border-bottom:1px solid #383838;border-radius:6px 6px 0 0}.dark-modal .ant-modal-title{color:#e0e0e0}.dark-modal .ant-modal-close{color:#a0a0a0}.dark-modal .ant-modal-footer{border-top:1px solid #383838}.dark-form .ant-form-item-label>label{color:#e0e0e0}.dark-input{background-color:#2c2c2c;border-color:#434343;color:#e0e0e0}.dark-input:hover,.dark-input:focus{border-color:#177ddc}.dark-input::placeholder{color:#6c6c6c}.dark-input[disabled]{background-color:#3a3a3a;color:#a0a0a0}.dark-select .ant-select-selector{background-color:#2c2c2c!important;border-color:#434343!important;color:#e0e0e0!important}.dark-select.ant-select-disabled .ant-select-selector{background-color:#3a3a3a!important;color:#a0a0a0!important}.dark-select .ant-select-arrow{color:#a0a0a0!important}.ant-select-dropdown{background-color:#1e1e1e!important;border:1px solid #383838!important}.ant-select-item{color:#e0e0e0!important}.ant-select-item-option-selected{background-color:#111b26!important}.ant-select-item-option-active{background-color:#2a2a2a!important}.dark-button.ant-btn{border-color:#434343;background-color:#2c2c2c;color:#e0e0e0}.dark-button.ant-btn:hover{border-color:#177ddc;color:#177ddc}.dark-button.ant-btn-primary{background-color:#177ddc;border-color:#177ddc;color:#fff}.dark-button.ant-btn-primary:hover{background-color:#1884e0;border-color:#1884e0}.dark-button.ant-btn-dangerous{color:#ff4d4f;border-color:#ff4d4f}.dark-button.ant-btn-dangerous:hover{background-color:#2c2c2c;color:#ff7875;border-color:#ff7875}.dark-switch.ant-switch{background-color:#434343}.dark-switch.ant-switch-checked{background-color:#177ddc}.dark-popconfirm .ant-popover-inner{background-color:#1e1e1e;border:1px solid #383838}.dark-popconfirm .ant-popover-title,.dark-popconfirm .ant-popover-inner-content{color:#e0e0e0}.dark-popconfirm .ant-popover-arrow-content{background-color:#1e1e1e}.settings-tabs .ant-tabs-nav{margin-bottom:16px!important;background-color:#111827!important;border-bottom:1px solid #1e293b!important}.settings-tabs .ant-tabs-tab{color:#a0a0a0!important;padding:8px 16px!important}.settings-tabs .ant-tabs-tab:hover{color:#3b82f6!important}.settings-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#3b82f6!important;font-weight:500!important}.settings-tabs .ant-tabs-ink-bar{background-color:#3b82f6!important}.settings-tabs .ant-tabs-content{background-color:transparent!important}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*{scrollbar-color:initial;scrollbar-width:initial}.\!container{width:100%!important}.container{width:100%}@media (min-width: 640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width: 768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width: 1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width: 1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width: 1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-right-2{right:-.5rem}.-right-4{right:-1rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-24{bottom:6rem}.left-0{left:0}.left-10{left:2.5rem}.left-2{left:.5rem}.left-3\.5{left:.875rem}.right-0{right:0}.right-1{right:.25rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.float-right{float:right}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mb-0\.5{margin-bottom:-.125rem}.-ml-1{margin-left:-.25rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.\!inline{display:inline!important}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-4\/5{height:80%}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[80vh\]{height:80vh}.h-\[calc\(100\%-80px\)\]{height:calc(100% - 80px)}.h-full{height:100%}.h-screen{height:100vh}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[120px\]{max-height:120px}.max-h-\[150px\]{max-height:150px}.max-h-\[calc\(100vh-220px\)\]{max-height:calc(100vh - 220px)}.max-h-screen{max-height:100vh}.min-h-\[80px\]{min-height:80px}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-4\/5{width:80%}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-\[50px\]{width:50px}.w-\[80\%\]{width:80%}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[16rem\]{min-width:16rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[150px\]{max-width:150px}.max-w-\[16rem\]{max-width:16rem}.max-w-\[180px\]{max-width:180px}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.origin-top-right{transform-origin:top right}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl-lg{border-bottom-left-radius:.5rem}.rounded-tl-none{border-top-left-radius:0}.rounded-tr-none{border-top-right-radius:0}.border{border-width:1px}.border-0{border-width:0px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-0{border-left-width:0px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-solid{border-style:solid}.border-none{border-style:none}.border-\[\#374151\]{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-gray-700\/50{border-color:#37415180}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-indigo-500{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.border-indigo-600{--tw-border-opacity: 1;border-color:rgb(79 70 229 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-sky-500{--tw-border-opacity: 1;border-color:rgb(14 165 233 / var(--tw-border-opacity, 1))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-r-transparent{border-right-color:transparent}.bg-\[\#111827\]{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-\[\#1F2937\]{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-\[\#1e1e1e\]{--tw-bg-opacity: 1;background-color:rgb(30 30 30 / var(--tw-bg-opacity, 1))}.bg-\[\#1f1f1f\]{--tw-bg-opacity: 1;background-color:rgb(31 31 31 / var(--tw-bg-opacity, 1))}.bg-\[\#2d2d2d\]{--tw-bg-opacity: 1;background-color:rgb(45 45 45 / var(--tw-bg-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.bg-blue-900\/30{background-color:#1e3a8a4d}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-700\/50{background-color:#37415180}.bg-gray-700\/70{background-color:#374151b3}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-gray-800\/50{background-color:#1f293780}.bg-gray-800\/60{background-color:#1f293799}.bg-gray-800\/90{background-color:#1f2937e6}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-green-800{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity, 1))}.bg-green-900{--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-indigo-700\/40{background-color:#4338ca66}.bg-purple-700{--tw-bg-opacity: 1;background-color:rgb(126 34 206 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.bg-red-900\/80{background-color:#7f1d1dcc}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-opacity-25{--tw-bg-opacity: .25}.bg-opacity-50{--tw-bg-opacity: .5}.bg-opacity-70{--tw-bg-opacity: .7}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-800{--tw-gradient-from: #1f2937 var(--tw-gradient-from-position);--tw-gradient-to: rgb(31 41 55 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-800{--tw-gradient-from: #6b21a8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(107 33 168 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-purple-700{--tw-gradient-to: #7e22ce var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pl-16{padding-left:4rem}.pl-4{padding-left:1rem}.pr-1{padding-right:.25rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xs{font-size:.625rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[14px\]{font-size:14px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tracking-wider{letter-spacing:.05em}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-100{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-green-100{--tw-text-opacity: 1;color:rgb(220 252 231 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600\/70{color:#16a34ab3}.text-indigo-300{--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.text-purple-300{--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-sky-400{--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-blue-500\/20{--tw-shadow-color: rgb(59 130 246 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1))}.ring-opacity-5{--tw-ring-opacity: .05}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-100{transition-delay:.1s}.delay-200{transition-delay:.2s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.scrollbar::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track-hover, var(--scrollbar-track))}.scrollbar::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track-active, var(--scrollbar-track-hover, var(--scrollbar-track)))}.scrollbar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover, var(--scrollbar-thumb))}.scrollbar::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb-active, var(--scrollbar-thumb-hover, var(--scrollbar-thumb)))}.scrollbar::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner-hover, var(--scrollbar-corner))}.scrollbar::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner-active, var(--scrollbar-corner-hover, var(--scrollbar-corner)))}.scrollbar{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)}.scrollbar::-webkit-scrollbar{display:block;width:var(--scrollbar-width, 16px);height:var(--scrollbar-height, 16px)}.scrollbar-thin::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar-thin::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track-hover, var(--scrollbar-track))}.scrollbar-thin::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track-active, var(--scrollbar-track-hover, var(--scrollbar-track)))}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover, var(--scrollbar-thumb))}.scrollbar-thin::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb-active, var(--scrollbar-thumb-hover, var(--scrollbar-thumb)))}.scrollbar-thin::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar-thin::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner-hover, var(--scrollbar-corner))}.scrollbar-thin::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner-active, var(--scrollbar-corner-hover, var(--scrollbar-corner)))}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)}.scrollbar-thin::-webkit-scrollbar{display:block;width:8px;height:8px}.scrollbar-track-gray-800{--scrollbar-track: #1f2937 !important}.scrollbar-thumb-gray-700{--scrollbar-thumb: #374151 !important}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{transform:translate(-20px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-fade-in{animation:fadeIn .3s ease-out forwards}.animate-slide-in{animation:slideIn .3s ease-out forwards}.animate-pulse{animation:pulse 2s infinite}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a1a1a1}.diff-viewer-tabs .ant-tabs-nav{margin-bottom:0!important}.diff-viewer-tabs .ant-tabs-tab{background-color:#1a2234!important;border:1px solid #374151!important;border-bottom:none!important;padding:0!important;margin-right:2px!important;border-radius:6px 6px 0 0!important;transition:all .3s}.diff-viewer-tabs .ant-tabs-tab-active{background-color:#2d3748!important;border-color:#4b5563!important}.diff-viewer-tabs .ant-tabs-content-holder{border-top:1px solid #374151;background-color:#111827}.diff-viewer-tabs .ant-tabs-content{height:100%;background-color:#111827}.custom-tabs-bar{padding:0!important;margin:0!important}.bg-\[\#111827\]::-webkit-scrollbar-track,.bg-\[#1F2937\]::-webkit-scrollbar-track{background:#1f2937}.bg-\[\#111827\]::-webkit-scrollbar-thumb,.bg-\[#1F2937\]::-webkit-scrollbar-thumb{background:#4b5563}.bg-\[\#111827\]::-webkit-scrollbar-thumb:hover,.bg-\[#1F2937\]::-webkit-scrollbar-thumb:hover{background:#6b7280}.last\:border-b-0:last-child{border-bottom-width:0px}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:opacity-100{opacity:1}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:bg-\[\#2D3748\]:hover{--tw-bg-opacity: 1;background-color:rgb(45 55 72 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-600:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-700\/50:hover{background-color:#37415180}.hover\:bg-gray-700\/80:hover{background-color:#374151cc}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-800:hover{--tw-bg-opacity: 1;background-color:rgb(107 33 168 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:from-amber-600:hover{--tw-gradient-from: #d97706 var(--tw-gradient-from-position);--tw-gradient-to: rgb(217 119 6 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-blue-600:hover{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-indigo-700:hover{--tw-gradient-to: #4338ca var(--tw-gradient-to-position)}.hover\:to-orange-700:hover{--tw-gradient-to: #c2410c var(--tw-gradient-to-position)}.hover\:text-blue-300:hover{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.hover\:text-green-400:hover{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.hover\:text-red-300:hover{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-blue-500\/30:hover{--tw-shadow-color: rgb(59 130 246 / .3);--tw-shadow: var(--tw-shadow-colored)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-gray-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity, 1))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus\:ring-offset-gray-800:focus{--tw-ring-offset-color: #1f2937}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width: 640px){.sm\:px-0{padding-left:0;padding-right:0}}
32
+ */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.split-container{display:flex;width:100%;height:100%}.gutter{background-color:#4b5563;position:relative}.gutter.gutter-horizontal{cursor:col-resize}.gutter:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:4px;height:20px;background-color:#9ca3af;border-radius:2px}.gutter:hover:after{background-color:#f3f4f6}.split-container>div{height:100%;min-width:0;overflow:hidden}.task-status-card{width:100%;margin-bottom:16px;box-shadow:0 2px 8px #00000026;background-color:#2d2d2d;border:1px solid #374151}.task-status-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.task-status-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 0;gap:16px}.task-status-footer{display:flex;justify-content:flex-end;padding-top:8px}.todo-container{background-color:transparent}.todo-column{background-color:#1a1a1a;border:1px solid #2d2d2d;transition:all .2s ease;min-height:200px;transition:all .3s ease-in-out;position:relative;overflow:hidden}.todo-column:hover{border-color:#3d3d3d}.todo-column.is-dragging-over{border-color:#3b82f6;background:#3b82f61a;transition:background .2s ease}.todo-card{background-color:#2d2d2d;border:1px solid #374151;transition:all .2s ease;cursor:move;-webkit-user-select:none;user-select:none}.todo-card:hover{background-color:#374151;transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.todo-card.is-dragging{border-color:#3b82f6;box-shadow:0 4px 8px #3b82f633;transform:scale(1.02);opacity:.8}.todo-title{color:#e5e7eb;font-size:14px;line-height:1.4}.todo-due-date{color:#9ca3af;font-size:12px;margin-top:4px}.todo-tags{display:flex;gap:4px;flex-wrap:wrap}.ant-modal-title{color:#e5e7eb!important}.ant-modal-close{color:#9ca3af!important}.ant-modal-close:hover{color:#e5e7eb!important}.custom-input{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.custom-select .ant-select-selector{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:#1e293b}.custom-scrollbar::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#475569}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:#4B5563 #374151}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .3s ease-in-out}.loading-spinner{display:inline-block;width:30px;height:30px;border:3px solid rgba(59,130,246,.3);border-radius:50%;border-top-color:#3b82f6;animation:spin 1s ease-in-out infinite}.bg-gray-750{background-color:#222933}.task-split-result-view{box-shadow:0 4px 12px #00000040;animation:slideDown .3s ease-in-out;border-radius:8px;overflow:hidden}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.task-split-result-view .ant-typography{transition:color .3s ease}.task-split-result-view .ant-collapse-item{margin-bottom:8px;border-radius:6px;overflow:hidden}.task-split-result-view .ant-card{transition:all .3s ease}.task-split-result-view .ant-card:hover{transform:translateY(-1px);box-shadow:0 6px 12px #00000026}.task-split-result-view .ant-divider{margin:16px 0}.task-split-result-view .ant-tag{transition:all .3s ease}.task-split-result-view .ant-tag:hover{transform:scale(1.05)}.todo-board{gap:1rem}.todo-column.flex.w-full{animation:scaleUp .3s ease-in-out}@keyframes scaleUp{0%{transform:scale(.98)}to{transform:scale(1)}}.todo-column.flex-1{animation:fadeIn .3s ease-in-out}.todo-column.maximized{flex:1 0 100%}.todo-column .maximize-button{opacity:.7;transition:opacity .2s ease}.todo-column:hover .maximize-button{opacity:1}.todo-column-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.todo-column-header h3{margin:0;font-weight:500}.split-vertical{display:flex!important;flex-direction:column!important;height:100%!important;width:100%!important}.split-vertical>.gutter{height:5px!important;width:100%!important;background-color:#4b5563;cursor:row-resize!important;margin:0!important;z-index:10!important;transition:background-color .2s;position:relative!important;left:0!important;right:0!important}.split-vertical>.gutter:hover,.split-vertical>.gutter.dragging{background-color:#3b82f6}.split-vertical>.gutter:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:30px;height:2px;background-color:#fff9;border-radius:1px;box-shadow:0 -2px #fff9,0 2px #fff9}.split-horizontal{display:flex!important;height:100%!important}.split-horizontal>.gutter{width:5px!important;background-color:#4b5563;cursor:col-resize!important;margin:0!important;z-index:10!important;transition:background-color .2s}.split-horizontal>.gutter:hover,.split-horizontal>.gutter.dragging{background-color:#3b82f6}.initialization-page{min-height:100vh;background-color:#111827;color:#fff}.initialization-card{background-color:#1f2937!important;border-color:#374151!important;color:#fff!important;width:100%;max-width:640px}.initialization-title{color:#fff!important;font-size:1.25rem;margin-bottom:1rem}.initialization-description{color:#e5e7eb!important;margin-bottom:1.5rem}.ant-steps-item-title{color:#fff!important}.ant-steps-item-description{color:#e5e7eb!important}.ant-card-body{color:#fff!important}.ant-steps-item-wait .ant-steps-item-icon{background-color:#fff3!important;border-color:#fff3!important}.ant-steps-item-wait .ant-steps-item-icon>.ant-steps-icon{color:#fffc!important}.ant-spin-dot-item{background-color:#fff!important}.ant-steps-item-process .ant-steps-item-icon{background-color:#3b82f6!important;border-color:#3b82f6!important}.ant-steps-icon{color:#fff!important}.ant-steps-item-finish .ant-steps-item-icon{border-color:#3b82f6!important}.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#3b82f6!important}html,body{margin:0;height:100%;background-color:#1a1a1a}#root{height:100%}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:#2d2d2d}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}.custom-select .ant-select-selector{background-color:#374151!important;border-color:#4b5563!important;color:#fff!important;height:24px!important;padding:0 6px!important;font-size:12px!important}.custom-select .ant-select-selection-placeholder{color:#9ca3af!important}.custom-select .ant-select-selection-item{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important}.custom-select.ant-select-multiple .ant-select-selection-item{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important;margin-top:2px!important;margin-bottom:2px!important}.custom-select .ant-select-selection-item-content,.custom-select .ant-select-selection-item-remove,.custom-select .ant-select-selection-item .anticon,.custom-select .ant-select-selection-item span{color:#fff!important}.custom-select .ant-select-selection-item .ant-select-selection-item-remove{color:#ffffffa6!important}.custom-select .ant-select-selection-item .ant-select-selection-item-remove:hover{color:#fff!important}.custom-select .ant-select-dropdown{background-color:#374151!important;border:1px solid #4B5563!important}.custom-select .ant-select-item{color:#fff!important}.custom-select .ant-select-item-option-active{background-color:#4b5563!important}.custom-select .ant-select-item-option-selected{background-color:#6b7280!important}.custom-select .ant-select-selection-search input{color:#fff!important}.custom-select .ant-select-clear{background-color:transparent!important;color:#9ca3af!important}.custom-select .ant-select-arrow{color:#9ca3af!important}.dark-theme-modal .ant-modal-title{color:#e5e7eb!important}.dark-theme-modal .ant-modal-close{color:#9ca3af!important}.dark-theme-modal .ant-modal-close:hover{color:#e5e7eb!important}.dark-theme-list .ant-list-item{border-color:#374151!important}.dark-theme-list .ant-list-item:hover{background-color:#374151!important}.dark-theme-input{background-color:#1f2937!important;border-color:#374151!important;color:#e5e7eb!important}.dark-theme-input::placeholder{color:#9ca3af!important}.dark-theme-input:hover,.dark-theme-input:focus{border-color:#6366f1!important;box-shadow:0 0 0 2px #6366f133!important}.split{display:flex;flex-direction:row}.gutter{background-color:#4b5563;cursor:col-resize;width:2px!important}.gutter:hover{background-color:#6b7280}.custom-input{background-color:#1f2937!important;border-color:#4b5563!important;color:#e5e7eb!important}.custom-input::placeholder{color:#9ca3af!important;opacity:1!important}.custom-input:hover,.custom-input:focus{border-color:#6366f1!important;box-shadow:0 0 0 2px #6366f133!important}.custom-input input{background-color:transparent!important;color:#e5e7eb!important}.custom-input .anticon{color:#9ca3af!important}.dark-mode-table,.dark-mode-table .ant-table{background-color:transparent!important}.dark-mode-table .ant-table-thead>tr>th{background-color:#374151!important;color:#fff!important;border-bottom:1px solid #4B5563!important}.dark-mode-table .ant-table-tbody>tr>td{border-bottom:1px solid #4B5563!important;color:#fff!important}.dark-mode-table .ant-table-tbody>tr:hover>td{background-color:#4b5563!important}.dark-mode-table .ant-table-row-expand-icon{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important}.dark-mode-table .nested-table{margin:0!important;padding:0!important}.dark-mode-table .nested-table .ant-table-tbody>tr>td{background-color:#1f2937!important}.dark-mode-table .nested-table .ant-table-tbody>tr:hover>td{background-color:#374151!important}.custom-select .ant-select-selection-overflow-item .ant-select-selection-item{background-color:#4b5563!important;border-color:#6b7280!important;color:#fff!important}.custom-select .ant-select-selection-overflow-item .ant-select-selection-item-content{color:#fff!important}.custom-select .ant-select-selection-overflow-item .ant-select-selection-item-remove{color:#ffffffa6!important}.custom-select .ant-select-selection-overflow-item .ant-select-selection-item-remove:hover{color:#fff!important}.dark-dropdown-menu{background-color:#1f2937!important;border:1px solid #374151!important;color:#e5e7eb!important}.dark-dropdown-menu .ant-select-item{color:#e5e7eb!important;background-color:#1f2937!important}.dark-dropdown-menu .ant-select-item-option-active{background-color:#374151!important}.dark-dropdown-menu .ant-select-item-option-selected{background-color:#3b82f6!important;color:#fff!important}.dark-dropdown-menu .ant-select-item-empty{color:#9ca3af!important}.dark-dropdown-menu .ant-select-item-group{color:#9ca3af!important;font-weight:700;padding:8px 12px}.file-option{transition:background-color .2s}.dark-dropdown-menu .file-option{background-color:transparent!important}.dark-dropdown-menu .file-option:hover{background-color:#374151!important}.dark-table.ant-table-wrapper{background-color:#1e1e1e;color:#e0e0e0;border-radius:6px}.dark-table .ant-table{background-color:#1e1e1e!important;color:#e0e0e0!important}.dark-table .ant-table-container{background-color:#1e1e1e!important;border-radius:6px}.dark-table .ant-table-thead>tr>th{background-color:#2c2c2c!important;color:#e0e0e0!important;border-bottom:1px solid #383838!important}.dark-table .ant-table-tbody>tr>td{background-color:#1e1e1e!important;border-bottom:1px solid #383838!important;color:#e0e0e0!important}.dark-table .ant-table-tbody>tr.ant-table-row:hover>td{background-color:#2c2c2c!important}.dark-table .ant-empty{color:#a0a0a0!important}.dark-table .ant-empty-image svg{fill:#333!important}.dark-table .ant-empty-description,.dark-table .ant-empty-footer{color:#a0a0a0!important}.model-table .ant-table-placeholder .ant-table-cell{background-color:#1e1e1e!important;color:#a0a0a0!important;border-bottom:none!important}.model-table .ant-empty-normal .ant-empty-image{height:40px;margin-bottom:8px}.dark-table .ant-pagination{background-color:transparent!important;color:#e0e0e0!important}.dark-table .ant-pagination-item{background-color:#2c2c2c!important;border-color:#383838!important}.dark-table .ant-pagination-item a{color:#e0e0e0!important}.dark-table .ant-pagination-item-active{background-color:#177ddc!important;border-color:#177ddc!important}.dark-table .ant-pagination-item-active a{color:#fff!important}.dark-table .ant-pagination-prev button,.dark-table .ant-pagination-next button{color:#e0e0e0!important;background-color:#2c2c2c!important;border-color:#383838!important}.dark-modal .ant-modal-content{background-color:#1e1e1e;color:#e0e0e0;border-radius:6px;box-shadow:0 6px 16px -8px #0009}.dark-modal .ant-modal-header{background-color:#1e1e1e;border-bottom:1px solid #383838;border-radius:6px 6px 0 0}.dark-modal .ant-modal-title{color:#e0e0e0}.dark-modal .ant-modal-close{color:#a0a0a0}.dark-modal .ant-modal-footer{border-top:1px solid #383838}.dark-form .ant-form-item-label>label{color:#e0e0e0}.dark-input{background-color:#2c2c2c;border-color:#434343;color:#e0e0e0}.dark-input:hover,.dark-input:focus{border-color:#177ddc}.dark-input::placeholder{color:#6c6c6c}.dark-input[disabled]{background-color:#3a3a3a;color:#a0a0a0}.dark-select .ant-select-selector{background-color:#2c2c2c!important;border-color:#434343!important;color:#e0e0e0!important}.dark-select.ant-select-disabled .ant-select-selector{background-color:#3a3a3a!important;color:#a0a0a0!important}.dark-select .ant-select-arrow{color:#a0a0a0!important}.ant-select-dropdown{background-color:#1e1e1e!important;border:1px solid #383838!important}.ant-select-item{color:#e0e0e0!important}.ant-select-item-option-selected{background-color:#111b26!important}.ant-select-item-option-active{background-color:#2a2a2a!important}.dark-button.ant-btn{border-color:#434343;background-color:#2c2c2c;color:#e0e0e0}.dark-button.ant-btn:hover{border-color:#177ddc;color:#177ddc}.dark-button.ant-btn-primary{background-color:#177ddc;border-color:#177ddc;color:#fff}.dark-button.ant-btn-primary:hover{background-color:#1884e0;border-color:#1884e0}.dark-button.ant-btn-dangerous{color:#ff4d4f;border-color:#ff4d4f}.dark-button.ant-btn-dangerous:hover{background-color:#2c2c2c;color:#ff7875;border-color:#ff7875}.dark-switch.ant-switch{background-color:#434343}.dark-switch.ant-switch-checked{background-color:#177ddc}.dark-popconfirm .ant-popover-inner{background-color:#1e1e1e;border:1px solid #383838}.dark-popconfirm .ant-popover-title,.dark-popconfirm .ant-popover-inner-content{color:#e0e0e0}.dark-popconfirm .ant-popover-arrow-content{background-color:#1e1e1e}.settings-tabs .ant-tabs-nav{margin-bottom:16px!important;background-color:#111827!important;border-bottom:1px solid #1e293b!important}.settings-tabs .ant-tabs-tab{color:#a0a0a0!important;padding:8px 16px!important}.settings-tabs .ant-tabs-tab:hover{color:#3b82f6!important}.settings-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#3b82f6!important;font-weight:500!important}.settings-tabs .ant-tabs-ink-bar{background-color:#3b82f6!important}.settings-tabs .ant-tabs-content{background-color:transparent!important}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*{scrollbar-color:initial;scrollbar-width:initial}.\!container{width:100%!important}.container{width:100%}@media (min-width: 640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width: 768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width: 1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width: 1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width: 1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-right-2{right:-.5rem}.-right-4{right:-1rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-24{bottom:6rem}.left-0{left:0}.left-10{left:2.5rem}.left-2{left:.5rem}.left-3\.5{left:.875rem}.right-0{right:0}.right-1{right:.25rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.float-right{float:right}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mb-0\.5{margin-bottom:-.125rem}.-ml-1{margin-left:-.25rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.\!inline{display:inline!important}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-4\/5{height:80%}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[80vh\]{height:80vh}.h-\[calc\(100\%-80px\)\]{height:calc(100% - 80px)}.h-full{height:100%}.h-screen{height:100vh}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[120px\]{max-height:120px}.max-h-\[150px\]{max-height:150px}.max-h-\[calc\(100vh-220px\)\]{max-height:calc(100vh - 220px)}.max-h-screen{max-height:100vh}.min-h-\[80px\]{min-height:80px}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-4\/5{width:80%}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-\[50px\]{width:50px}.w-\[80\%\]{width:80%}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[16rem\]{min-width:16rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[150px\]{max-width:150px}.max-w-\[16rem\]{max-width:16rem}.max-w-\[180px\]{max-width:180px}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.origin-top-right{transform-origin:top right}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl-lg{border-bottom-left-radius:.5rem}.rounded-tl-none{border-top-left-radius:0}.rounded-tr-none{border-top-right-radius:0}.border{border-width:1px}.border-0{border-width:0px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-0{border-left-width:0px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-solid{border-style:solid}.border-none{border-style:none}.border-\[\#374151\]{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-gray-700\/50{border-color:#37415180}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-indigo-500{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.border-indigo-600{--tw-border-opacity: 1;border-color:rgb(79 70 229 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-sky-500{--tw-border-opacity: 1;border-color:rgb(14 165 233 / var(--tw-border-opacity, 1))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-r-transparent{border-right-color:transparent}.bg-\[\#111827\]{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-\[\#1F2937\]{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-\[\#1e1e1e\]{--tw-bg-opacity: 1;background-color:rgb(30 30 30 / var(--tw-bg-opacity, 1))}.bg-\[\#1f1f1f\]{--tw-bg-opacity: 1;background-color:rgb(31 31 31 / var(--tw-bg-opacity, 1))}.bg-\[\#2d2d2d\]{--tw-bg-opacity: 1;background-color:rgb(45 45 45 / var(--tw-bg-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.bg-blue-900\/30{background-color:#1e3a8a4d}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-700\/50{background-color:#37415180}.bg-gray-700\/70{background-color:#374151b3}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-gray-800\/50{background-color:#1f293780}.bg-gray-800\/60{background-color:#1f293799}.bg-gray-800\/90{background-color:#1f2937e6}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-green-800{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity, 1))}.bg-green-900{--tw-bg-opacity: 1;background-color:rgb(20 83 45 / var(--tw-bg-opacity, 1))}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-indigo-700\/40{background-color:#4338ca66}.bg-purple-700{--tw-bg-opacity: 1;background-color:rgb(126 34 206 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.bg-red-900\/80{background-color:#7f1d1dcc}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-opacity-25{--tw-bg-opacity: .25}.bg-opacity-50{--tw-bg-opacity: .5}.bg-opacity-70{--tw-bg-opacity: .7}.bg-opacity-75{--tw-bg-opacity: .75}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-800{--tw-gradient-from: #1f2937 var(--tw-gradient-from-position);--tw-gradient-to: rgb(31 41 55 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-800{--tw-gradient-from: #6b21a8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(107 33 168 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-pink-600{--tw-gradient-to: #db2777 var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-purple-700{--tw-gradient-to: #7e22ce var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pl-16{padding-left:4rem}.pl-4{padding-left:1rem}.pr-1{padding-right:.25rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xs{font-size:.625rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[14px\]{font-size:14px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tracking-wider{letter-spacing:.05em}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-100{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-green-100{--tw-text-opacity: 1;color:rgb(220 252 231 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600\/70{color:#16a34ab3}.text-indigo-300{--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.text-purple-300{--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-sky-400{--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-blue-500\/20{--tw-shadow-color: rgb(59 130 246 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-purple-500\/20{--tw-shadow-color: rgb(168 85 247 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1))}.ring-opacity-5{--tw-ring-opacity: .05}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-100{transition-delay:.1s}.delay-200{transition-delay:.2s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.scrollbar::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track-hover, var(--scrollbar-track))}.scrollbar::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track-active, var(--scrollbar-track-hover, var(--scrollbar-track)))}.scrollbar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover, var(--scrollbar-thumb))}.scrollbar::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb-active, var(--scrollbar-thumb-hover, var(--scrollbar-thumb)))}.scrollbar::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner-hover, var(--scrollbar-corner))}.scrollbar::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner-active, var(--scrollbar-corner-hover, var(--scrollbar-corner)))}.scrollbar{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)}.scrollbar::-webkit-scrollbar{display:block;width:var(--scrollbar-width, 16px);height:var(--scrollbar-height, 16px)}.scrollbar-thin::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar-thin::-webkit-scrollbar-track:hover{background-color:var(--scrollbar-track-hover, var(--scrollbar-track))}.scrollbar-thin::-webkit-scrollbar-track:active{background-color:var(--scrollbar-track-active, var(--scrollbar-track-hover, var(--scrollbar-track)))}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover, var(--scrollbar-thumb))}.scrollbar-thin::-webkit-scrollbar-thumb:active{background-color:var(--scrollbar-thumb-active, var(--scrollbar-thumb-hover, var(--scrollbar-thumb)))}.scrollbar-thin::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar-thin::-webkit-scrollbar-corner:hover{background-color:var(--scrollbar-corner-hover, var(--scrollbar-corner))}.scrollbar-thin::-webkit-scrollbar-corner:active{background-color:var(--scrollbar-corner-active, var(--scrollbar-corner-hover, var(--scrollbar-corner)))}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)}.scrollbar-thin::-webkit-scrollbar{display:block;width:8px;height:8px}.scrollbar-track-gray-800{--scrollbar-track: #1f2937 !important}.scrollbar-thumb-gray-700{--scrollbar-thumb: #374151 !important}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{transform:translate(-20px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-fade-in{animation:fadeIn .3s ease-out forwards}.animate-slide-in{animation:slideIn .3s ease-out forwards}.animate-pulse{animation:pulse 2s infinite}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a1a1a1}.diff-viewer-tabs .ant-tabs-nav{margin-bottom:0!important}.diff-viewer-tabs .ant-tabs-tab{background-color:#1a2234!important;border:1px solid #374151!important;border-bottom:none!important;padding:0!important;margin-right:2px!important;border-radius:6px 6px 0 0!important;transition:all .3s}.diff-viewer-tabs .ant-tabs-tab-active{background-color:#2d3748!important;border-color:#4b5563!important}.diff-viewer-tabs .ant-tabs-content-holder{border-top:1px solid #374151;background-color:#111827}.diff-viewer-tabs .ant-tabs-content{height:100%;background-color:#111827}.custom-tabs-bar{padding:0!important;margin:0!important}.bg-\[\#111827\]::-webkit-scrollbar-track,.bg-\[#1F2937\]::-webkit-scrollbar-track{background:#1f2937}.bg-\[\#111827\]::-webkit-scrollbar-thumb,.bg-\[#1F2937\]::-webkit-scrollbar-thumb{background:#4b5563}.bg-\[\#111827\]::-webkit-scrollbar-thumb:hover,.bg-\[#1F2937\]::-webkit-scrollbar-thumb:hover{background:#6b7280}.last\:border-b-0:last-child{border-bottom-width:0px}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:opacity-100{opacity:1}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:bg-\[\#2D3748\]:hover{--tw-bg-opacity: 1;background-color:rgb(45 55 72 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-600:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-700\/50:hover{background-color:#37415180}.hover\:bg-gray-700\/80:hover{background-color:#374151cc}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-800:hover{--tw-bg-opacity: 1;background-color:rgb(107 33 168 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:from-amber-600:hover{--tw-gradient-from: #d97706 var(--tw-gradient-from-position);--tw-gradient-to: rgb(217 119 6 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-blue-600:hover{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-purple-600:hover{--tw-gradient-from: #9333ea var(--tw-gradient-from-position);--tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-indigo-700:hover{--tw-gradient-to: #4338ca var(--tw-gradient-to-position)}.hover\:to-orange-700:hover{--tw-gradient-to: #c2410c var(--tw-gradient-to-position)}.hover\:to-pink-700:hover{--tw-gradient-to: #be185d var(--tw-gradient-to-position)}.hover\:text-blue-300:hover{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.hover\:text-green-400:hover{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.hover\:text-red-300:hover{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-blue-500\/30:hover{--tw-shadow-color: rgb(59 130 246 / .3);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-purple-500\/30:hover{--tw-shadow-color: rgb(168 85 247 / .3);--tw-shadow: var(--tw-shadow-colored)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-gray-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity, 1))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus\:ring-offset-gray-800:focus{--tw-ring-offset-color: #1f2937}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-gray-600:disabled{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width: 640px){.sm\:px-0{padding-left:0;padding-right:0}}