diff --git a/.next/dev/logs/next-development.log b/.next/dev/logs/next-development.log index 9460303b..10540618 100644 --- a/.next/dev/logs/next-development.log +++ b/.next/dev/logs/next-development.log @@ -59,3 +59,374 @@ [00:04:24.920] Server LOG 🌳 GET /api/trees 返回数据: {} [00:04:25.033] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887371872} [00:07:02.684] Server LOG ✓ Compiled in 72ms +[00:08:20.459] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:20.688] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:20.702] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:20.716] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:20.803] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:08:20.874] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhso000thhxl6jztirc0 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhso000thhxl6jztirc0","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887607661} +[00:08:33.470] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:33.485] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:33.599] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887620443} +[00:08:37.658] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:37.669] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:37.680] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:37.729] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:08:37.804] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibe02rs000r13eiug7grp9w color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibe02rs000r13eiug7grp9w","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887624632} +[00:08:49.608] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:49.623] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:08:49.748] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887636582} +[00:09:20.951] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:20.963] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:20.977] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:21.070] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:09:21.122] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhs1000bhhxlovwol0op color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhs1000bhhxlovwol0op","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887667924} +[00:09:31.342] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:31.357] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:31.464] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887678313} +[00:09:33.511] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:33.523] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:33.536] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:33.591] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:09:33.665] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhs5000dhhxlo39he5la color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhs5000dhhxlo39he5la","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887680483} +[00:09:38.939] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:38.953] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:09:39.068] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763887685907} +[00:10:26.407] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:10:26.738] Server LOG ✓ Compiled in 158ms +[00:10:28.495] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:11:30.931] Server LOG ✓ Compiled in 93ms +[00:12:09.414] Server LOG ✓ Compiled in 152ms +[00:12:34.303] Server LOG ✓ Compiled in 70ms +[00:13:58.330] Server LOG ✓ Compiled in 56ms +[00:14:32.414] Server LOG ✓ Compiled in 60ms +[00:14:56.251] Server LOG ✓ Compiled in 203ms +[00:15:22.410] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:15:25.309] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:15:25.324] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:15:25.340] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:15:25.397] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:15:25.412] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888032267} +[00:16:29.202] Server LOG ✓ Compiled in 72ms +[00:16:47.656] Server LOG ✓ Compiled in 57ms +[00:16:58.968] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:00.054] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:00.069] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:00.081] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:00.169] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:17:00.295] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888126950} +[00:17:07.754] Server LOG ✓ Compiled in 76ms +[00:17:11.999] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:12.016] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:12.034] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:12.137] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888138895} +[00:17:12.144] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:17:19.803] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:19.814] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:19.827] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:19.949] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:17:19.986] Server LOG ✓ Compiled in 76ms +[00:17:20.060] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888146699} +[00:17:23.061] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:23.077] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:23.096] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:23.119] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:17:23.165] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888149957} +[00:17:34.695] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold +[00:17:34.819] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:34.836] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:34.862] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit +[00:17:34.862] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/members/cmib8zhtm001jhhxlxi4lvq62","route":"/members/[id]"} +[00:17:34.862] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62","r":"","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888161671} +[00:17:34.873] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:17:36.167] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:36.218] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:17:36.252] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888163052} +[00:17:36.465] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:36.479] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:53.638] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:53.654] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:53.679] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:17:53.693] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:17:53.736] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhtm001jhhxlxi4lvq62","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888180528} +[00:18:03.565] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:04.469] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888191266} +[00:18:04.677] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:04.691] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:12.474] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888198806} +[00:18:12.542] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:12.559] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:35.003] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold +[00:18:35.159] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit +[00:18:35.159] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/auth/signin","route":"/auth/signin"} +[00:18:35.159] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/auth/signin color: rgb(120, 120, 120) color: inherit {"dp":"/auth/signin","o":"http://localhost:3000/auth/signin","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888221965} +[00:18:38.240] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:38.402] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold +[00:18:38.509] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:38.547] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit +[00:18:38.547] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/","route":"/"} +[00:18:38.547] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/ color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888225353} +[00:18:38.562] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:18:38.702] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:38.726] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:40.774] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888227064} +[00:18:40.883] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:40.905] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:43.497] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:45.769] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:45.808] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:18:45.849] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888232653} +[00:18:46.068] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:46.084] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:50.581] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:50.594] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:50.675] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888237476} +[00:18:54.290] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:54.304] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:54.346] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:18:54.359] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:18:54.383] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhv3002phhxlxac4veoq color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhv3002phhxlxac4veoq","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888241173} +[00:19:07.767] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:19:07.785] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:19:07.880] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888254656} +[00:19:10.071] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:19:10.087] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:19:10.104] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:19:10.132] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:19:10.168] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888256958} +[00:19:54.959] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:12.984] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:12.995] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:13.007] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:13.035] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:20:13.084] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhv3002phhxlxac4veoq color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhv3002phhxlxac4veoq","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888319870} +[00:20:16.438] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:16.453] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:16.470] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:16.488] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:20:16.545] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888323324} +[00:20:40.424] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:40.443] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:20:40.531] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888347311} +[00:21:07.038] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:07.056] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:07.070] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:07.099] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:21:07.110] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhv6002thhxlrvksp14w color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhv6002thhxlrvksp14w","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888373894} +[00:21:13.036] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:13.053] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:13.125] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888379921} +[00:21:48.778] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:49.586] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:49.602] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:49.670] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:21:49.679] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:21:49.684] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888416464} +[00:22:00.844] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:22:01.716] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:22:01.731] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:22:01.744] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:22:01.767] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:22:01.817] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhv3002phhxlxac4veoq color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhv3002phhxlxac4veoq","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888428601} +[00:23:48.689] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:23:49.308] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:23:49.325] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:23:49.356] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888536112} +[00:23:53.110] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:23:53.128] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:23:53.156] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:23:53.169] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:23:53.225] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhv6002thhxlrvksp14w color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhv6002thhxlrvksp14w","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888539985} +[00:24:22.350] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:22.972] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:22.989] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:23.057] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888569848} +[00:24:29.506] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:29.520] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:29.533] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:29.586] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:24:29.602] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhvn0035hhxlzrcl0o49","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888576382} +[00:24:32.470] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:32.489] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:32.577] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888579348} +[00:24:56.106] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:56.121] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:56.134] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:56.195] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:24:56.205] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhvj002zhhxlmy0e5z2g color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhvj002zhhxlmy0e5z2g","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888602979} +[00:24:58.809] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:58.827] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:24:58.894] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmib8zhtw001nhhxlvi284hss","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888605682} +[00:25:57.342] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:25:57.354] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:25:57.373] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:25:57.382] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:25:57.435] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhum002dhhxlscn8hxii color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhum002dhhxlscn8hxii","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888664213} +[00:26:36.927] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:37.319] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold +[00:26:37.457] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:37.473] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:37.501] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit +[00:26:37.501] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/members/cmib8zhum002dhhxlscn8hxii","route":"/members/[id]"} +[00:26:37.501] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhum002dhhxlscn8hxii color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhum002dhhxlscn8hxii","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888704290} +[00:26:41.042] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold +[00:26:41.147] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:41.166] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:41.188] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit +[00:26:41.188] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/members/cmib8zhum002dhhxlscn8hxii","route":"/members/[id]"} +[00:26:41.188] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmib8zhum002dhhxlscn8hxii color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmib8zhum002dhhxlscn8hxii","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888707978} +[00:26:43.363] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold +[00:26:43.512] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit +[00:26:43.512] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/auth/signin","route":"/auth/signin"} +[00:26:43.512] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/auth/signin color: rgb(120, 120, 120) color: inherit {"dp":"/auth/signin","o":"http://localhost:3000/auth/signin","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888710301} +[00:26:46.504] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:46.651] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold +[00:26:46.736] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:46.776] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:26:46.783] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit +[00:26:46.783] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/","route":"/"} +[00:26:46.783] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/ color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888713573} +[00:26:46.893] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:46.960] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:49.736] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:51.490] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888717796} +[00:26:51.612] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:51.635] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:53.168] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:53.206] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:26:53.255] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdnq002t13oue7mgpdjp color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdnq002t13oue7mgpdjp","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888720044} +[00:26:53.474] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:53.488] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:56.035] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:56.067] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:26:56.120] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888722909} +[00:26:56.341] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:26:56.352] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:03.298] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:03.312] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:03.335] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:03.348] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:27:03.398] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdnq002t13oue7mgpdjp color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdnq002t13oue7mgpdjp","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888730172} +[00:27:33.826] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:57.434] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:58.183] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:58.195] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:58.206] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:27:58.280] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:27:58.370] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888785057} +[00:28:42.683] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:28:43.442] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:28:43.461] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:28:43.478] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:28:43.506] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:28:43.552] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdnq002t13oue7mgpdjp color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdnq002t13oue7mgpdjp","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888830316} +[00:28:47.277] Server LOG ✓ Compiled in 62ms +[00:29:01.959] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:01.972] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:01.986] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:02.065] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:29:02.158] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE&spouseId=cmibhsdn8002d13ou104ueiz4 color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE&spouseId=cmibhsdn8002d13ou104ueiz4","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888848830} +[00:29:08.284] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:08.302] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:08.320] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:08.343] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:29:08.425] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdnq002t13oue7mgpdjp color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdnq002t13oue7mgpdjp","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888855155} +[00:29:12.480] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:12.529] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:12.571] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888859351} +[00:29:18.527] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:18.542] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:18.557] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:18.601] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:29:18.625] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdo5003313ouqlidr0m9 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdo5003313ouqlidr0m9","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888865385} +[00:29:19.947] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:19.958] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:19.969] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:20.052] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:29:20.149] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?childId=cmibhsdo5003313ouqlidr0m9&generation=4&gender=FEMALE&spouseId=cmibhsdnm002n13oumlu80sqo color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?childId=cmibhsdo5003313ouqlidr0m9&generation=4&gender=FEMALE&spouseId=cmibhsdnm002n13oumlu80sqo","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888866822} +[00:29:30.015] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:30.038] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:30.057] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:30.101] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:29:30.125] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdo5003313ouqlidr0m9 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdo5003313ouqlidr0m9","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888876886} +[00:29:39.338] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:39.352] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:39.426] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888886205} +[00:29:42.765] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members?treeId=cmibhsdmj001n13oucuenv71n color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members?treeId=cmibhsdmj001n13oucuenv71n","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888889538} +[00:29:42.970] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:42.982] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:46.911] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:46.923] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:46.937] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:46.972] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:29:47.014] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdmr001x13ouhpw6eiot color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdmr001x13ouhpw6eiot","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888893783} +[00:29:50.686] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:50.698] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:50.710] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:29:50.780] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:29:50.872] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?fatherId=cmibhsdmr001x13ouhpw6eiot&generation=3 color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?fatherId=cmibhsdmr001x13ouhpw6eiot&generation=3","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888897560} +[00:30:05.730] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:05.744] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:05.760] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:05.782] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:30:05.833] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdmr001x13ouhpw6eiot color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdmr001x13ouhpw6eiot","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888912601} +[00:30:09.833] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:09.846] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:09.859] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:09.929] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:30:10.039] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?fatherId=cmibhsdmr001x13ouhpw6eiot&generation=3 color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?fatherId=cmibhsdmr001x13ouhpw6eiot&generation=3","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888916703} +[00:30:17.571] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:17.590] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:17.604] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:17.628] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:30:17.677] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdmr001x13ouhpw6eiot color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdmr001x13ouhpw6eiot","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888924440} +[00:30:44.708] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:44.721] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:44.803] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members?treeId=cmibhsdmj001n13oucuenv71n color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members?treeId=cmibhsdmj001n13oucuenv71n","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888951578} +[00:30:51.356] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:51.371] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:51.389] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:51.413] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:30:51.461] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdng002h13oun8osrtpf color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdng002h13oun8osrtpf","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888958227} +[00:30:53.352] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:53.364] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:53.374] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:53.458] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:30:53.548] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new?spouseId=cmibhsdng002h13oun8osrtpf&generation=4&gender=MALE color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new?spouseId=cmibhsdng002h13oun8osrtpf&generation=4&gender=MALE","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888960224} +[00:30:56.545] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:56.564] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:56.589] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:30:56.600] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:30:56.647] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdng002h13oun8osrtpf color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdng002h13oun8osrtpf","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888963412} +[00:31:02.042] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:02.062] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:02.149] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888968906} +[00:31:10.461] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:10.478] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:10.490] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:10.524] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:31:10.558] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdo4003113ou3b1c5xsa color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdo4003113ou3b1c5xsa","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888977326} +[00:31:15.351] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:15.367] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:15.443] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888982215} +[00:31:17.194] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:17.208] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:17.234] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:17.247] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:31:17.294] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdo4003113ou3b1c5xsa color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdo4003113ou3b1c5xsa","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888984060} +[00:31:19.414] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:19.437] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:19.501] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree?treeId=cmibhsdmj001n13oucuenv71n","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888986276} +[00:31:25.191] Browser LOG D3OrgChartFlow render, selectedMembers: [] relationMode: false +[00:31:25.192] Browser LOG D3OrgChartFlow render, selectedMembers: [] relationMode: false +[00:31:25.192] Browser LOG D3OrgChartFlow render, selectedMembers: [] relationMode: false +[00:31:25.192] Browser LOG D3OrgChartFlow render, selectedMembers: [] relationMode: false +[00:31:25.192] Browser LOG D3OrgChartFlow render, selectedMembers: [] relationMode: false +[00:31:25.192] Browser LOG D3OrgChartFlow render, selectedMembers: [] relationMode: false +[00:31:32.204] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:32.216] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:32.231] Server LOG 🌳 GET /api/trees 返回数据: {} +[00:31:32.269] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {} +[00:31:32.305] Browser LOG D3 onMemberClick triggered: cmibhsdnk002l13ounkwdt5g6 relationMode: false +[00:31:32.305] Browser LOG Navigating to member detail +[00:31:32.305] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/cmibhsdnk002l13ounkwdt5g6 color: rgb(120, 120, 120) color: inherit {"dp":"/members/[id]","o":"http://localhost:3000/members/cmibhsdnk002l13ounkwdt5g6","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763888999070} diff --git a/.next/dev/server/app-paths-manifest.json b/.next/dev/server/app-paths-manifest.json index 56ba1137..fe08d550 100644 --- a/.next/dev/server/app-paths-manifest.json +++ b/.next/dev/server/app-paths-manifest.json @@ -1,9 +1,11 @@ { "/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/route.js", "/api/trees/[treeId]/activity-logs/route": "app/api/trees/[treeId]/activity-logs/route.js", + "/api/trees/[treeId]/members/[memberId]/route": "app/api/trees/[treeId]/members/[memberId]/route.js", "/api/trees/[treeId]/members/route": "app/api/trees/[treeId]/members/route.js", "/api/trees/[treeId]/route": "app/api/trees/[treeId]/route.js", "/api/trees/route": "app/api/trees/route.js", + "/auth/signin/page": "app/auth/signin/page.js", "/members/[id]/page": "app/members/[id]/page.js", "/members/new/page": "app/members/new/page.js", "/members/page": "app/members/page.js", diff --git a/.next/dev/server/chunks/ssr/Documents_go-new_chinese-family-tree_735c6a78._.js b/.next/dev/server/chunks/ssr/Documents_go-new_chinese-family-tree_735c6a78._.js index 411ad077..c86b30e3 100644 --- a/.next/dev/server/chunks/ssr/Documents_go-new_chinese-family-tree_735c6a78._.js +++ b/.next/dev/server/chunks/ssr/Documents_go-new_chinese-family-tree_735c6a78._.js @@ -2381,7 +2381,7 @@ function MembersPage() { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Card"], { className: `hover:border-primary transition-colors cursor-pointer h-full ${isSpouse ? 'bg-pink-50/50 dark:bg-pink-950/20 border-pink-200/50 dark:border-pink-800/30' : 'bg-blue-50/50 dark:bg-blue-950/20 border-blue-200/50 dark:border-blue-800/30'}`, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["CardContent"], { - className: "p-3 flex items-center gap-3", + className: "p-3 flex items-center gap-5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "relative flex-shrink-0", @@ -2420,16 +2420,16 @@ function MembersPage() { columnNumber: 27 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { - className: "flex-1 min-w-0 pl-1", + className: "flex-1 min-w-0 flex flex-col justify-center", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-baseline justify-between gap-1.5", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { - className: "text-base font-bold font-serif truncate", + className: "text-lg font-bold font-serif truncate", children: [ member.fullName, member.courtesyName && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { - className: "text-[11px] font-normal text-muted-foreground ml-1", + className: "text-xs font-normal text-muted-foreground ml-1", children: [ "字 ", member.courtesyName @@ -2451,14 +2451,14 @@ function MembersPage() { columnNumber: 29 }, this), isFounder ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { - className: "text-[11px] text-amber-700 font-medium mt-0.5 truncate", + className: "text-xs text-amber-700 font-medium mt-0.5 truncate", children: "家族始祖" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", lineNumber: 405, columnNumber: 31 }, this) : isSpouse && spouseName ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { - className: "text-[11px] text-purple-700 mt-0.5 truncate", + className: "text-xs text-purple-700 mt-0.5 truncate", children: [ spouseName, "的配偶" @@ -2468,7 +2468,7 @@ function MembersPage() { lineNumber: 409, columnNumber: 31 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { - className: "text-[11px] text-muted-foreground mt-0.5 truncate", + className: "text-xs text-muted-foreground mt-0.5 truncate", children: member.generationName ? `字辈: ${member.generationName}` : "未录入字辈" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", @@ -2479,7 +2479,7 @@ function MembersPage() { className: "flex items-start justify-between gap-2 mt-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { - className: "text-[11px] text-muted-foreground truncate flex-1", + className: "text-xs text-muted-foreground truncate flex-1", children: member.ancestralHome || "籍贯未知" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", @@ -2487,7 +2487,7 @@ function MembersPage() { columnNumber: 31 }, this), (member.birthDate || member.deathDate) && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { - className: "text-[10px] text-muted-foreground text-right space-y-0.5 flex-shrink-0", + className: "text-xs text-muted-foreground text-right space-y-0.5 flex-shrink-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: [ @@ -2506,7 +2506,7 @@ function MembersPage() { const deathYear = member.deathDate ? new Date(member.deathDate).getFullYear() : new Date().getFullYear(); const age = deathYear - birthYear; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { - className: "text-[9px] text-muted-foreground", + className: "text-[10px] text-muted-foreground", children: member.deathDate ? `享年${age}岁` : `${age}岁` }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", @@ -2529,7 +2529,7 @@ function MembersPage() { member.tags && member.tags.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "mt-1.5 flex flex-wrap gap-1", children: member.tags.map((tag)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { - className: "text-[9px] bg-primary/10 text-primary px-1 py-0.5 rounded border border-primary/20", + className: "text-xs bg-primary/10 text-primary px-2 py-0.5 rounded border border-primary/20", children: tag }, tag, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", diff --git a/.next/dev/server/chunks/ssr/Documents_go-new_chinese-family-tree_735c6a78._.js.map b/.next/dev/server/chunks/ssr/Documents_go-new_chinese-family-tree_735c6a78._.js.map index 66f2bb2a..e5083937 100644 --- a/.next/dev/server/chunks/ssr/Documents_go-new_chinese-family-tree_735c6a78._.js.map +++ b/.next/dev/server/chunks/ssr/Documents_go-new_chinese-family-tree_735c6a78._.js.map @@ -9,5 +9,5 @@ {"offset": {"line": 1254, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { db } from \"@/lib/db\"\nimport { CircleUser, CircleUserRound } from \"lucide-react\"\nimport type { Gender } from \"@/types/family\"\n\ninterface AvatarDisplayProps {\n imageId?: string\n fallbackUrl?: string\n fallbackText?: string\n gender?: Gender\n className?: string\n}\n\nexport function AvatarDisplay({ imageId, fallbackUrl, fallbackText, gender, className }: AvatarDisplayProps) {\n const [blobUrl, setBlobUrl] = useState(undefined)\n\n useEffect(() => {\n if (imageId) {\n db.images.get(imageId).then((image) => {\n if (image) {\n const url = URL.createObjectURL(image.blob)\n setBlobUrl(url)\n return () => URL.revokeObjectURL(url)\n }\n })\n } else {\n setBlobUrl(undefined)\n }\n }, [imageId])\n\n // 如果有头像,显示头像\n if (blobUrl) {\n return (\n \n \n {fallbackText}\n \n )\n }\n\n // 没有头像,显示性别图标\n return (\n \n \n {gender === 'FEMALE' ? (\n \n ) : (\n \n )}\n \n \n )\n}\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AAAA;AALA;;;;;;AAgBO,SAAS,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAsB;IACzG,MAAM,CAAC,SAAS,WAAW,GAAG,IAAA,uYAAQ,EAAqB;IAE3D,IAAA,wYAAS,EAAC;QACR,IAAI,SAAS;YACX,sKAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;gBAC3B,IAAI,OAAO;oBACT,MAAM,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI;oBAC1C,WAAW;oBACX,OAAO,IAAM,IAAI,eAAe,CAAC;gBACnC;YACF;QACF,OAAO;YACL,WAAW;QACb;IACF,GAAG;QAAC;KAAQ;IAEZ,aAAa;IACb,IAAI,SAAS;QACX,qBACE,oaAAC,4LAAM;YAAC,WAAW;;8BACjB,oaAAC,iMAAW;oBAAC,KAAK;;;;;;8BAClB,oaAAC,oMAAc;oBAAC,WAAU;8BAA+B;;;;;;;;;;;;IAG/D;IAEA,cAAc;IACd,qBACE,oaAAC,4LAAM;QAAC,WAAW;kBACjB,cAAA,oaAAC,oMAAc;YAAC,WAAU;sBACvB,WAAW,yBACV,oaAAC,8XAAe;gBAAC,WAAU;;;;;qCAE3B,oaAAC,2WAAU;gBAAC,WAAU;;;;;;;;;;;;;;;;AAKhC"}}, {"offset": {"line": 1347, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/ui/select.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectTrigger({\n className,\n size = 'default',\n children,\n ...props\n}: React.ComponentProps & {\n size?: 'sm' | 'default'\n}) {\n return (\n \n {children}\n \n \n \n \n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'popper',\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AAAA;AAAA;AAEA;AANA;;;;;AAQA,SAAS,OAAO,EACd,GAAG,OAC+C;IAClD,qBAAO,oaAAC,qbAAoB;QAAC,aAAU;QAAU,GAAG,KAAK;;;;;;AAC3D;AAEA,SAAS,YAAY,EACnB,GAAG,OACgD;IACnD,qBAAO,oaAAC,sbAAqB;QAAC,aAAU;QAAgB,GAAG,KAAK;;;;;;AAClE;AAEA,SAAS,YAAY,EACnB,GAAG,OACgD;IACnD,qBAAO,oaAAC,sbAAqB;QAAC,aAAU;QAAgB,GAAG,KAAK;;;;;;AAClE;AAEA,SAAS,cAAc,EACrB,SAAS,EACT,OAAO,SAAS,EAChB,QAAQ,EACR,GAAG,OAGJ;IACC,qBACE,oaAAC,wbAAuB;QACtB,aAAU;QACV,aAAW;QACX,WAAW,IAAA,yKAAE,EACX,gzBACA;QAED,GAAG,KAAK;;YAER;0BACD,oaAAC,qbAAoB;gBAAC,OAAO;0BAC3B,cAAA,oaAAC,sXAAe;oBAAC,WAAU;;;;;;;;;;;;;;;;;AAInC;AAEA,SAAS,cAAc,EACrB,SAAS,EACT,QAAQ,EACR,WAAW,QAAQ,EACnB,GAAG,OACkD;IACrD,qBACE,oaAAC,ubAAsB;kBACrB,cAAA,oaAAC,wbAAuB;YACtB,aAAU;YACV,WAAW,IAAA,yKAAE,EACX,ijBACA,aAAa,YACX,mIACF;YAEF,UAAU;YACT,GAAG,KAAK;;8BAET,oaAAC;;;;;8BACD,oaAAC,ybAAwB;oBACvB,WAAW,IAAA,yKAAE,EACX,OACA,aAAa,YACX;8BAGH;;;;;;8BAEH,oaAAC;;;;;;;;;;;;;;;;AAIT;AAEA,SAAS,YAAY,EACnB,SAAS,EACT,GAAG,OACgD;IACnD,qBACE,oaAAC,sbAAqB;QACpB,aAAU;QACV,WAAW,IAAA,yKAAE,EAAC,6CAA6C;QAC1D,GAAG,KAAK;;;;;;AAGf;AAEA,SAAS,WAAW,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,OAC+C;IAClD,qBACE,oaAAC,qbAAoB;QACnB,aAAU;QACV,WAAW,IAAA,yKAAE,EACX,6aACA;QAED,GAAG,KAAK;;0BAET,oaAAC;gBAAK,WAAU;0BACd,cAAA,oaAAC,8bAA6B;8BAC5B,cAAA,oaAAC,gWAAS;wBAAC,WAAU;;;;;;;;;;;;;;;;0BAGzB,oaAAC,ybAAwB;0BAAE;;;;;;;;;;;;AAGjC;AAEA,SAAS,gBAAgB,EACvB,SAAS,EACT,GAAG,OACoD;IACvD,qBACE,oaAAC,0bAAyB;QACxB,aAAU;QACV,WAAW,IAAA,yKAAE,EAAC,iDAAiD;QAC9D,GAAG,KAAK;;;;;;AAGf;AAEA,SAAS,qBAAqB,EAC5B,SAAS,EACT,GAAG,OACyD;IAC5D,qBACE,oaAAC,+bAA8B;QAC7B,aAAU;QACV,WAAW,IAAA,yKAAE,EACX,wDACA;QAED,GAAG,KAAK;kBAET,cAAA,oaAAC,gXAAa;YAAC,WAAU;;;;;;;;;;;AAG/B;AAEA,SAAS,uBAAuB,EAC9B,SAAS,EACT,GAAG,OAC2D;IAC9D,qBACE,oaAAC,icAAgC;QAC/B,aAAU;QACV,WAAW,IAAA,yKAAE,EACX,wDACA;QAED,GAAG,KAAK;kBAET,cAAA,oaAAC,sXAAe;YAAC,WAAU;;;;;;;;;;;AAGjC"}}, {"offset": {"line": 1580, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/ui/slider.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as SliderPrimitive from '@radix-ui/react-slider'\n\nimport { cn } from '@/lib/utils'\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n )\n\n return (\n \n \n \n \n {Array.from({ length: _values.length }, (_, index) => (\n \n ))}\n \n )\n}\n\nexport { Slider }\n"],"names":[],"mappings":";;;;;AAEA;AACA;AAEA;AALA;;;;;AAOA,SAAS,OAAO,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,MAAM,CAAC,EACP,MAAM,GAAG,EACT,GAAG,OAC+C;IAClD,MAAM,UAAU,sYAAa,CAC3B,IACE,MAAM,OAAO,CAAC,SACV,QACA,MAAM,OAAO,CAAC,gBACZ,eACA;YAAC;YAAK;SAAI,EAClB;QAAC;QAAO;QAAc;QAAK;KAAI;IAGjC,qBACE,oaAAC,qbAAoB;QACnB,aAAU;QACV,cAAc;QACd,OAAO;QACP,KAAK;QACL,KAAK;QACL,WAAW,IAAA,yKAAE,EACX,uOACA;QAED,GAAG,KAAK;;0BAET,oaAAC,sbAAqB;gBACpB,aAAU;gBACV,WACE;0BAGF,cAAA,oaAAC,sbAAqB;oBACpB,aAAU;oBACV,WACE;;;;;;;;;;;YAIL,MAAM,IAAI,CAAC;gBAAE,QAAQ,QAAQ,MAAM;YAAC,GAAG,CAAC,GAAG,sBAC1C,oaAAC,sbAAqB;oBACpB,aAAU;oBAEV,WAAU;mBADL;;;;;;;;;;;AAMf"}}, - {"offset": {"line": 1650, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/page.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useMemo, useEffect } from \"react\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { useFamily } from \"@/context/family-context\"\nimport { useRouter } from \"next/navigation\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Search, Plus, Filter, X } from \"lucide-react\"\nimport Link from \"next/link\"\nimport { AvatarDisplay } from \"@/components/ui/avatar-display\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { Slider } from \"@/components/ui/slider\"\nimport { Label } from \"@/components/ui/label\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\n\nexport default function MembersPage() {\n const { treeData, searchMembers, setHighlightedMemberId } = useFamily()\n const router = useRouter()\n const [query, setQuery] = useState(\"\")\n const [showFilters, setShowFilters] = useState(false)\n \n // 从 URL 参数读取搜索关键词\n useEffect(() => {\n const params = new URLSearchParams(window.location.search)\n const searchParam = params.get('search')\n if (searchParam) {\n setQuery(searchParam)\n }\n }, [])\n\n // Filter States\n const [selectedSurname, setSelectedSurname] = useState(\"all\")\n const [selectedHome, setSelectedHome] = useState(\"all\")\n const [statusFilter, setStatusFilter] = useState(\"all\")\n const [generationRange, setGenerationRange] = useState<[number, number]>([1, 100])\n\n // Derived Data\n const allMembers = useMemo(() => Object.values(treeData.members), [treeData])\n\n const { uniqueSurnames, uniqueHomes, minGen, maxGen } = useMemo(() => {\n const surnames = new Set()\n const homes = new Set()\n let min = 1000\n let max = 0\n\n allMembers.forEach((m) => {\n if (m.surname) surnames.add(m.surname)\n if (m.ancestralHome) homes.add(m.ancestralHome)\n if (m.generation) {\n if (m.generation < min) min = m.generation\n if (m.generation > max) max = m.generation\n }\n })\n\n return {\n uniqueSurnames: Array.from(surnames).sort(),\n uniqueHomes: Array.from(homes).sort(),\n minGen: min === 1000 ? 1 : min,\n maxGen: max === 0 ? 100 : max,\n }\n }, [allMembers])\n\n // Initialize slider when data loads\n useMemo(() => {\n if (minGen !== 1000 && maxGen !== 0) {\n // Only update if range is default\n // This is a bit tricky, for now let's just rely on user adjustment or default wide range\n // Ideally we sync this once.\n }\n }, [minGen, maxGen])\n\n const filteredMembers = useMemo(() => {\n let result = allMembers\n\n // 1. Search Query\n if (query) {\n const lowerQuery = query.toLowerCase()\n result = result.filter(\n (m) =>\n m.fullName.toLowerCase().includes(lowerQuery) ||\n m.courtesyName?.toLowerCase().includes(lowerQuery) ||\n m.artName?.toLowerCase().includes(lowerQuery),\n )\n }\n\n // 2. Surname Filter\n if (selectedSurname !== \"all\") {\n result = result.filter((m) => m.surname === selectedSurname)\n }\n\n // 3. Home Filter\n if (selectedHome !== \"all\") {\n result = result.filter((m) => m.ancestralHome === selectedHome)\n }\n\n // 4. Status Filter\n if (statusFilter !== \"all\") {\n if (statusFilter === \"living\") {\n result = result.filter((m) => !m.deathDate)\n } else if (statusFilter === \"deceased\") {\n result = result.filter((m) => !!m.deathDate)\n }\n }\n\n // 5. Generation Filter\n result = result.filter((m) => m.generation >= generationRange[0] && m.generation <= generationRange[1])\n\n // Sort\n return result.sort((a, b) => a.generation - b.generation || (a.birthDate || \"\").localeCompare(b.birthDate || \"\"))\n }, [allMembers, query, selectedSurname, selectedHome, statusFilter, generationRange])\n \n // 按世代分组并排序\n const membersByGeneration = useMemo(() => {\n const groups = new Map()\n \n filteredMembers.forEach(member => {\n const gen = member.generation\n if (!groups.has(gen)) {\n groups.set(gen, [])\n }\n groups.get(gen)!.push(member)\n })\n \n // 转换为数组并排序\n return Array.from(groups.entries())\n .sort((a, b) => a[0] - b[0])\n .map(([generation, members]) => {\n // 区分家族成员和配偶\n const familyMembers = members.filter(m => {\n // 家族成员:有父母关系 或 明确标记为始祖\n const isFounder = m.tags?.includes('始祖')\n const hasFamilyParents = m.fatherId || m.motherId\n \n // 如果有父母关系,肯定是家族成员\n if (hasFamilyParents) return true\n \n // 如果明确标记为始祖,是家族成员\n if (isFounder) return true\n \n // 第1世且没有配偶的,可能是始祖(兼容没有标签的情况)\n if (generation === 1 && (!m.spouseIds || m.spouseIds.length === 0)) return true\n \n // 其他情况(如第1世但有配偶且没有父母的)是配偶身份\n return false\n })\n \n // 对家族成员按年龄排序(出生日期从早到晚 = 年龄从高到低)\n const sortedFamilyMembers = [...familyMembers].sort((a, b) => {\n // 1. 始祖永远排第一\n const aIsFounder = a.tags?.includes('始祖')\n const bIsFounder = b.tags?.includes('始祖')\n if (aIsFounder && !bIsFounder) return -1\n if (!aIsFounder && bIsFounder) return 1\n \n // 2. 按出生日期排序(早出生的在前 = 年龄大的在前)\n const aDate = a.birthDate || \"9999-12-31\"\n const bDate = b.birthDate || \"9999-12-31\"\n return aDate.localeCompare(bDate)\n })\n \n // 3. 将配偶插入到主成员后面\n const result: typeof members = []\n const processedSpouses = new Set()\n \n sortedFamilyMembers.forEach(member => {\n result.push(member)\n \n // 计算该家庭单元的成员数(主成员 + 配偶)\n let familyUnitSize = 1 // 主成员自己\n \n // 如果有配偶,将配偶紧跟在后面\n if (member.spouseIds && member.spouseIds.length > 0) {\n member.spouseIds.forEach(spouseId => {\n const spouse = members.find(m => m.id === spouseId)\n if (spouse && !processedSpouses.has(spouseId)) {\n result.push(spouse)\n processedSpouses.add(spouseId)\n familyUnitSize++\n }\n })\n }\n \n // 计算需要添加的占位符数量,确保填满4的倍数\n // 例如:1个主成员 + 1个配偶 = 2人,需要添加2个占位符\n // 例如:1个主成员 + 3个配偶 = 4人,不需要占位符\n // 例如:1个主成员 + 0个配偶 = 1人,需要添加3个占位符\n const placeholdersNeeded = (4 - (familyUnitSize % 4)) % 4\n for (let i = 0; i < placeholdersNeeded; i++) {\n result.push({ id: `placeholder-${member.id}-${i}`, isPlaceholder: true } as any)\n }\n })\n \n return {\n generation,\n members: result\n }\n })\n }, [filteredMembers])\n\n const clearFilters = () => {\n setSelectedSurname(\"all\")\n setSelectedHome(\"all\")\n setStatusFilter(\"all\")\n setGenerationRange([1, 100]) // Reset to wide range\n setQuery(\"\")\n }\n\n const activeFilterCount =\n (selectedSurname !== \"all\" ? 1 : 0) +\n (selectedHome !== \"all\" ? 1 : 0) +\n (statusFilter !== \"all\" ? 1 : 0) +\n (generationRange[0] > 1 || generationRange[1] < 100 ? 1 : 0)\n\n return (\n
\n \n
\n
\n
\n

家族成员列表

\n
\n
\n \n setQuery(e.target.value)}\n />\n
\n 0 ? \"secondary\" : \"outline\"}\n size=\"icon\"\n onClick={() => setShowFilters(!showFilters)}\n className=\"relative\"\n >\n \n {activeFilterCount > 0 && (\n \n )}\n \n \n \n \n
\n
\n\n {/* Filter Bar */}\n {showFilters && (\n
\n
\n

高级筛选

\n \n
\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n {generationRange[0]} - {generationRange[1]} 世\n \n
\n setGenerationRange(val as [number, number])}\n className=\"py-4\"\n />\n
\n
\n
\n )}\n
\n\n {filteredMembers.length === 0 ? (\n
\n 没有找到匹配的成员。\n
\n ) : (\n
\n {membersByGeneration.map(({ generation, members }) => (\n
\n
\n

第 {generation} 世

\n 共 {members.length} 人\n
\n
\n
\n {members.map((member) => {\n // 检查是否是占位符\n if ((member as any).isPlaceholder) {\n return
\n }\n \n // 判断是否是配偶:\n // 1. 没有父母ID\n // 2. 有配偶ID\n // 3. 不是始祖(没有'始祖'标签)\n const isFounder = member.tags?.includes('始祖')\n const isSpouse = !member.fatherId && !member.motherId && \n member.spouseIds && member.spouseIds.length > 0 && \n !isFounder\n \n // 获取配偶信息\n const spouse = isSpouse && member.spouseIds?.[0] ? allMembers.find(m => m.id === member.spouseIds[0]) : null\n const spouseName = spouse ? spouse.fullName : null\n \n return (\n
\n \n \n \n
\n \n {/* 在世/去世标识 */}\n {member.deathDate && (\n
\n )}\n {!member.deathDate && (\n
\n )}\n
\n
\n
\n

\n {member.fullName}\n {member.courtesyName && (\n \n 字 {member.courtesyName}\n \n )}\n

\n
\n {isFounder ? (\n

\n 家族始祖\n

\n ) : isSpouse && spouseName ? (\n

\n {spouseName}的配偶\n

\n ) : (\n

\n {member.generationName ? `字辈: ${member.generationName}` : \"未录入字辈\"}\n

\n )}\n \n {/* 籍贯和生卒年并排 */}\n
\n

{member.ancestralHome || \"籍贯未知\"}

\n \n {/* 生卒年和年龄 */}\n {(member.birthDate || member.deathDate) && (\n
\n
\n {member.birthDate && new Date(member.birthDate).getFullYear()}\n {member.deathDate && ` - ${new Date(member.deathDate).getFullYear()}`}\n {!member.deathDate && member.birthDate && ' - '}\n
\n {(() => {\n if (!member.birthDate) return null\n const birthYear = new Date(member.birthDate).getFullYear()\n const deathYear = member.deathDate ? new Date(member.deathDate).getFullYear() : new Date().getFullYear()\n const age = deathYear - birthYear\n return (\n
\n {member.deathDate ? `享年${age}岁` : `${age}岁`}\n
\n )\n })()}\n
\n )}\n
\n \n {member.tags && member.tags.length > 0 && (\n
\n {member.tags.map((tag) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n \n \n \n {\n setHighlightedMemberId(member.id)\n router.push('/tree')\n }}\n title=\"在族谱图中定位\"\n >\n \n \n
\n )\n })}\n
\n
\n ))}\n
\n )}\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 1650, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/page.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useMemo, useEffect } from \"react\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { useFamily } from \"@/context/family-context\"\nimport { useRouter } from \"next/navigation\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Search, Plus, Filter, X } from \"lucide-react\"\nimport Link from \"next/link\"\nimport { AvatarDisplay } from \"@/components/ui/avatar-display\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { Slider } from \"@/components/ui/slider\"\nimport { Label } from \"@/components/ui/label\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\n\nexport default function MembersPage() {\n const { treeData, searchMembers, setHighlightedMemberId } = useFamily()\n const router = useRouter()\n const [query, setQuery] = useState(\"\")\n const [showFilters, setShowFilters] = useState(false)\n \n // 从 URL 参数读取搜索关键词\n useEffect(() => {\n const params = new URLSearchParams(window.location.search)\n const searchParam = params.get('search')\n if (searchParam) {\n setQuery(searchParam)\n }\n }, [])\n\n // Filter States\n const [selectedSurname, setSelectedSurname] = useState(\"all\")\n const [selectedHome, setSelectedHome] = useState(\"all\")\n const [statusFilter, setStatusFilter] = useState(\"all\")\n const [generationRange, setGenerationRange] = useState<[number, number]>([1, 100])\n\n // Derived Data\n const allMembers = useMemo(() => Object.values(treeData.members), [treeData])\n\n const { uniqueSurnames, uniqueHomes, minGen, maxGen } = useMemo(() => {\n const surnames = new Set()\n const homes = new Set()\n let min = 1000\n let max = 0\n\n allMembers.forEach((m) => {\n if (m.surname) surnames.add(m.surname)\n if (m.ancestralHome) homes.add(m.ancestralHome)\n if (m.generation) {\n if (m.generation < min) min = m.generation\n if (m.generation > max) max = m.generation\n }\n })\n\n return {\n uniqueSurnames: Array.from(surnames).sort(),\n uniqueHomes: Array.from(homes).sort(),\n minGen: min === 1000 ? 1 : min,\n maxGen: max === 0 ? 100 : max,\n }\n }, [allMembers])\n\n // Initialize slider when data loads\n useMemo(() => {\n if (minGen !== 1000 && maxGen !== 0) {\n // Only update if range is default\n // This is a bit tricky, for now let's just rely on user adjustment or default wide range\n // Ideally we sync this once.\n }\n }, [minGen, maxGen])\n\n const filteredMembers = useMemo(() => {\n let result = allMembers\n\n // 1. Search Query\n if (query) {\n const lowerQuery = query.toLowerCase()\n result = result.filter(\n (m) =>\n m.fullName.toLowerCase().includes(lowerQuery) ||\n m.courtesyName?.toLowerCase().includes(lowerQuery) ||\n m.artName?.toLowerCase().includes(lowerQuery),\n )\n }\n\n // 2. Surname Filter\n if (selectedSurname !== \"all\") {\n result = result.filter((m) => m.surname === selectedSurname)\n }\n\n // 3. Home Filter\n if (selectedHome !== \"all\") {\n result = result.filter((m) => m.ancestralHome === selectedHome)\n }\n\n // 4. Status Filter\n if (statusFilter !== \"all\") {\n if (statusFilter === \"living\") {\n result = result.filter((m) => !m.deathDate)\n } else if (statusFilter === \"deceased\") {\n result = result.filter((m) => !!m.deathDate)\n }\n }\n\n // 5. Generation Filter\n result = result.filter((m) => m.generation >= generationRange[0] && m.generation <= generationRange[1])\n\n // Sort\n return result.sort((a, b) => a.generation - b.generation || (a.birthDate || \"\").localeCompare(b.birthDate || \"\"))\n }, [allMembers, query, selectedSurname, selectedHome, statusFilter, generationRange])\n \n // 按世代分组并排序\n const membersByGeneration = useMemo(() => {\n const groups = new Map()\n \n filteredMembers.forEach(member => {\n const gen = member.generation\n if (!groups.has(gen)) {\n groups.set(gen, [])\n }\n groups.get(gen)!.push(member)\n })\n \n // 转换为数组并排序\n return Array.from(groups.entries())\n .sort((a, b) => a[0] - b[0])\n .map(([generation, members]) => {\n // 区分家族成员和配偶\n const familyMembers = members.filter(m => {\n // 家族成员:有父母关系 或 明确标记为始祖\n const isFounder = m.tags?.includes('始祖')\n const hasFamilyParents = m.fatherId || m.motherId\n \n // 如果有父母关系,肯定是家族成员\n if (hasFamilyParents) return true\n \n // 如果明确标记为始祖,是家族成员\n if (isFounder) return true\n \n // 第1世且没有配偶的,可能是始祖(兼容没有标签的情况)\n if (generation === 1 && (!m.spouseIds || m.spouseIds.length === 0)) return true\n \n // 其他情况(如第1世但有配偶且没有父母的)是配偶身份\n return false\n })\n \n // 对家族成员按年龄排序(出生日期从早到晚 = 年龄从高到低)\n const sortedFamilyMembers = [...familyMembers].sort((a, b) => {\n // 1. 始祖永远排第一\n const aIsFounder = a.tags?.includes('始祖')\n const bIsFounder = b.tags?.includes('始祖')\n if (aIsFounder && !bIsFounder) return -1\n if (!aIsFounder && bIsFounder) return 1\n \n // 2. 按出生日期排序(早出生的在前 = 年龄大的在前)\n const aDate = a.birthDate || \"9999-12-31\"\n const bDate = b.birthDate || \"9999-12-31\"\n return aDate.localeCompare(bDate)\n })\n \n // 3. 将配偶插入到主成员后面\n const result: typeof members = []\n const processedSpouses = new Set()\n \n sortedFamilyMembers.forEach(member => {\n result.push(member)\n \n // 计算该家庭单元的成员数(主成员 + 配偶)\n let familyUnitSize = 1 // 主成员自己\n \n // 如果有配偶,将配偶紧跟在后面\n if (member.spouseIds && member.spouseIds.length > 0) {\n member.spouseIds.forEach(spouseId => {\n const spouse = members.find(m => m.id === spouseId)\n if (spouse && !processedSpouses.has(spouseId)) {\n result.push(spouse)\n processedSpouses.add(spouseId)\n familyUnitSize++\n }\n })\n }\n \n // 计算需要添加的占位符数量,确保填满4的倍数\n // 例如:1个主成员 + 1个配偶 = 2人,需要添加2个占位符\n // 例如:1个主成员 + 3个配偶 = 4人,不需要占位符\n // 例如:1个主成员 + 0个配偶 = 1人,需要添加3个占位符\n const placeholdersNeeded = (4 - (familyUnitSize % 4)) % 4\n for (let i = 0; i < placeholdersNeeded; i++) {\n result.push({ id: `placeholder-${member.id}-${i}`, isPlaceholder: true } as any)\n }\n })\n \n return {\n generation,\n members: result\n }\n })\n }, [filteredMembers])\n\n const clearFilters = () => {\n setSelectedSurname(\"all\")\n setSelectedHome(\"all\")\n setStatusFilter(\"all\")\n setGenerationRange([1, 100]) // Reset to wide range\n setQuery(\"\")\n }\n\n const activeFilterCount =\n (selectedSurname !== \"all\" ? 1 : 0) +\n (selectedHome !== \"all\" ? 1 : 0) +\n (statusFilter !== \"all\" ? 1 : 0) +\n (generationRange[0] > 1 || generationRange[1] < 100 ? 1 : 0)\n\n return (\n
\n \n
\n
\n
\n

家族成员列表

\n
\n
\n \n setQuery(e.target.value)}\n />\n
\n 0 ? \"secondary\" : \"outline\"}\n size=\"icon\"\n onClick={() => setShowFilters(!showFilters)}\n className=\"relative\"\n >\n \n {activeFilterCount > 0 && (\n \n )}\n \n \n \n \n
\n
\n\n {/* Filter Bar */}\n {showFilters && (\n
\n
\n

高级筛选

\n \n
\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n {generationRange[0]} - {generationRange[1]} 世\n \n
\n setGenerationRange(val as [number, number])}\n className=\"py-4\"\n />\n
\n
\n
\n )}\n
\n\n {filteredMembers.length === 0 ? (\n
\n 没有找到匹配的成员。\n
\n ) : (\n
\n {membersByGeneration.map(({ generation, members }) => (\n
\n
\n

第 {generation} 世

\n 共 {members.length} 人\n
\n
\n
\n {members.map((member) => {\n // 检查是否是占位符\n if ((member as any).isPlaceholder) {\n return
\n }\n \n // 判断是否是配偶:\n // 1. 没有父母ID\n // 2. 有配偶ID\n // 3. 不是始祖(没有'始祖'标签)\n const isFounder = member.tags?.includes('始祖')\n const isSpouse = !member.fatherId && !member.motherId && \n member.spouseIds && member.spouseIds.length > 0 && \n !isFounder\n \n // 获取配偶信息\n const spouse = isSpouse && member.spouseIds?.[0] ? allMembers.find(m => m.id === member.spouseIds[0]) : null\n const spouseName = spouse ? spouse.fullName : null\n \n return (\n
\n \n \n \n
\n \n {/* 在世/去世标识 */}\n {member.deathDate && (\n
\n )}\n {!member.deathDate && (\n
\n )}\n
\n
\n
\n

\n {member.fullName}\n {member.courtesyName && (\n \n 字 {member.courtesyName}\n \n )}\n

\n
\n {isFounder ? (\n

\n 家族始祖\n

\n ) : isSpouse && spouseName ? (\n

\n {spouseName}的配偶\n

\n ) : (\n

\n {member.generationName ? `字辈: ${member.generationName}` : \"未录入字辈\"}\n

\n )}\n \n {/* 籍贯和生卒年并排 */}\n
\n

{member.ancestralHome || \"籍贯未知\"}

\n \n {/* 生卒年和年龄 */}\n {(member.birthDate || member.deathDate) && (\n
\n
\n {member.birthDate && new Date(member.birthDate).getFullYear()}\n {member.deathDate && ` - ${new Date(member.deathDate).getFullYear()}`}\n {!member.deathDate && member.birthDate && ' - '}\n
\n {(() => {\n if (!member.birthDate) return null\n const birthYear = new Date(member.birthDate).getFullYear()\n const deathYear = member.deathDate ? new Date(member.deathDate).getFullYear() : new Date().getFullYear()\n const age = deathYear - birthYear\n return (\n
\n {member.deathDate ? `享年${age}岁` : `${age}岁`}\n
\n )\n })()}\n
\n )}\n
\n \n {member.tags && member.tags.length > 0 && (\n
\n {member.tags.map((tag) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n \n \n \n {\n setHighlightedMemberId(member.id)\n router.push('/tree')\n }}\n title=\"在族谱图中定位\"\n >\n \n \n
\n )\n })}\n
\n
\n ))}\n
\n )}\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__10b90bc2._.js b/.next/dev/server/chunks/ssr/[root-of-the-server]__10b90bc2._.js index 8dd65b26..dc577440 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__10b90bc2._.js +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__10b90bc2._.js @@ -4723,13 +4723,37 @@ function MemberProfilePage() { params.set('gender', member.gender === 'MALE' ? 'FEMALE' : 'MALE'); router.push(`/members/new?${params.toString()}`); }; + const handleQuickAddFather = ()=>{ + // 跳转到新增成员页面,并预填父亲信息 + const params = new URLSearchParams(); + params.set('childId', member.id); + params.set('generation', (member.generation - 1).toString()); + params.set('gender', 'MALE'); + // 如果已有母亲,将母亲设置为配偶 + if (member.motherId) { + params.set('spouseId', member.motherId); + } + router.push(`/members/new?${params.toString()}`); + }; + const handleQuickAddMother = ()=>{ + // 跳转到新增成员页面,并预填母亲信息 + const params = new URLSearchParams(); + params.set('childId', member.id); + params.set('generation', (member.generation - 1).toString()); + params.set('gender', 'FEMALE'); + // 如果已有父亲,将父亲设置为配偶 + if (member.fatherId) { + params.set('spouseId', member.fatherId); + } + router.push(`/members/new?${params.toString()}`); + }; if (isEditing) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "min-h-screen flex flex-col bg-background", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$site$2d$header$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 94, + lineNumber: 120, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -4746,14 +4770,14 @@ function MemberProfilePage() { className: "mr-2 h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 98, + lineNumber: 124, columnNumber: 15 }, this), " 返回" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 97, + lineNumber: 123, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h1", { @@ -4764,13 +4788,13 @@ function MemberProfilePage() { ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 100, + lineNumber: 126, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 96, + lineNumber: 122, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$members$2f$member$2d$form$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["MemberForm"], { @@ -4780,19 +4804,19 @@ function MemberProfilePage() { onCancel: ()=>setIsEditing(false) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 102, + lineNumber: 128, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 95, + lineNumber: 121, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 93, + lineNumber: 119, columnNumber: 7 }, this); } @@ -4801,7 +4825,7 @@ function MemberProfilePage() { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$site$2d$header$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 115, + lineNumber: 141, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("main", { @@ -4821,24 +4845,24 @@ function MemberProfilePage() { className: "h-full w-full object-cover" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 122, + lineNumber: 148, columnNumber: 17 }, this) : member.gender === 'FEMALE' ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$circle$2d$user$2d$round$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__CircleUserRound$3e$__["CircleUserRound"], { className: "h-20 w-20 text-pink-400" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 129, + lineNumber: 155, columnNumber: 19 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$circle$2d$user$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__CircleUser$3e$__["CircleUser"], { className: "h-20 w-20 text-blue-400" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 131, + lineNumber: 157, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 120, + lineNumber: 146, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -4851,7 +4875,7 @@ function MemberProfilePage() { children: member.fullName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 137, + lineNumber: 163, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { @@ -4862,13 +4886,13 @@ function MemberProfilePage() { ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 138, + lineNumber: 164, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 136, + lineNumber: 162, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -4882,13 +4906,13 @@ function MemberProfilePage() { children: member.courtesyName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 145, + lineNumber: 171, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 144, + lineNumber: 170, columnNumber: 19 }, this), member.artName && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { @@ -4899,13 +4923,13 @@ function MemberProfilePage() { children: member.artName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 150, + lineNumber: 176, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 149, + lineNumber: 175, columnNumber: 19 }, this), member.ancestralHome && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { @@ -4915,13 +4939,13 @@ function MemberProfilePage() { ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 153, + lineNumber: 179, columnNumber: 42 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 142, + lineNumber: 168, columnNumber: 15 }, this), member.tags && member.tags.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -4931,29 +4955,67 @@ function MemberProfilePage() { children: tag }, tag, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 158, + lineNumber: 184, columnNumber: 21 }, this)) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 156, + lineNumber: 182, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 135, + lineNumber: 161, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 119, + lineNumber: 145, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex gap-2 flex-wrap", children: [ + !member.fatherId && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Button"], { + variant: "outline", + onClick: handleQuickAddFather, + className: "gap-2", + children: [ + /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2d$plus$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__UserPlus$3e$__["UserPlus"], { + className: "h-4 w-4" + }, void 0, false, { + fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", + lineNumber: 199, + columnNumber: 17 + }, this), + " 添加父亲" + ] + }, void 0, true, { + fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", + lineNumber: 198, + columnNumber: 15 + }, this), + !member.motherId && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Button"], { + variant: "outline", + onClick: handleQuickAddMother, + className: "gap-2", + children: [ + /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2d$plus$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__UserPlus$3e$__["UserPlus"], { + className: "h-4 w-4" + }, void 0, false, { + fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", + lineNumber: 204, + columnNumber: 17 + }, this), + " 添加母亲" + ] + }, void 0, true, { + fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", + lineNumber: 203, + columnNumber: 15 + }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Button"], { variant: "default", onClick: handleQuickAddChild, @@ -4963,14 +5025,14 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 172, + lineNumber: 208, columnNumber: 15 }, this), " 添加子女" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 171, + lineNumber: 207, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Button"], { @@ -4982,14 +5044,14 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 175, + lineNumber: 211, columnNumber: 15 }, this), " 添加配偶" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 174, + lineNumber: 210, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Button"], { @@ -5000,12 +5062,12 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 178, + lineNumber: 214, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 177, + lineNumber: 213, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Button"], { @@ -5015,12 +5077,12 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 181, + lineNumber: 217, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 180, + lineNumber: 216, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Button"], { @@ -5032,14 +5094,14 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 184, + lineNumber: 220, columnNumber: 15 }, this), " 编辑" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 183, + lineNumber: 219, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Button"], { @@ -5050,24 +5112,24 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 187, + lineNumber: 223, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 186, + lineNumber: 222, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 170, + lineNumber: 196, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 118, + lineNumber: 144, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5085,14 +5147,14 @@ function MemberProfilePage() { className: "w-1 h-6 bg-primary rounded-full" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 198, + lineNumber: 234, columnNumber: 17 }, this), "生平事迹" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 197, + lineNumber: 233, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5102,25 +5164,25 @@ function MemberProfilePage() { children: member.bio }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 203, + lineNumber: 239, columnNumber: 19 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-muted-foreground italic", children: "暂无生平记录..." }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 205, + lineNumber: 241, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 201, + lineNumber: 237, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 196, + lineNumber: 232, columnNumber: 13 }, this), member.photoIds && member.photoIds.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("section", { @@ -5132,14 +5194,14 @@ function MemberProfilePage() { className: "h-6 w-6 text-primary" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 214, + lineNumber: 250, columnNumber: 19 }, this), "照片墙" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 213, + lineNumber: 249, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5152,18 +5214,18 @@ function MemberProfilePage() { readonly: false }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 218, + lineNumber: 254, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 217, + lineNumber: 253, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 212, + lineNumber: 248, columnNumber: 15 }, this), member.stories && member.stories.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("section", { @@ -5175,14 +5237,14 @@ function MemberProfilePage() { className: "h-6 w-6 text-primary" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 231, + lineNumber: 267, columnNumber: 19 }, this), "家族故事" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 230, + lineNumber: 266, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5195,18 +5257,18 @@ function MemberProfilePage() { readonly: false }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 235, + lineNumber: 271, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 234, + lineNumber: 270, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 229, + lineNumber: 265, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("section", { @@ -5218,14 +5280,14 @@ function MemberProfilePage() { className: "w-1 h-6 bg-secondary rounded-full" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 246, + lineNumber: 282, columnNumber: 17 }, this), "家族关系" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 245, + lineNumber: 281, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5239,7 +5301,7 @@ function MemberProfilePage() { children: "父亲 (Father)" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 251, + lineNumber: 287, columnNumber: 19 }, this), member.fatherId ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$client$2f$app$2d$dir$2f$link$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], { @@ -5248,27 +5310,27 @@ function MemberProfilePage() { children: getMember(member.fatherId)?.fullName || member.fatherId }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 255, + lineNumber: 291, columnNumber: 21 }, this) : member.spouseFatherName ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-lg font-serif font-bold text-foreground", children: member.spouseFatherName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 262, + lineNumber: 298, columnNumber: 21 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 266, + lineNumber: 302, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 250, + lineNumber: 286, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5279,7 +5341,7 @@ function MemberProfilePage() { children: "母亲 (Mother)" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 270, + lineNumber: 306, columnNumber: 19 }, this), member.motherId ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$client$2f$app$2d$dir$2f$link$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], { @@ -5288,27 +5350,27 @@ function MemberProfilePage() { children: getMember(member.motherId)?.fullName || member.motherId }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 274, + lineNumber: 310, columnNumber: 21 }, this) : member.spouseMotherName ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-lg font-serif font-bold text-foreground", children: member.spouseMotherName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 281, + lineNumber: 317, columnNumber: 21 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 285, + lineNumber: 321, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 269, + lineNumber: 305, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5319,7 +5381,7 @@ function MemberProfilePage() { children: "配偶 (Spouse)" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 289, + lineNumber: 325, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5330,25 +5392,25 @@ function MemberProfilePage() { children: getMember(spouseId)?.fullName || spouseId }, spouseId, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 295, + lineNumber: 331, columnNumber: 25 }, this)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "无记录" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 304, + lineNumber: 340, columnNumber: 23 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 292, + lineNumber: 328, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 288, + lineNumber: 324, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5359,7 +5421,7 @@ function MemberProfilePage() { children: "子女 (Children)" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 309, + lineNumber: 345, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5370,43 +5432,43 @@ function MemberProfilePage() { children: getMember(childId)?.fullName || childId }, childId, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 315, + lineNumber: 351, columnNumber: 25 }, this)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "无记录" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 324, + lineNumber: 360, columnNumber: 23 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 312, + lineNumber: 348, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 308, + lineNumber: 344, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 249, + lineNumber: 285, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 244, + lineNumber: 280, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 195, + lineNumber: 231, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5420,7 +5482,7 @@ function MemberProfilePage() { children: "详细信息" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 335, + lineNumber: 371, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dl", { @@ -5433,7 +5495,7 @@ function MemberProfilePage() { children: "出生日期" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 338, + lineNumber: 374, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5441,13 +5503,13 @@ function MemberProfilePage() { children: member.birthDate || "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 339, + lineNumber: 375, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 337, + lineNumber: 373, columnNumber: 17 }, this), member.deathDate && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Fragment"], { @@ -5459,7 +5521,7 @@ function MemberProfilePage() { children: "逝世日期" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 344, + lineNumber: 380, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5467,13 +5529,13 @@ function MemberProfilePage() { children: member.deathDate }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 345, + lineNumber: 381, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 343, + lineNumber: 379, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5483,7 +5545,7 @@ function MemberProfilePage() { children: "谥号" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 348, + lineNumber: 384, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5491,13 +5553,13 @@ function MemberProfilePage() { children: member.posthumousName || "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 349, + lineNumber: 385, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 347, + lineNumber: 383, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5507,7 +5569,7 @@ function MemberProfilePage() { children: "墓地" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 352, + lineNumber: 388, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5515,13 +5577,13 @@ function MemberProfilePage() { children: member.burialPlace || "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 353, + lineNumber: 389, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 351, + lineNumber: 387, columnNumber: 21 }, this) ] @@ -5533,7 +5595,7 @@ function MemberProfilePage() { children: "字辈" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 359, + lineNumber: 395, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5541,25 +5603,25 @@ function MemberProfilePage() { children: member.generationName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 360, + lineNumber: 396, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 358, + lineNumber: 394, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 336, + lineNumber: 372, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 334, + lineNumber: 370, columnNumber: 13 }, this), (member.phone || member.telephone || member.email || member.address) && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5570,7 +5632,7 @@ function MemberProfilePage() { children: "联系方式" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 369, + lineNumber: 405, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dl", { @@ -5583,7 +5645,7 @@ function MemberProfilePage() { children: "手机号" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 373, + lineNumber: 409, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5594,18 +5656,18 @@ function MemberProfilePage() { children: member.phone }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 375, + lineNumber: 411, columnNumber: 25 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 374, + lineNumber: 410, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 372, + lineNumber: 408, columnNumber: 21 }, this), member.telephone && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5615,7 +5677,7 @@ function MemberProfilePage() { children: "固定电话" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 383, + lineNumber: 419, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5626,18 +5688,18 @@ function MemberProfilePage() { children: member.telephone }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 385, + lineNumber: 421, columnNumber: 25 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 384, + lineNumber: 420, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 382, + lineNumber: 418, columnNumber: 21 }, this), member.email && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5647,7 +5709,7 @@ function MemberProfilePage() { children: "邮箱" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 393, + lineNumber: 429, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5658,18 +5720,18 @@ function MemberProfilePage() { children: member.email }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 395, + lineNumber: 431, columnNumber: 25 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 394, + lineNumber: 430, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 392, + lineNumber: 428, columnNumber: 21 }, this), member.address && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5679,7 +5741,7 @@ function MemberProfilePage() { children: "现居地址" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 403, + lineNumber: 439, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5687,49 +5749,49 @@ function MemberProfilePage() { children: member.address }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 404, + lineNumber: 440, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 402, + lineNumber: 438, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 370, + lineNumber: 406, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 368, + lineNumber: 404, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 333, + lineNumber: 369, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 193, + lineNumber: 229, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 116, + lineNumber: 142, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 114, + lineNumber: 140, columnNumber: 5 }, this); } diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__10b90bc2._.js.map b/.next/dev/server/chunks/ssr/[root-of-the-server]__10b90bc2._.js.map index 7cf2b408..1026f1b9 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__10b90bc2._.js.map +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__10b90bc2._.js.map @@ -13,5 +13,5 @@ {"offset": {"line": 2066, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/photo-gallery.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { db } from \"@/lib/db\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { X, Upload, Image as ImageIcon, Plus, ZoomIn } from \"lucide-react\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport imageCompression from \"browser-image-compression\"\n\ninterface PhotoGalleryProps {\n photoIds?: string[]\n onChange: (photoIds: string[]) => void\n readonly?: boolean\n}\n\nexport function PhotoGallery({ photoIds = [], onChange, readonly = false }: PhotoGalleryProps) {\n const { showAlert, showConfirm } = useDialog()\n const [photos, setPhotos] = useState<{ id: string; url: string }[]>([])\n const [selectedPhoto, setSelectedPhoto] = useState(null)\n const [isUploading, setIsUploading] = useState(false)\n\n // 加载照片\n useEffect(() => {\n const loadPhotos = async () => {\n const loadedPhotos = await Promise.all(\n photoIds.map(async (id) => {\n try {\n const image = await db.images.get(id)\n if (image) {\n const url = URL.createObjectURL(image.blob)\n return { id, url }\n }\n } catch (error) {\n console.error('加载照片失败:', error)\n }\n return null\n })\n )\n setPhotos(loadedPhotos.filter(Boolean) as { id: string; url: string }[])\n }\n\n if (photoIds.length > 0) {\n loadPhotos()\n }\n\n // 清理 URL\n return () => {\n photos.forEach(photo => URL.revokeObjectURL(photo.url))\n }\n }, [photoIds])\n\n const handleUpload = async (e: React.ChangeEvent) => {\n const files = e.target.files\n if (!files || files.length === 0) return\n\n setIsUploading(true)\n try {\n const newPhotoIds: string[] = []\n\n for (const file of Array.from(files)) {\n if (!file.type.startsWith('image/')) continue\n\n // 压缩图片\n const options = {\n maxSizeMB: 2,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n }\n \n const compressedFile = await imageCompression(file, options)\n \n // 保存到数据库\n const imageId = uuidv4()\n await db.images.add({\n id: imageId,\n blob: compressedFile,\n mimeType: compressedFile.type,\n createdAt: new Date().toISOString(),\n })\n\n newPhotoIds.push(imageId)\n }\n\n // 更新照片列表\n onChange([...photoIds, ...newPhotoIds])\n } catch (error) {\n console.error('上传照片失败:', error)\n await showAlert('上传照片失败', '错误')\n } finally {\n setIsUploading(false)\n e.target.value = ''\n }\n }\n\n const handleDelete = async (photoId: string) => {\n const confirmed = await showConfirm('确定要删除这张照片吗?', '删除照片')\n if (confirmed) {\n onChange(photoIds.filter(id => id !== photoId))\n }\n }\n\n return (\n
\n
\n

照片墙 ({photos.length})

\n {!readonly && (\n \n )}\n
\n\n {photos.length > 0 ? (\n
\n {photos.map((photo) => (\n
\n setSelectedPhoto(photo.url)}\n />\n {!readonly && (\n handleDelete(photo.id)}\n >\n \n \n )}\n setSelectedPhoto(photo.url)}\n >\n \n \n
\n ))}\n
\n ) : (\n
\n 暂无照片\n
\n )}\n\n {/* 照片预览对话框 */}\n setSelectedPhoto(null)}>\n \n \n 照片预览\n \n {selectedPhoto && (\n \n )}\n \n \n
\n )\n}\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 2360, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/story-manager.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Label } from \"@/components/ui/label\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from \"@/components/ui/dialog\"\nimport { Plus, Edit, Trash, BookOpen, Calendar } from \"lucide-react\"\nimport type { FamilyStory } from \"@/types/family\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\n\ninterface StoryManagerProps {\n stories?: FamilyStory[]\n onChange: (stories: FamilyStory[]) => void\n readonly?: boolean\n}\n\nexport function StoryManager({ stories = [], onChange, readonly = false }: StoryManagerProps) {\n const { showAlert, showConfirm } = useDialog()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const [editingStory, setEditingStory] = useState(null)\n const [formData, setFormData] = useState>({\n title: \"\",\n content: \"\",\n date: \"\",\n })\n\n const handleAdd = () => {\n setEditingStory(null)\n setFormData({ title: \"\", content: \"\", date: \"\" })\n setIsDialogOpen(true)\n }\n\n const handleEdit = (story: FamilyStory) => {\n setEditingStory(story)\n setFormData(story)\n setIsDialogOpen(true)\n }\n\n const handleDelete = async (storyId: string) => {\n const confirmed = await showConfirm(\"确定要删除这个故事吗?\", \"删除故事\")\n if (confirmed) {\n onChange(stories.filter(s => s.id !== storyId))\n }\n }\n\n const handleSave = async () => {\n if (!formData.title || !formData.content) {\n await showAlert(\"请填写标题和内容\", \"提示\")\n return\n }\n\n const now = new Date().toISOString()\n \n if (editingStory) {\n // 更新现有故事\n onChange(\n stories.map(s =>\n s.id === editingStory.id\n ? { ...s, ...formData, updatedAt: now }\n : s\n )\n )\n } else {\n // 添加新故事\n const newStory: FamilyStory = {\n id: uuidv4(),\n title: formData.title!,\n content: formData.content!,\n date: formData.date,\n imageIds: formData.imageIds || [],\n createdAt: now,\n updatedAt: now,\n }\n onChange([...stories, newStory])\n }\n\n setIsDialogOpen(false)\n setFormData({ title: \"\", content: \"\", date: \"\" })\n }\n\n return (\n
\n
\n

\n \n 家族故事 ({stories.length})\n

\n {!readonly && (\n \n \n 添加故事\n \n )}\n
\n\n {stories.length > 0 ? (\n
\n {stories\n .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())\n .map((story) => (\n \n \n
\n
\n {story.title}\n {story.date && (\n
\n \n {story.date}\n
\n )}\n
\n {!readonly && (\n
\n handleEdit(story)}\n >\n \n \n handleDelete(story.id)}\n >\n \n \n
\n )}\n
\n
\n \n

\n {story.content}\n

\n
\n 创建于 {new Date(story.createdAt).toLocaleDateString('zh-CN')}\n
\n
\n
\n ))}\n
\n ) : (\n
\n 暂无家族故事\n
\n )}\n\n {/* 添加/编辑故事对话框 */}\n \n \n \n {editingStory ? \"编辑故事\" : \"添加故事\"}\n \n
\n
\n \n setFormData({ ...formData, title: e.target.value })}\n />\n
\n
\n \n setFormData({ ...formData, date: e.target.value })}\n />\n
\n
\n \n setFormData({ ...formData, content: e.target.value })}\n />\n
\n
\n \n \n \n \n
\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 2818, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/member-form.tsx"],"sourcesContent":["\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { CalendarIcon, User, Scroll, Users, Images, BookOpen } from \"lucide-react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { ImageUpload } from \"@/components/ui/image-upload\"\nimport { PhotoGallery } from \"./photo-gallery\"\nimport { StoryManager } from \"./story-manager\"\n\ninterface MemberFormProps {\n initialData?: Partial\n existingMembers?: FamilyMember[]\n onSubmit: (data: FamilyMember) => void\n onCancel: () => void\n}\n\nexport function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }: MemberFormProps) {\n // 计算最大世系\n const maxGeneration = existingMembers.length > 0 \n ? Math.max(...existingMembers.map(m => m.generation || 1))\n : 1\n \n // 获取始祖的姓氏(第1世成员)\n const ancestorSurname = existingMembers.find(m => m.generation === 1)?.surname || \"\"\n \n // Initialize state with default values or initialData\n const [formData, setFormData] = useState>(() => {\n const defaults = {\n id: crypto.randomUUID(),\n surname: ancestorSurname,\n givenName: \"\",\n fullName: \"\",\n gender: \"MALE\" as \"MALE\" | \"FEMALE\",\n generation: maxGeneration,\n spouseIds: [],\n childrenIds: [],\n tags: [],\n }\n \n if (!initialData) return defaults\n \n return {\n ...defaults,\n ...initialData,\n gender: (initialData.gender || \"MALE\").toUpperCase() as \"MALE\" | \"FEMALE\",\n spouseIds: initialData.spouseIds || [],\n childrenIds: initialData.childrenIds || [],\n tags: initialData.tags || [],\n fatherId: initialData.fatherId || undefined,\n motherId: initialData.motherId || undefined,\n }\n })\n\n const [errors, setErrors] = useState([])\n\n const handleChange = (field: keyof FamilyMember, value: any) => {\n setFormData((prev) => {\n const newData = { ...prev, [field]: value }\n \n // Auto-update full name if surname or given name changes\n if (field === \"surname\" || field === \"givenName\") {\n newData.fullName = (newData.surname || \"\") + (newData.givenName || \"\")\n }\n \n // 选择父亲时自动带出母亲\n if (field === \"fatherId\" && value) {\n const father = existingMembers.find(m => m.id === value)\n if (father && father.spouseIds && father.spouseIds.length > 0) {\n // 找到父亲的配偶(母亲)\n const motherId = father.spouseIds[0]\n newData.motherId = motherId\n }\n }\n \n // 选择母亲时自动带出父亲\n if (field === \"motherId\" && value) {\n const mother = existingMembers.find(m => m.id === value)\n if (mother && mother.spouseIds && mother.spouseIds.length > 0) {\n // 找到母亲的配偶(父亲)\n const fatherId = mother.spouseIds[0]\n newData.fatherId = fatherId\n }\n }\n \n return newData\n })\n // Clear errors when user makes changes\n if (errors.length > 0) setErrors([])\n }\n\n const handleSpouseAdd = (spouseId: string) => {\n if (!spouseId || spouseId === \"none\") return\n \n setFormData((prev) => {\n const currentSpouses = prev.spouseIds || []\n // 避免重复添加\n if (currentSpouses.includes(spouseId)) return prev\n \n return {\n ...prev,\n spouseIds: [...currentSpouses, spouseId]\n }\n })\n }\n\n const handleSpouseRemove = (spouseId: string) => {\n setFormData((prev) => ({\n ...prev,\n spouseIds: (prev.spouseIds || []).filter(id => id !== spouseId)\n }))\n }\n\n const handleChildAdd = (childId: string) => {\n if (!childId || childId === \"none\") return\n \n setFormData((prev) => {\n const currentChildren = prev.childrenIds || []\n // 避免重复添加\n if (currentChildren.includes(childId)) return prev\n \n return {\n ...prev,\n childrenIds: [...currentChildren, childId]\n }\n })\n }\n\n const handleChildRemove = (childId: string) => {\n setFormData((prev) => ({\n ...prev,\n childrenIds: (prev.childrenIds || []).filter(id => id !== childId)\n }))\n }\n\n const validate = (): boolean => {\n const newErrors: string[] = []\n\n // 1. Date Validation\n if (formData.birthDate && formData.deathDate) {\n if (new Date(formData.birthDate) > new Date(formData.deathDate)) {\n newErrors.push(\"出生日期不能晚于逝世日期\")\n }\n }\n\n // 2. Parent Age Validation\n const birthYear = formData.birthDate ? new Date(formData.birthDate).getFullYear() : null\n\n if (birthYear) {\n if (formData.fatherId) {\n const father = existingMembers.find((m) => m.id === formData.fatherId)\n if (father?.birthDate) {\n const fatherBirthYear = new Date(father.birthDate).getFullYear()\n if (birthYear - fatherBirthYear < 15) {\n newErrors.push(`与父亲的年龄差过小 (${birthYear - fatherBirthYear}岁),请确认`)\n }\n if (birthYear < fatherBirthYear) {\n newErrors.push(\"出生日期不能早于父亲\")\n }\n }\n }\n\n if (formData.motherId) {\n const mother = existingMembers.find((m) => m.id === formData.motherId)\n if (mother?.birthDate) {\n const motherBirthYear = new Date(mother.birthDate).getFullYear()\n if (birthYear - motherBirthYear < 15) {\n newErrors.push(`与母亲的年龄差过小 (${birthYear - motherBirthYear}岁),请确认`)\n }\n if (birthYear < motherBirthYear) {\n newErrors.push(\"出生日期不能早于母亲\")\n }\n }\n }\n }\n\n // 3. Generation Validation\n if (formData.fatherId) {\n const father = existingMembers.find((m) => m.id === formData.fatherId)\n if (father && formData.generation !== father.generation + 1) {\n newErrors.push(`世系错误:父亲是第 ${father.generation} 世,子女应为第 ${father.generation + 1} 世`)\n }\n }\n\n // 4. Circular Reference Detection (循环引用检测)\n if (formData.fatherId || formData.motherId) {\n const visited = new Set()\n const checkCircular = (memberId: string): boolean => {\n if (memberId === formData.id) return true\n if (visited.has(memberId)) return false\n visited.add(memberId)\n\n const member = existingMembers.find((m) => m.id === memberId)\n if (!member) return false\n\n if (member.fatherId && checkCircular(member.fatherId)) return true\n if (member.motherId && checkCircular(member.motherId)) return true\n\n return false\n }\n\n if (formData.fatherId && checkCircular(formData.fatherId)) {\n newErrors.push(\"检测到循环引用:不能将自己的后代设置为父亲\")\n }\n if (formData.motherId && checkCircular(formData.motherId)) {\n newErrors.push(\"检测到循环引用:不能将自己的后代设置为母亲\")\n }\n }\n\n // 5. Self-Reference Detection (自我引用检测)\n if (formData.fatherId === formData.id) {\n newErrors.push(\"不能将自己设置为自己的父亲\")\n }\n if (formData.motherId === formData.id) {\n newErrors.push(\"不能将自己设置为自己的母亲\")\n }\n if (formData.spouseIds?.includes(formData.id || \"\")) {\n newErrors.push(\"不能将自己设置为自己的配偶\")\n }\n\n setErrors(newErrors)\n return newErrors.length === 0\n }\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n if (validate()) {\n onSubmit(formData as FamilyMember)\n }\n }\n\n const potentialRelatives = existingMembers.filter((m) => m.id !== formData.id)\n\n return (\n
\n {errors.length > 0 && (\n
\n

请检查以下问题:

\n
    \n {errors.map((err, index) => (\n
  • {err}
  • \n ))}\n
\n
\n )}\n\n
\n {/* 基本信息和家庭关系 - 两列布局 */}\n
\n {/* 左列:基本信息 */}\n \n \n \n \n 基本信息 (Identity)\n \n \n \n
\n handleChange(\"avatarImageId\", imageId)}\n />\n
\n\n
\n
\n \n handleChange(\"surname\", e.target.value)}\n />\n
\n
\n \n handleChange(\"givenName\", e.target.value)}\n />\n
\n
\n\n
\n
\n \n \n
\n
\n \n handleChange(\"generation\", Number.parseInt(e.target.value))}\n />\n
\n
\n
\n
\n\n {/* 右列:家庭关系 */}\n \n \n \n \n 家庭关系 (Relationships)\n \n \n \n
\n \n
\n handleChange(\"fatherId\", val === \"none\" ? undefined : val)}\n >\n \n \n \n \n 无 (None)\n {potentialRelatives\n .filter((m) => m.gender === \"MALE\" && m.generation === (formData.generation || 1) - 1)\n .map((m) => (\n \n {m.fullName} ({m.generation}世)\n \n ))}\n \n \n {!formData.fatherId && (\n handleChange(\"spouseFatherName\", e.target.value)}\n className=\"flex-1\"\n />\n )}\n
\n
\n\n
\n \n
\n handleChange(\"motherId\", val === \"none\" ? undefined : val)}\n >\n \n \n \n \n 无 (None)\n {potentialRelatives\n .filter((m) => m.gender === \"FEMALE\" && m.generation === (formData.generation || 1) - 1)\n .map((m) => (\n \n {m.fullName} ({m.generation}世)\n \n ))}\n \n \n {!formData.motherId && (\n handleChange(\"spouseMotherName\", e.target.value)}\n className=\"flex-1\"\n />\n )}\n
\n
\n\n
\n \n \n \n {/* 已选配偶列表 */}\n {formData.spouseIds && formData.spouseIds.length > 0 && (\n
\n {formData.spouseIds.map((spouseId, index) => {\n const spouse = existingMembers.find(m => m.id === spouseId)\n if (!spouse) return null\n \n return (\n
\n \n {index + 1}. {spouse.fullName} (第{spouse.generation}世)\n \n handleSpouseRemove(spouseId)}\n className=\"h-6 w-6 p-0 hover:bg-destructive hover:text-destructive-foreground\"\n >\n ×\n \n
\n )\n })}\n
\n )}\n
\n\n
\n \n \n \n {/* 已选子女列表 */}\n {formData.childrenIds && formData.childrenIds.length > 0 && (\n
\n {formData.childrenIds.map((childId, index) => {\n const child = existingMembers.find(m => m.id === childId)\n if (!child) return null\n \n return (\n
\n \n {index + 1}. {child.fullName} (第{child.generation}世)\n \n handleChildRemove(childId)}\n className=\"h-6 w-6 p-0 hover:bg-destructive hover:text-destructive-foreground\"\n >\n ×\n \n
\n )\n })}\n
\n )}\n
\n
\n
\n
\n\n {/* Traditional Names */}\n \n \n \n \n 传统称谓 (Traditional Names)\n \n \n \n
\n
\n \n handleChange(\"courtesyName\", e.target.value)}\n placeholder=\"e.g. 伯虎\"\n />\n
\n
\n \n handleChange(\"artName\", e.target.value)}\n placeholder=\"e.g. 六如居士\"\n />\n
\n
\n
\n
\n \n handleChange(\"generationName\", e.target.value)}\n />\n
\n
\n \n handleChange(\"posthumousName\", e.target.value)}\n />\n
\n
\n
\n
\n\n {/* Dates & Places */}\n \n \n \n \n 生平与地点 (Life & Places)\n \n \n \n
\n
\n \n handleChange(\"birthDate\", e.target.value)}\n />\n
\n
\n \n handleChange(\"deathDate\", e.target.value)}\n />\n
\n
\n
\n \n handleChange(\"ancestralHome\", e.target.value)}\n placeholder=\"e.g. 福建省泉州市\"\n />\n
\n
\n \n handleChange(\"burialPlace\", e.target.value)}\n />\n
\n
\n
\n\n {/* Contact Information */}\n \n \n \n \n 联系方式 (Contact Information)\n \n 在世成员的联系方式\n \n \n
\n \n handleChange(\"phone\", e.target.value)}\n placeholder=\"e.g. 13800138000\"\n />\n
\n
\n \n handleChange(\"telephone\", e.target.value)}\n placeholder=\"e.g. 0592-1234567\"\n />\n
\n
\n \n handleChange(\"email\", e.target.value)}\n placeholder=\"e.g. example@email.com\"\n />\n
\n
\n \n handleChange(\"address\", e.target.value)}\n placeholder=\"e.g. 福建省厦门市思明区XX路XX号\"\n />\n
\n
\n
\n\n {/* Biography */}\n \n \n \n \n 生平事迹 (Biography)\n \n \n \n handleChange(\"bio\", e.target.value)}\n />\n \n \n\n {/* Tags */}\n \n \n \n \n 标签 (Tags)\n \n 添加标签以便分类和搜索(按回车添加)\n \n \n
\n
\n {\n if (e.key === 'Enter') {\n e.preventDefault()\n const input = e.currentTarget\n const value = input.value.trim()\n if (value && !(formData.tags || []).includes(value)) {\n handleChange('tags', [...(formData.tags || []), value])\n input.value = ''\n }\n }\n }}\n />\n
\n {formData.tags && formData.tags.length > 0 && (\n
\n {formData.tags.map((tag, index) => (\n \n {tag}\n {\n const newTags = formData.tags?.filter((_, i) => i !== index) || []\n handleChange('tags', newTags)\n }}\n className=\"ml-1 hover:text-destructive\"\n >\n ×\n \n \n ))}\n
\n )}\n
\n
\n
\n\n {/* Photo Gallery */}\n \n \n \n \n 照片墙 (Photo Gallery)\n \n 上传多张照片记录珍贵时刻\n \n \n handleChange(\"photoIds\", photoIds)}\n />\n \n \n\n {/* Family Stories */}\n \n \n \n \n 家族故事 (Family Stories)\n \n 记录与此成员相关的家族故事\n \n \n handleChange(\"stories\", stories)}\n />\n \n \n\n
\n\n
\n \n \n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 4588, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/%5Bid%5D/page.tsx"],"sourcesContent":["\"use client\"\n\nimport Link from \"next/link\"\n\nimport { useParams, useRouter } from \"next/navigation\"\nimport { useFamily } from \"@/context/family-context\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { MemberForm } from \"@/components/members/member-form\"\nimport { Button } from \"@/components/ui/button\"\nimport { ArrowLeft, Edit, Trash, Share2, Printer, CircleUser, CircleUserRound, Images, BookOpen, UserPlus } from \"lucide-react\"\nimport { useState, useEffect } from \"react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { db } from \"@/lib/db\"\nimport { PhotoGallery } from \"@/components/members/photo-gallery\"\nimport { StoryManager } from \"@/components/members/story-manager\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\n\nexport default function MemberProfilePage() {\n const { id } = useParams()\n const { getMember, updateMember, deleteMember, treeData } = useFamily()\n const { showConfirm } = useDialog()\n const router = useRouter()\n const [isEditing, setIsEditing] = useState(false)\n const [avatarBlobUrl, setAvatarBlobUrl] = useState(undefined)\n\n const member = getMember(id as string)\n const allMembers = Object.values(treeData.members)\n\n // Load avatar blob if exists\n useEffect(() => {\n if (member?.avatarImageId) {\n db.images.get(member.avatarImageId).then((image) => {\n if (image) {\n const url = URL.createObjectURL(image.blob)\n setAvatarBlobUrl(url)\n return () => URL.revokeObjectURL(url)\n }\n })\n } else {\n setAvatarBlobUrl(undefined)\n }\n }, [member?.avatarImageId])\n\n if (!member) {\n return (\n
\n \n
\n

Member not found

\n \n
\n
\n )\n }\n\n const handleSave = (updatedMember: FamilyMember) => {\n updateMember(updatedMember.id, updatedMember)\n setIsEditing(false)\n }\n\n const handleDelete = async () => {\n const confirmed = await showConfirm(\"确定要删除这位成员吗?这将同时删除其关联关系。\", \"删除成员\", \"destructive\")\n if (confirmed) {\n deleteMember(member.id)\n router.push(\"/members\")\n }\n }\n\n const handleQuickAddChild = () => {\n // 跳转到新增成员页面,并预填父母信息\n const params = new URLSearchParams()\n if (member.gender === 'MALE') {\n params.set('fatherId', member.id)\n } else {\n params.set('motherId', member.id)\n }\n params.set('generation', (member.generation + 1).toString())\n router.push(`/members/new?${params.toString()}`)\n }\n\n const handleQuickAddSpouse = () => {\n // 跳转到新增成员页面,并预填配偶信息\n const params = new URLSearchParams()\n params.set('spouseId', member.id)\n params.set('generation', member.generation.toString())\n // 配偶性别与当前成员相反\n params.set('gender', member.gender === 'MALE' ? 'FEMALE' : 'MALE')\n router.push(`/members/new?${params.toString()}`)\n }\n\n if (isEditing) {\n return (\n
\n \n
\n
\n \n

编辑成员: {member.fullName}

\n
\n setIsEditing(false)} \n />\n
\n
\n )\n }\n\n return (\n
\n \n
\n {/* Header Section */}\n
\n
\n
\n {avatarBlobUrl ? (\n \n ) : (\n member.gender === 'FEMALE' ? (\n \n ) : (\n \n )\n )}\n
\n
\n
\n

{member.fullName}

\n \n {member.generation}世\n \n
\n
\n {member.courtesyName && (\n

\n 字:{member.courtesyName}\n

\n )}\n {member.artName && (\n

\n 号:{member.artName}\n

\n )}\n {member.ancestralHome &&

籍贯:{member.ancestralHome}

}\n
\n {member.tags && member.tags.length > 0 && (\n
\n {member.tags.map((tag) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n
\n\n
\n \n \n \n \n \n \n
\n
\n\n {/* Content Grid */}\n
\n {/* Main Biography */}\n
\n
\n

\n \n 生平事迹\n

\n
\n {member.bio ? (\n

{member.bio}

\n ) : (\n

暂无生平记录...

\n )}\n
\n
\n\n {/* Photo Gallery */}\n {member.photoIds && member.photoIds.length > 0 && (\n
\n

\n \n 照片墙\n

\n
\n updateMember(member.id, { photoIds })}\n readonly={false}\n />\n
\n
\n )}\n\n {/* Family Stories */}\n {member.stories && member.stories.length > 0 && (\n
\n

\n \n 家族故事\n

\n
\n updateMember(member.id, { stories })}\n readonly={false}\n />\n
\n
\n )}\n\n
\n

\n \n 家族关系\n

\n
\n
\n

\n 父亲 (Father)\n

\n {member.fatherId ? (\n \n {getMember(member.fatherId)?.fullName || member.fatherId}\n \n ) : member.spouseFatherName ? (\n \n {member.spouseFatherName}\n \n ) : (\n -\n )}\n
\n
\n

\n 母亲 (Mother)\n

\n {member.motherId ? (\n \n {getMember(member.motherId)?.fullName || member.motherId}\n \n ) : member.spouseMotherName ? (\n \n {member.spouseMotherName}\n \n ) : (\n -\n )}\n
\n
\n

\n 配偶 (Spouse)\n

\n
\n {member.spouseIds?.length > 0 ? (\n member.spouseIds.map((spouseId) => (\n \n {getMember(spouseId)?.fullName || spouseId}\n \n ))\n ) : (\n 无记录\n )}\n
\n
\n
\n

\n 子女 (Children)\n

\n
\n {member.childrenIds?.length > 0 ? (\n member.childrenIds.map((childId) => (\n \n {getMember(childId)?.fullName || childId}\n \n ))\n ) : (\n 无记录\n )}\n
\n
\n
\n
\n
\n\n {/* Sidebar Info */}\n
\n
\n

详细信息

\n
\n
\n
出生日期
\n
{member.birthDate || \"-\"}
\n
\n {member.deathDate && (\n <>\n
\n
逝世日期
\n
{member.deathDate}
\n
\n
\n
谥号
\n
{member.posthumousName || \"-\"}
\n
\n
\n
墓地
\n
{member.burialPlace || \"-\"}
\n
\n \n )}\n {member.generationName && (\n
\n
字辈
\n
{member.generationName}
\n
\n )}\n
\n
\n \n {/* 联系方式 */}\n {(member.phone || member.telephone || member.email || member.address) && (\n
\n

联系方式

\n
\n {member.phone && (\n
\n
手机号
\n
\n \n {member.phone}\n \n
\n
\n )}\n {member.telephone && (\n
\n
固定电话
\n
\n \n {member.telephone}\n \n
\n
\n )}\n {member.email && (\n
\n
邮箱
\n
\n \n {member.email}\n \n
\n
\n )}\n {member.address && (\n
\n
现居地址
\n
{member.address}
\n
\n )}\n
\n
\n )}\n
\n
\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 4588, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/%5Bid%5D/page.tsx"],"sourcesContent":["\"use client\"\n\nimport Link from \"next/link\"\n\nimport { useParams, useRouter } from \"next/navigation\"\nimport { useFamily } from \"@/context/family-context\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { MemberForm } from \"@/components/members/member-form\"\nimport { Button } from \"@/components/ui/button\"\nimport { ArrowLeft, Edit, Trash, Share2, Printer, CircleUser, CircleUserRound, Images, BookOpen, UserPlus } from \"lucide-react\"\nimport { useState, useEffect } from \"react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { db } from \"@/lib/db\"\nimport { PhotoGallery } from \"@/components/members/photo-gallery\"\nimport { StoryManager } from \"@/components/members/story-manager\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\n\nexport default function MemberProfilePage() {\n const { id } = useParams()\n const { getMember, updateMember, deleteMember, treeData } = useFamily()\n const { showConfirm } = useDialog()\n const router = useRouter()\n const [isEditing, setIsEditing] = useState(false)\n const [avatarBlobUrl, setAvatarBlobUrl] = useState(undefined)\n\n const member = getMember(id as string)\n const allMembers = Object.values(treeData.members)\n\n // Load avatar blob if exists\n useEffect(() => {\n if (member?.avatarImageId) {\n db.images.get(member.avatarImageId).then((image) => {\n if (image) {\n const url = URL.createObjectURL(image.blob)\n setAvatarBlobUrl(url)\n return () => URL.revokeObjectURL(url)\n }\n })\n } else {\n setAvatarBlobUrl(undefined)\n }\n }, [member?.avatarImageId])\n\n if (!member) {\n return (\n
\n \n
\n

Member not found

\n \n
\n
\n )\n }\n\n const handleSave = (updatedMember: FamilyMember) => {\n updateMember(updatedMember.id, updatedMember)\n setIsEditing(false)\n }\n\n const handleDelete = async () => {\n const confirmed = await showConfirm(\"确定要删除这位成员吗?这将同时删除其关联关系。\", \"删除成员\", \"destructive\")\n if (confirmed) {\n deleteMember(member.id)\n router.push(\"/members\")\n }\n }\n\n const handleQuickAddChild = () => {\n // 跳转到新增成员页面,并预填父母信息\n const params = new URLSearchParams()\n if (member.gender === 'MALE') {\n params.set('fatherId', member.id)\n } else {\n params.set('motherId', member.id)\n }\n params.set('generation', (member.generation + 1).toString())\n router.push(`/members/new?${params.toString()}`)\n }\n\n const handleQuickAddSpouse = () => {\n // 跳转到新增成员页面,并预填配偶信息\n const params = new URLSearchParams()\n params.set('spouseId', member.id)\n params.set('generation', member.generation.toString())\n // 配偶性别与当前成员相反\n params.set('gender', member.gender === 'MALE' ? 'FEMALE' : 'MALE')\n router.push(`/members/new?${params.toString()}`)\n }\n\n const handleQuickAddFather = () => {\n // 跳转到新增成员页面,并预填父亲信息\n const params = new URLSearchParams()\n params.set('childId', member.id)\n params.set('generation', (member.generation - 1).toString())\n params.set('gender', 'MALE')\n // 如果已有母亲,将母亲设置为配偶\n if (member.motherId) {\n params.set('spouseId', member.motherId)\n }\n router.push(`/members/new?${params.toString()}`)\n }\n\n const handleQuickAddMother = () => {\n // 跳转到新增成员页面,并预填母亲信息\n const params = new URLSearchParams()\n params.set('childId', member.id)\n params.set('generation', (member.generation - 1).toString())\n params.set('gender', 'FEMALE')\n // 如果已有父亲,将父亲设置为配偶\n if (member.fatherId) {\n params.set('spouseId', member.fatherId)\n }\n router.push(`/members/new?${params.toString()}`)\n }\n\n if (isEditing) {\n return (\n
\n \n
\n
\n \n

编辑成员: {member.fullName}

\n
\n setIsEditing(false)} \n />\n
\n
\n )\n }\n\n return (\n
\n \n
\n {/* Header Section */}\n
\n
\n
\n {avatarBlobUrl ? (\n \n ) : (\n member.gender === 'FEMALE' ? (\n \n ) : (\n \n )\n )}\n
\n
\n
\n

{member.fullName}

\n \n {member.generation}世\n \n
\n
\n {member.courtesyName && (\n

\n 字:{member.courtesyName}\n

\n )}\n {member.artName && (\n

\n 号:{member.artName}\n

\n )}\n {member.ancestralHome &&

籍贯:{member.ancestralHome}

}\n
\n {member.tags && member.tags.length > 0 && (\n
\n {member.tags.map((tag) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n
\n\n
\n {!member.fatherId && (\n \n )}\n {!member.motherId && (\n \n )}\n \n \n \n \n \n \n
\n
\n\n {/* Content Grid */}\n
\n {/* Main Biography */}\n
\n
\n

\n \n 生平事迹\n

\n
\n {member.bio ? (\n

{member.bio}

\n ) : (\n

暂无生平记录...

\n )}\n
\n
\n\n {/* Photo Gallery */}\n {member.photoIds && member.photoIds.length > 0 && (\n
\n

\n \n 照片墙\n

\n
\n updateMember(member.id, { photoIds })}\n readonly={false}\n />\n
\n
\n )}\n\n {/* Family Stories */}\n {member.stories && member.stories.length > 0 && (\n
\n

\n \n 家族故事\n

\n
\n updateMember(member.id, { stories })}\n readonly={false}\n />\n
\n
\n )}\n\n
\n

\n \n 家族关系\n

\n
\n
\n

\n 父亲 (Father)\n

\n {member.fatherId ? (\n \n {getMember(member.fatherId)?.fullName || member.fatherId}\n \n ) : member.spouseFatherName ? (\n \n {member.spouseFatherName}\n \n ) : (\n -\n )}\n
\n
\n

\n 母亲 (Mother)\n

\n {member.motherId ? (\n \n {getMember(member.motherId)?.fullName || member.motherId}\n \n ) : member.spouseMotherName ? (\n \n {member.spouseMotherName}\n \n ) : (\n -\n )}\n
\n
\n

\n 配偶 (Spouse)\n

\n
\n {member.spouseIds?.length > 0 ? (\n member.spouseIds.map((spouseId) => (\n \n {getMember(spouseId)?.fullName || spouseId}\n \n ))\n ) : (\n 无记录\n )}\n
\n
\n
\n

\n 子女 (Children)\n

\n
\n {member.childrenIds?.length > 0 ? (\n member.childrenIds.map((childId) => (\n \n {getMember(childId)?.fullName || childId}\n \n ))\n ) : (\n 无记录\n )}\n
\n
\n
\n
\n
\n\n {/* Sidebar Info */}\n
\n
\n

详细信息

\n
\n
\n
出生日期
\n
{member.birthDate || \"-\"}
\n
\n {member.deathDate && (\n <>\n
\n
逝世日期
\n
{member.deathDate}
\n
\n
\n
谥号
\n
{member.posthumousName || \"-\"}
\n
\n
\n
墓地
\n
{member.burialPlace || \"-\"}
\n
\n \n )}\n {member.generationName && (\n
\n
字辈
\n
{member.generationName}
\n
\n )}\n
\n
\n \n {/* 联系方式 */}\n {(member.phone || member.telephone || member.email || member.address) && (\n
\n

联系方式

\n
\n {member.phone && (\n
\n
手机号
\n
\n \n {member.phone}\n \n
\n
\n )}\n {member.telephone && (\n
\n
固定电话
\n
\n \n {member.telephone}\n \n
\n
\n )}\n {member.email && (\n
\n
邮箱
\n
\n \n {member.email}\n \n
\n
\n )}\n {member.address && (\n
\n
现居地址
\n
{member.address}
\n
\n )}\n
\n
\n )}\n
\n
\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__3f095049._.js b/.next/dev/server/chunks/ssr/[root-of-the-server]__3f095049._.js index b3ecb069..a876c6cc 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__3f095049._.js +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__3f095049._.js @@ -4617,9 +4617,10 @@ function NewMemberPage() { const fatherId = searchParams.get('fatherId'); const motherId = searchParams.get('motherId'); const spouseId = searchParams.get('spouseId'); + const childId = searchParams.get('childId'); const generation = searchParams.get('generation'); const gender = searchParams.get('gender'); - if (!fatherId && !motherId && !spouseId && !generation && !gender) return undefined; + if (!fatherId && !motherId && !spouseId && !childId && !generation && !gender) return undefined; const data = {}; // 处理父母信息 if (fatherId) { @@ -4644,6 +4645,12 @@ function NewMemberPage() { spouseId ]; } + // 处理子女信息(添加父母时使用) + if (childId) { + data.childrenIds = [ + childId + ]; + } // 处理世代 if (generation) { data.generation = parseInt(generation); @@ -4676,7 +4683,7 @@ function NewMemberPage() { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$site$2d$header$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 85, + lineNumber: 91, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -4693,14 +4700,14 @@ function NewMemberPage() { className: "mr-2 h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 89, + lineNumber: 95, columnNumber: 13 }, this), " 返回" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 88, + lineNumber: 94, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h1", { @@ -4708,13 +4715,13 @@ function NewMemberPage() { children: "新增家族成员" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 91, + lineNumber: 97, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 87, + lineNumber: 93, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$members$2f$member$2d$form$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["MemberForm"], { @@ -4724,19 +4731,19 @@ function NewMemberPage() { onCancel: ()=>router.back() }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 93, + lineNumber: 99, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 86, + lineNumber: 92, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 84, + lineNumber: 90, columnNumber: 5 }, this); } diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__3f095049._.js.map b/.next/dev/server/chunks/ssr/[root-of-the-server]__3f095049._.js.map index e797d751..f521bda8 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__3f095049._.js.map +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__3f095049._.js.map @@ -13,5 +13,5 @@ {"offset": {"line": 2066, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/photo-gallery.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { db } from \"@/lib/db\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { X, Upload, Image as ImageIcon, Plus, ZoomIn } from \"lucide-react\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport imageCompression from \"browser-image-compression\"\n\ninterface PhotoGalleryProps {\n photoIds?: string[]\n onChange: (photoIds: string[]) => void\n readonly?: boolean\n}\n\nexport function PhotoGallery({ photoIds = [], onChange, readonly = false }: PhotoGalleryProps) {\n const { showAlert, showConfirm } = useDialog()\n const [photos, setPhotos] = useState<{ id: string; url: string }[]>([])\n const [selectedPhoto, setSelectedPhoto] = useState(null)\n const [isUploading, setIsUploading] = useState(false)\n\n // 加载照片\n useEffect(() => {\n const loadPhotos = async () => {\n const loadedPhotos = await Promise.all(\n photoIds.map(async (id) => {\n try {\n const image = await db.images.get(id)\n if (image) {\n const url = URL.createObjectURL(image.blob)\n return { id, url }\n }\n } catch (error) {\n console.error('加载照片失败:', error)\n }\n return null\n })\n )\n setPhotos(loadedPhotos.filter(Boolean) as { id: string; url: string }[])\n }\n\n if (photoIds.length > 0) {\n loadPhotos()\n }\n\n // 清理 URL\n return () => {\n photos.forEach(photo => URL.revokeObjectURL(photo.url))\n }\n }, [photoIds])\n\n const handleUpload = async (e: React.ChangeEvent) => {\n const files = e.target.files\n if (!files || files.length === 0) return\n\n setIsUploading(true)\n try {\n const newPhotoIds: string[] = []\n\n for (const file of Array.from(files)) {\n if (!file.type.startsWith('image/')) continue\n\n // 压缩图片\n const options = {\n maxSizeMB: 2,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n }\n \n const compressedFile = await imageCompression(file, options)\n \n // 保存到数据库\n const imageId = uuidv4()\n await db.images.add({\n id: imageId,\n blob: compressedFile,\n mimeType: compressedFile.type,\n createdAt: new Date().toISOString(),\n })\n\n newPhotoIds.push(imageId)\n }\n\n // 更新照片列表\n onChange([...photoIds, ...newPhotoIds])\n } catch (error) {\n console.error('上传照片失败:', error)\n await showAlert('上传照片失败', '错误')\n } finally {\n setIsUploading(false)\n e.target.value = ''\n }\n }\n\n const handleDelete = async (photoId: string) => {\n const confirmed = await showConfirm('确定要删除这张照片吗?', '删除照片')\n if (confirmed) {\n onChange(photoIds.filter(id => id !== photoId))\n }\n }\n\n return (\n
\n
\n

照片墙 ({photos.length})

\n {!readonly && (\n \n )}\n
\n\n {photos.length > 0 ? (\n
\n {photos.map((photo) => (\n
\n setSelectedPhoto(photo.url)}\n />\n {!readonly && (\n handleDelete(photo.id)}\n >\n \n \n )}\n setSelectedPhoto(photo.url)}\n >\n \n \n
\n ))}\n
\n ) : (\n
\n 暂无照片\n
\n )}\n\n {/* 照片预览对话框 */}\n setSelectedPhoto(null)}>\n \n \n 照片预览\n \n {selectedPhoto && (\n \n )}\n \n \n
\n )\n}\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 2360, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/story-manager.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Label } from \"@/components/ui/label\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from \"@/components/ui/dialog\"\nimport { Plus, Edit, Trash, BookOpen, Calendar } from \"lucide-react\"\nimport type { FamilyStory } from \"@/types/family\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\n\ninterface StoryManagerProps {\n stories?: FamilyStory[]\n onChange: (stories: FamilyStory[]) => void\n readonly?: boolean\n}\n\nexport function StoryManager({ stories = [], onChange, readonly = false }: StoryManagerProps) {\n const { showAlert, showConfirm } = useDialog()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const [editingStory, setEditingStory] = useState(null)\n const [formData, setFormData] = useState>({\n title: \"\",\n content: \"\",\n date: \"\",\n })\n\n const handleAdd = () => {\n setEditingStory(null)\n setFormData({ title: \"\", content: \"\", date: \"\" })\n setIsDialogOpen(true)\n }\n\n const handleEdit = (story: FamilyStory) => {\n setEditingStory(story)\n setFormData(story)\n setIsDialogOpen(true)\n }\n\n const handleDelete = async (storyId: string) => {\n const confirmed = await showConfirm(\"确定要删除这个故事吗?\", \"删除故事\")\n if (confirmed) {\n onChange(stories.filter(s => s.id !== storyId))\n }\n }\n\n const handleSave = async () => {\n if (!formData.title || !formData.content) {\n await showAlert(\"请填写标题和内容\", \"提示\")\n return\n }\n\n const now = new Date().toISOString()\n \n if (editingStory) {\n // 更新现有故事\n onChange(\n stories.map(s =>\n s.id === editingStory.id\n ? { ...s, ...formData, updatedAt: now }\n : s\n )\n )\n } else {\n // 添加新故事\n const newStory: FamilyStory = {\n id: uuidv4(),\n title: formData.title!,\n content: formData.content!,\n date: formData.date,\n imageIds: formData.imageIds || [],\n createdAt: now,\n updatedAt: now,\n }\n onChange([...stories, newStory])\n }\n\n setIsDialogOpen(false)\n setFormData({ title: \"\", content: \"\", date: \"\" })\n }\n\n return (\n
\n
\n

\n \n 家族故事 ({stories.length})\n

\n {!readonly && (\n \n \n 添加故事\n \n )}\n
\n\n {stories.length > 0 ? (\n
\n {stories\n .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())\n .map((story) => (\n \n \n
\n
\n {story.title}\n {story.date && (\n
\n \n {story.date}\n
\n )}\n
\n {!readonly && (\n
\n handleEdit(story)}\n >\n \n \n handleDelete(story.id)}\n >\n \n \n
\n )}\n
\n
\n \n

\n {story.content}\n

\n
\n 创建于 {new Date(story.createdAt).toLocaleDateString('zh-CN')}\n
\n
\n
\n ))}\n
\n ) : (\n
\n 暂无家族故事\n
\n )}\n\n {/* 添加/编辑故事对话框 */}\n \n \n \n {editingStory ? \"编辑故事\" : \"添加故事\"}\n \n
\n
\n \n setFormData({ ...formData, title: e.target.value })}\n />\n
\n
\n \n setFormData({ ...formData, date: e.target.value })}\n />\n
\n
\n \n setFormData({ ...formData, content: e.target.value })}\n />\n
\n
\n \n \n \n \n
\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 2818, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/member-form.tsx"],"sourcesContent":["\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { CalendarIcon, User, Scroll, Users, Images, BookOpen } from \"lucide-react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { ImageUpload } from \"@/components/ui/image-upload\"\nimport { PhotoGallery } from \"./photo-gallery\"\nimport { StoryManager } from \"./story-manager\"\n\ninterface MemberFormProps {\n initialData?: Partial\n existingMembers?: FamilyMember[]\n onSubmit: (data: FamilyMember) => void\n onCancel: () => void\n}\n\nexport function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }: MemberFormProps) {\n // 计算最大世系\n const maxGeneration = existingMembers.length > 0 \n ? Math.max(...existingMembers.map(m => m.generation || 1))\n : 1\n \n // 获取始祖的姓氏(第1世成员)\n const ancestorSurname = existingMembers.find(m => m.generation === 1)?.surname || \"\"\n \n // Initialize state with default values or initialData\n const [formData, setFormData] = useState>(() => {\n const defaults = {\n id: crypto.randomUUID(),\n surname: ancestorSurname,\n givenName: \"\",\n fullName: \"\",\n gender: \"MALE\" as \"MALE\" | \"FEMALE\",\n generation: maxGeneration,\n spouseIds: [],\n childrenIds: [],\n tags: [],\n }\n \n if (!initialData) return defaults\n \n return {\n ...defaults,\n ...initialData,\n gender: (initialData.gender || \"MALE\").toUpperCase() as \"MALE\" | \"FEMALE\",\n spouseIds: initialData.spouseIds || [],\n childrenIds: initialData.childrenIds || [],\n tags: initialData.tags || [],\n fatherId: initialData.fatherId || undefined,\n motherId: initialData.motherId || undefined,\n }\n })\n\n const [errors, setErrors] = useState([])\n\n const handleChange = (field: keyof FamilyMember, value: any) => {\n setFormData((prev) => {\n const newData = { ...prev, [field]: value }\n \n // Auto-update full name if surname or given name changes\n if (field === \"surname\" || field === \"givenName\") {\n newData.fullName = (newData.surname || \"\") + (newData.givenName || \"\")\n }\n \n // 选择父亲时自动带出母亲\n if (field === \"fatherId\" && value) {\n const father = existingMembers.find(m => m.id === value)\n if (father && father.spouseIds && father.spouseIds.length > 0) {\n // 找到父亲的配偶(母亲)\n const motherId = father.spouseIds[0]\n newData.motherId = motherId\n }\n }\n \n // 选择母亲时自动带出父亲\n if (field === \"motherId\" && value) {\n const mother = existingMembers.find(m => m.id === value)\n if (mother && mother.spouseIds && mother.spouseIds.length > 0) {\n // 找到母亲的配偶(父亲)\n const fatherId = mother.spouseIds[0]\n newData.fatherId = fatherId\n }\n }\n \n return newData\n })\n // Clear errors when user makes changes\n if (errors.length > 0) setErrors([])\n }\n\n const handleSpouseAdd = (spouseId: string) => {\n if (!spouseId || spouseId === \"none\") return\n \n setFormData((prev) => {\n const currentSpouses = prev.spouseIds || []\n // 避免重复添加\n if (currentSpouses.includes(spouseId)) return prev\n \n return {\n ...prev,\n spouseIds: [...currentSpouses, spouseId]\n }\n })\n }\n\n const handleSpouseRemove = (spouseId: string) => {\n setFormData((prev) => ({\n ...prev,\n spouseIds: (prev.spouseIds || []).filter(id => id !== spouseId)\n }))\n }\n\n const handleChildAdd = (childId: string) => {\n if (!childId || childId === \"none\") return\n \n setFormData((prev) => {\n const currentChildren = prev.childrenIds || []\n // 避免重复添加\n if (currentChildren.includes(childId)) return prev\n \n return {\n ...prev,\n childrenIds: [...currentChildren, childId]\n }\n })\n }\n\n const handleChildRemove = (childId: string) => {\n setFormData((prev) => ({\n ...prev,\n childrenIds: (prev.childrenIds || []).filter(id => id !== childId)\n }))\n }\n\n const validate = (): boolean => {\n const newErrors: string[] = []\n\n // 1. Date Validation\n if (formData.birthDate && formData.deathDate) {\n if (new Date(formData.birthDate) > new Date(formData.deathDate)) {\n newErrors.push(\"出生日期不能晚于逝世日期\")\n }\n }\n\n // 2. Parent Age Validation\n const birthYear = formData.birthDate ? new Date(formData.birthDate).getFullYear() : null\n\n if (birthYear) {\n if (formData.fatherId) {\n const father = existingMembers.find((m) => m.id === formData.fatherId)\n if (father?.birthDate) {\n const fatherBirthYear = new Date(father.birthDate).getFullYear()\n if (birthYear - fatherBirthYear < 15) {\n newErrors.push(`与父亲的年龄差过小 (${birthYear - fatherBirthYear}岁),请确认`)\n }\n if (birthYear < fatherBirthYear) {\n newErrors.push(\"出生日期不能早于父亲\")\n }\n }\n }\n\n if (formData.motherId) {\n const mother = existingMembers.find((m) => m.id === formData.motherId)\n if (mother?.birthDate) {\n const motherBirthYear = new Date(mother.birthDate).getFullYear()\n if (birthYear - motherBirthYear < 15) {\n newErrors.push(`与母亲的年龄差过小 (${birthYear - motherBirthYear}岁),请确认`)\n }\n if (birthYear < motherBirthYear) {\n newErrors.push(\"出生日期不能早于母亲\")\n }\n }\n }\n }\n\n // 3. Generation Validation\n if (formData.fatherId) {\n const father = existingMembers.find((m) => m.id === formData.fatherId)\n if (father && formData.generation !== father.generation + 1) {\n newErrors.push(`世系错误:父亲是第 ${father.generation} 世,子女应为第 ${father.generation + 1} 世`)\n }\n }\n\n // 4. Circular Reference Detection (循环引用检测)\n if (formData.fatherId || formData.motherId) {\n const visited = new Set()\n const checkCircular = (memberId: string): boolean => {\n if (memberId === formData.id) return true\n if (visited.has(memberId)) return false\n visited.add(memberId)\n\n const member = existingMembers.find((m) => m.id === memberId)\n if (!member) return false\n\n if (member.fatherId && checkCircular(member.fatherId)) return true\n if (member.motherId && checkCircular(member.motherId)) return true\n\n return false\n }\n\n if (formData.fatherId && checkCircular(formData.fatherId)) {\n newErrors.push(\"检测到循环引用:不能将自己的后代设置为父亲\")\n }\n if (formData.motherId && checkCircular(formData.motherId)) {\n newErrors.push(\"检测到循环引用:不能将自己的后代设置为母亲\")\n }\n }\n\n // 5. Self-Reference Detection (自我引用检测)\n if (formData.fatherId === formData.id) {\n newErrors.push(\"不能将自己设置为自己的父亲\")\n }\n if (formData.motherId === formData.id) {\n newErrors.push(\"不能将自己设置为自己的母亲\")\n }\n if (formData.spouseIds?.includes(formData.id || \"\")) {\n newErrors.push(\"不能将自己设置为自己的配偶\")\n }\n\n setErrors(newErrors)\n return newErrors.length === 0\n }\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n if (validate()) {\n onSubmit(formData as FamilyMember)\n }\n }\n\n const potentialRelatives = existingMembers.filter((m) => m.id !== formData.id)\n\n return (\n
\n {errors.length > 0 && (\n
\n

请检查以下问题:

\n
    \n {errors.map((err, index) => (\n
  • {err}
  • \n ))}\n
\n
\n )}\n\n
\n {/* 基本信息和家庭关系 - 两列布局 */}\n
\n {/* 左列:基本信息 */}\n \n \n \n \n 基本信息 (Identity)\n \n \n \n
\n handleChange(\"avatarImageId\", imageId)}\n />\n
\n\n
\n
\n \n handleChange(\"surname\", e.target.value)}\n />\n
\n
\n \n handleChange(\"givenName\", e.target.value)}\n />\n
\n
\n\n
\n
\n \n \n
\n
\n \n handleChange(\"generation\", Number.parseInt(e.target.value))}\n />\n
\n
\n
\n
\n\n {/* 右列:家庭关系 */}\n \n \n \n \n 家庭关系 (Relationships)\n \n \n \n
\n \n
\n handleChange(\"fatherId\", val === \"none\" ? undefined : val)}\n >\n \n \n \n \n 无 (None)\n {potentialRelatives\n .filter((m) => m.gender === \"MALE\" && m.generation === (formData.generation || 1) - 1)\n .map((m) => (\n \n {m.fullName} ({m.generation}世)\n \n ))}\n \n \n {!formData.fatherId && (\n handleChange(\"spouseFatherName\", e.target.value)}\n className=\"flex-1\"\n />\n )}\n
\n
\n\n
\n \n
\n handleChange(\"motherId\", val === \"none\" ? undefined : val)}\n >\n \n \n \n \n 无 (None)\n {potentialRelatives\n .filter((m) => m.gender === \"FEMALE\" && m.generation === (formData.generation || 1) - 1)\n .map((m) => (\n \n {m.fullName} ({m.generation}世)\n \n ))}\n \n \n {!formData.motherId && (\n handleChange(\"spouseMotherName\", e.target.value)}\n className=\"flex-1\"\n />\n )}\n
\n
\n\n
\n \n \n \n {/* 已选配偶列表 */}\n {formData.spouseIds && formData.spouseIds.length > 0 && (\n
\n {formData.spouseIds.map((spouseId, index) => {\n const spouse = existingMembers.find(m => m.id === spouseId)\n if (!spouse) return null\n \n return (\n
\n \n {index + 1}. {spouse.fullName} (第{spouse.generation}世)\n \n handleSpouseRemove(spouseId)}\n className=\"h-6 w-6 p-0 hover:bg-destructive hover:text-destructive-foreground\"\n >\n ×\n \n
\n )\n })}\n
\n )}\n
\n\n
\n \n \n \n {/* 已选子女列表 */}\n {formData.childrenIds && formData.childrenIds.length > 0 && (\n
\n {formData.childrenIds.map((childId, index) => {\n const child = existingMembers.find(m => m.id === childId)\n if (!child) return null\n \n return (\n
\n \n {index + 1}. {child.fullName} (第{child.generation}世)\n \n handleChildRemove(childId)}\n className=\"h-6 w-6 p-0 hover:bg-destructive hover:text-destructive-foreground\"\n >\n ×\n \n
\n )\n })}\n
\n )}\n
\n
\n
\n
\n\n {/* Traditional Names */}\n \n \n \n \n 传统称谓 (Traditional Names)\n \n \n \n
\n
\n \n handleChange(\"courtesyName\", e.target.value)}\n placeholder=\"e.g. 伯虎\"\n />\n
\n
\n \n handleChange(\"artName\", e.target.value)}\n placeholder=\"e.g. 六如居士\"\n />\n
\n
\n
\n
\n \n handleChange(\"generationName\", e.target.value)}\n />\n
\n
\n \n handleChange(\"posthumousName\", e.target.value)}\n />\n
\n
\n
\n
\n\n {/* Dates & Places */}\n \n \n \n \n 生平与地点 (Life & Places)\n \n \n \n
\n
\n \n handleChange(\"birthDate\", e.target.value)}\n />\n
\n
\n \n handleChange(\"deathDate\", e.target.value)}\n />\n
\n
\n
\n \n handleChange(\"ancestralHome\", e.target.value)}\n placeholder=\"e.g. 福建省泉州市\"\n />\n
\n
\n \n handleChange(\"burialPlace\", e.target.value)}\n />\n
\n
\n
\n\n {/* Contact Information */}\n \n \n \n \n 联系方式 (Contact Information)\n \n 在世成员的联系方式\n \n \n
\n \n handleChange(\"phone\", e.target.value)}\n placeholder=\"e.g. 13800138000\"\n />\n
\n
\n \n handleChange(\"telephone\", e.target.value)}\n placeholder=\"e.g. 0592-1234567\"\n />\n
\n
\n \n handleChange(\"email\", e.target.value)}\n placeholder=\"e.g. example@email.com\"\n />\n
\n
\n \n handleChange(\"address\", e.target.value)}\n placeholder=\"e.g. 福建省厦门市思明区XX路XX号\"\n />\n
\n
\n
\n\n {/* Biography */}\n \n \n \n \n 生平事迹 (Biography)\n \n \n \n handleChange(\"bio\", e.target.value)}\n />\n \n \n\n {/* Tags */}\n \n \n \n \n 标签 (Tags)\n \n 添加标签以便分类和搜索(按回车添加)\n \n \n
\n
\n {\n if (e.key === 'Enter') {\n e.preventDefault()\n const input = e.currentTarget\n const value = input.value.trim()\n if (value && !(formData.tags || []).includes(value)) {\n handleChange('tags', [...(formData.tags || []), value])\n input.value = ''\n }\n }\n }}\n />\n
\n {formData.tags && formData.tags.length > 0 && (\n
\n {formData.tags.map((tag, index) => (\n \n {tag}\n {\n const newTags = formData.tags?.filter((_, i) => i !== index) || []\n handleChange('tags', newTags)\n }}\n className=\"ml-1 hover:text-destructive\"\n >\n ×\n \n \n ))}\n
\n )}\n
\n
\n
\n\n {/* Photo Gallery */}\n \n \n \n \n 照片墙 (Photo Gallery)\n \n 上传多张照片记录珍贵时刻\n \n \n handleChange(\"photoIds\", photoIds)}\n />\n \n \n\n {/* Family Stories */}\n \n \n \n \n 家族故事 (Family Stories)\n \n 记录与此成员相关的家族故事\n \n \n handleChange(\"stories\", stories)}\n />\n \n \n\n
\n\n
\n \n \n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 4588, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/new/page.tsx"],"sourcesContent":["\"use client\"\n\nimport { useRouter, useSearchParams } from \"next/navigation\"\nimport { useFamily } from \"@/context/family-context\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { MemberForm } from \"@/components/members/member-form\"\nimport { Button } from \"@/components/ui/button\"\nimport { ArrowLeft } from \"lucide-react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { useMemo } from \"react\"\n\nexport default function NewMemberPage() {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { addMember, treeData, getMember } = useFamily()\n\n const existingMembers = Object.values(treeData.members)\n \n // 从URL参数获取预填信息\n const initialData = useMemo(() => {\n const fatherId = searchParams.get('fatherId')\n const motherId = searchParams.get('motherId')\n const spouseId = searchParams.get('spouseId')\n const generation = searchParams.get('generation')\n const gender = searchParams.get('gender')\n \n if (!fatherId && !motherId && !spouseId && !generation && !gender) return undefined\n \n const data: Partial = {}\n \n // 处理父母信息\n if (fatherId) {\n data.fatherId = fatherId\n // 如果有父亲,尝试获取母亲(父亲的配偶)\n const father = getMember(fatherId)\n if (father?.spouseIds && father.spouseIds.length > 0) {\n data.motherId = father.spouseIds[0]\n }\n }\n \n if (motherId) {\n data.motherId = motherId\n // 如果有母亲,尝试获取父亲(母亲的配偶)\n const mother = getMember(motherId)\n if (mother?.spouseIds && mother.spouseIds.length > 0) {\n data.fatherId = mother.spouseIds[0]\n }\n }\n \n // 处理配偶信息\n if (spouseId) {\n data.spouseIds = [spouseId]\n }\n \n // 处理世代\n if (generation) {\n data.generation = parseInt(generation)\n }\n \n // 处理性别\n if (gender) {\n data.gender = gender.toUpperCase() as 'MALE' | 'FEMALE'\n }\n \n return data\n }, [searchParams, getMember])\n\n const handleSave = async (newMember: FamilyMember) => {\n try {\n await addMember({\n ...newMember,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n })\n // 跳转到成员列表页\n router.push('/members')\n } catch (error) {\n console.error('添加成员失败:', error)\n alert('添加成员失败: ' + (error as Error).message)\n }\n }\n\n return (\n
\n \n
\n
\n \n

新增家族成员

\n
\n router.back()} />\n
\n
\n )\n}\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AATA;;;;;;;;;AAWe,SAAS;IACtB,MAAM,SAAS,IAAA,qUAAS;IACxB,MAAM,eAAe,IAAA,2UAAe;IACpC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAA,iMAAS;IAEpD,MAAM,kBAAkB,OAAO,MAAM,CAAC,SAAS,OAAO;IAEtD,eAAe;IACf,MAAM,cAAc,IAAA,sYAAO,EAAC;QAC1B,MAAM,WAAW,aAAa,GAAG,CAAC;QAClC,MAAM,WAAW,aAAa,GAAG,CAAC;QAClC,MAAM,WAAW,aAAa,GAAG,CAAC;QAClC,MAAM,aAAa,aAAa,GAAG,CAAC;QACpC,MAAM,SAAS,aAAa,GAAG,CAAC;QAEhC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,OAAO;QAE1E,MAAM,OAA8B,CAAC;QAErC,SAAS;QACT,IAAI,UAAU;YACZ,KAAK,QAAQ,GAAG;YAChB,sBAAsB;YACtB,MAAM,SAAS,UAAU;YACzB,IAAI,QAAQ,aAAa,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG;gBACpD,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC,EAAE;YACrC;QACF;QAEA,IAAI,UAAU;YACZ,KAAK,QAAQ,GAAG;YAChB,sBAAsB;YACtB,MAAM,SAAS,UAAU;YACzB,IAAI,QAAQ,aAAa,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG;gBACpD,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC,EAAE;YACrC;QACF;QAEA,SAAS;QACT,IAAI,UAAU;YACZ,KAAK,SAAS,GAAG;gBAAC;aAAS;QAC7B;QAEA,OAAO;QACP,IAAI,YAAY;YACd,KAAK,UAAU,GAAG,SAAS;QAC7B;QAEA,OAAO;QACP,IAAI,QAAQ;YACV,KAAK,MAAM,GAAG,OAAO,WAAW;QAClC;QAEA,OAAO;IACT,GAAG;QAAC;QAAc;KAAU;IAE5B,MAAM,aAAa,OAAO;QACxB,IAAI;YACF,MAAM,UAAU;gBACd,GAAG,SAAS;gBACZ,WAAW,IAAI,OAAO,WAAW;gBACjC,WAAW,IAAI,OAAO,WAAW;YACnC;YACA,WAAW;YACX,OAAO,IAAI,CAAC;QACd,EAAE,OAAO,OAAO;YACd,QAAQ,KAAK,CAAC,WAAW;YACzB,MAAM,aAAa,AAAC,MAAgB,OAAO;QAC7C;IACF;IAEA,qBACE,oaAAC;QAAI,WAAU;;0BACb,oaAAC,kMAAU;;;;;0BACX,oaAAC;gBAAI,WAAU;;kCACb,oaAAC;wBAAI,WAAU;;0CACb,oaAAC,4LAAM;gCAAC,SAAQ;gCAAQ,SAAS,IAAM,OAAO,IAAI;;kDAChD,oaAAC,wWAAS;wCAAC,WAAU;;;;;;oCAAiB;;;;;;;0CAExC,oaAAC;gCAAG,WAAU;0CAAgC;;;;;;;;;;;;kCAEhD,oaAAC,6MAAU;wBAAC,aAAa;wBAAa,iBAAiB;wBAAiB,UAAU;wBAAY,UAAU,IAAM,OAAO,IAAI;;;;;;;;;;;;;;;;;;AAIjI"}}] + {"offset": {"line": 4588, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/new/page.tsx"],"sourcesContent":["\"use client\"\n\nimport { useRouter, useSearchParams } from \"next/navigation\"\nimport { useFamily } from \"@/context/family-context\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { MemberForm } from \"@/components/members/member-form\"\nimport { Button } from \"@/components/ui/button\"\nimport { ArrowLeft } from \"lucide-react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { useMemo } from \"react\"\n\nexport default function NewMemberPage() {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { addMember, treeData, getMember } = useFamily()\n\n const existingMembers = Object.values(treeData.members)\n \n // 从URL参数获取预填信息\n const initialData = useMemo(() => {\n const fatherId = searchParams.get('fatherId')\n const motherId = searchParams.get('motherId')\n const spouseId = searchParams.get('spouseId')\n const childId = searchParams.get('childId')\n const generation = searchParams.get('generation')\n const gender = searchParams.get('gender')\n \n if (!fatherId && !motherId && !spouseId && !childId && !generation && !gender) return undefined\n \n const data: Partial = {}\n \n // 处理父母信息\n if (fatherId) {\n data.fatherId = fatherId\n // 如果有父亲,尝试获取母亲(父亲的配偶)\n const father = getMember(fatherId)\n if (father?.spouseIds && father.spouseIds.length > 0) {\n data.motherId = father.spouseIds[0]\n }\n }\n \n if (motherId) {\n data.motherId = motherId\n // 如果有母亲,尝试获取父亲(母亲的配偶)\n const mother = getMember(motherId)\n if (mother?.spouseIds && mother.spouseIds.length > 0) {\n data.fatherId = mother.spouseIds[0]\n }\n }\n \n // 处理配偶信息\n if (spouseId) {\n data.spouseIds = [spouseId]\n }\n \n // 处理子女信息(添加父母时使用)\n if (childId) {\n data.childrenIds = [childId]\n }\n \n // 处理世代\n if (generation) {\n data.generation = parseInt(generation)\n }\n \n // 处理性别\n if (gender) {\n data.gender = gender.toUpperCase() as 'MALE' | 'FEMALE'\n }\n \n return data\n }, [searchParams, getMember])\n\n const handleSave = async (newMember: FamilyMember) => {\n try {\n await addMember({\n ...newMember,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n })\n // 跳转到成员列表页\n router.push('/members')\n } catch (error) {\n console.error('添加成员失败:', error)\n alert('添加成员失败: ' + (error as Error).message)\n }\n }\n\n return (\n
\n \n
\n
\n \n

新增家族成员

\n
\n router.back()} />\n
\n
\n )\n}\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AATA;;;;;;;;;AAWe,SAAS;IACtB,MAAM,SAAS,IAAA,qUAAS;IACxB,MAAM,eAAe,IAAA,2UAAe;IACpC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAA,iMAAS;IAEpD,MAAM,kBAAkB,OAAO,MAAM,CAAC,SAAS,OAAO;IAEtD,eAAe;IACf,MAAM,cAAc,IAAA,sYAAO,EAAC;QAC1B,MAAM,WAAW,aAAa,GAAG,CAAC;QAClC,MAAM,WAAW,aAAa,GAAG,CAAC;QAClC,MAAM,WAAW,aAAa,GAAG,CAAC;QAClC,MAAM,UAAU,aAAa,GAAG,CAAC;QACjC,MAAM,aAAa,aAAa,GAAG,CAAC;QACpC,MAAM,SAAS,aAAa,GAAG,CAAC;QAEhC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,OAAO;QAEtF,MAAM,OAA8B,CAAC;QAErC,SAAS;QACT,IAAI,UAAU;YACZ,KAAK,QAAQ,GAAG;YAChB,sBAAsB;YACtB,MAAM,SAAS,UAAU;YACzB,IAAI,QAAQ,aAAa,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG;gBACpD,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC,EAAE;YACrC;QACF;QAEA,IAAI,UAAU;YACZ,KAAK,QAAQ,GAAG;YAChB,sBAAsB;YACtB,MAAM,SAAS,UAAU;YACzB,IAAI,QAAQ,aAAa,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG;gBACpD,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC,EAAE;YACrC;QACF;QAEA,SAAS;QACT,IAAI,UAAU;YACZ,KAAK,SAAS,GAAG;gBAAC;aAAS;QAC7B;QAEA,kBAAkB;QAClB,IAAI,SAAS;YACX,KAAK,WAAW,GAAG;gBAAC;aAAQ;QAC9B;QAEA,OAAO;QACP,IAAI,YAAY;YACd,KAAK,UAAU,GAAG,SAAS;QAC7B;QAEA,OAAO;QACP,IAAI,QAAQ;YACV,KAAK,MAAM,GAAG,OAAO,WAAW;QAClC;QAEA,OAAO;IACT,GAAG;QAAC;QAAc;KAAU;IAE5B,MAAM,aAAa,OAAO;QACxB,IAAI;YACF,MAAM,UAAU;gBACd,GAAG,SAAS;gBACZ,WAAW,IAAI,OAAO,WAAW;gBACjC,WAAW,IAAI,OAAO,WAAW;YACnC;YACA,WAAW;YACX,OAAO,IAAI,CAAC;QACd,EAAE,OAAO,OAAO;YACd,QAAQ,KAAK,CAAC,WAAW;YACzB,MAAM,aAAa,AAAC,MAAgB,OAAO;QAC7C;IACF;IAEA,qBACE,oaAAC;QAAI,WAAU;;0BACb,oaAAC,kMAAU;;;;;0BACX,oaAAC;gBAAI,WAAU;;kCACb,oaAAC;wBAAI,WAAU;;0CACb,oaAAC,4LAAM;gCAAC,SAAQ;gCAAQ,SAAS,IAAM,OAAO,IAAI;;kDAChD,oaAAC,wWAAS;wCAAC,WAAU;;;;;;oCAAiB;;;;;;;0CAExC,oaAAC;gCAAG,WAAU;0CAAgC;;;;;;;;;;;;kCAEhD,oaAAC,6MAAU;wBAAC,aAAa;wBAAa,iBAAiB;wBAAiB,UAAU;wBAAY,UAAU,IAAM,OAAO,IAAI;;;;;;;;;;;;;;;;;;AAIjI"}}] } \ No newline at end of file diff --git a/.next/dev/server/next-font-manifest.js b/.next/dev/server/next-font-manifest.js index 44d87c96..a10e5685 100644 --- a/.next/dev/server/next-font-manifest.js +++ b/.next/dev/server/next-font-manifest.js @@ -1 +1 @@ -self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/members/new/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/members/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/tree/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}" \ No newline at end of file +self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/Documents/go-new/chinese-family-tree/app/auth/signin/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/members/new/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/members/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/Documents/go-new/chinese-family-tree/app/tree/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}" \ No newline at end of file diff --git a/.next/dev/server/next-font-manifest.json b/.next/dev/server/next-font-manifest.json index 64ea3ed0..713f4e27 100644 --- a/.next/dev/server/next-font-manifest.json +++ b/.next/dev/server/next-font-manifest.json @@ -1,5 +1,9 @@ { "app": { + "[project]/Documents/go-new/chinese-family-tree/app/auth/signin/page": [ + "static/media/caa3a2e1cccd8315-s.p.853070df.woff2", + "static/media/797e433ab948586e-s.p.dbea232f.woff2" + ], "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page": [ "static/media/caa3a2e1cccd8315-s.p.853070df.woff2", "static/media/797e433ab948586e-s.p.dbea232f.woff2" diff --git a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_5461dd2a._.js b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_5461dd2a._.js index 40b4c875..76a2ba34 100644 --- a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_5461dd2a._.js +++ b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_5461dd2a._.js @@ -4819,9 +4819,10 @@ function NewMemberPage() { const fatherId = searchParams.get('fatherId'); const motherId = searchParams.get('motherId'); const spouseId = searchParams.get('spouseId'); + const childId = searchParams.get('childId'); const generation = searchParams.get('generation'); const gender = searchParams.get('gender'); - if (!fatherId && !motherId && !spouseId && !generation && !gender) return undefined; + if (!fatherId && !motherId && !spouseId && !childId && !generation && !gender) return undefined; const data = {}; // 处理父母信息 if (fatherId) { @@ -4846,6 +4847,12 @@ function NewMemberPage() { spouseId ]; } + // 处理子女信息(添加父母时使用) + if (childId) { + data.childrenIds = [ + childId + ]; + } // 处理世代 if (generation) { data.generation = parseInt(generation); @@ -4879,7 +4886,7 @@ function NewMemberPage() { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$site$2d$header$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 85, + lineNumber: 91, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -4896,14 +4903,14 @@ function NewMemberPage() { className: "mr-2 h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 89, + lineNumber: 95, columnNumber: 13 }, this), " 返回" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 88, + lineNumber: 94, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h1", { @@ -4911,13 +4918,13 @@ function NewMemberPage() { children: "新增家族成员" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 91, + lineNumber: 97, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 87, + lineNumber: 93, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$members$2f$member$2d$form$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["MemberForm"], { @@ -4927,19 +4934,19 @@ function NewMemberPage() { onCancel: ()=>router.back() }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 93, + lineNumber: 99, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 86, + lineNumber: 92, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx", - lineNumber: 84, + lineNumber: 90, columnNumber: 5 }, this); } diff --git a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_5461dd2a._.js.map b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_5461dd2a._.js.map index d163a88e..30bb2e8b 100644 --- a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_5461dd2a._.js.map +++ b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_5461dd2a._.js.map @@ -13,5 +13,5 @@ {"offset": {"line": 2218, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/photo-gallery.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { db } from \"@/lib/db\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { X, Upload, Image as ImageIcon, Plus, ZoomIn } from \"lucide-react\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport imageCompression from \"browser-image-compression\"\n\ninterface PhotoGalleryProps {\n photoIds?: string[]\n onChange: (photoIds: string[]) => void\n readonly?: boolean\n}\n\nexport function PhotoGallery({ photoIds = [], onChange, readonly = false }: PhotoGalleryProps) {\n const { showAlert, showConfirm } = useDialog()\n const [photos, setPhotos] = useState<{ id: string; url: string }[]>([])\n const [selectedPhoto, setSelectedPhoto] = useState(null)\n const [isUploading, setIsUploading] = useState(false)\n\n // 加载照片\n useEffect(() => {\n const loadPhotos = async () => {\n const loadedPhotos = await Promise.all(\n photoIds.map(async (id) => {\n try {\n const image = await db.images.get(id)\n if (image) {\n const url = URL.createObjectURL(image.blob)\n return { id, url }\n }\n } catch (error) {\n console.error('加载照片失败:', error)\n }\n return null\n })\n )\n setPhotos(loadedPhotos.filter(Boolean) as { id: string; url: string }[])\n }\n\n if (photoIds.length > 0) {\n loadPhotos()\n }\n\n // 清理 URL\n return () => {\n photos.forEach(photo => URL.revokeObjectURL(photo.url))\n }\n }, [photoIds])\n\n const handleUpload = async (e: React.ChangeEvent) => {\n const files = e.target.files\n if (!files || files.length === 0) return\n\n setIsUploading(true)\n try {\n const newPhotoIds: string[] = []\n\n for (const file of Array.from(files)) {\n if (!file.type.startsWith('image/')) continue\n\n // 压缩图片\n const options = {\n maxSizeMB: 2,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n }\n \n const compressedFile = await imageCompression(file, options)\n \n // 保存到数据库\n const imageId = uuidv4()\n await db.images.add({\n id: imageId,\n blob: compressedFile,\n mimeType: compressedFile.type,\n createdAt: new Date().toISOString(),\n })\n\n newPhotoIds.push(imageId)\n }\n\n // 更新照片列表\n onChange([...photoIds, ...newPhotoIds])\n } catch (error) {\n console.error('上传照片失败:', error)\n await showAlert('上传照片失败', '错误')\n } finally {\n setIsUploading(false)\n e.target.value = ''\n }\n }\n\n const handleDelete = async (photoId: string) => {\n const confirmed = await showConfirm('确定要删除这张照片吗?', '删除照片')\n if (confirmed) {\n onChange(photoIds.filter(id => id !== photoId))\n }\n }\n\n return (\n
\n
\n

照片墙 ({photos.length})

\n {!readonly && (\n \n )}\n
\n\n {photos.length > 0 ? (\n
\n {photos.map((photo) => (\n
\n setSelectedPhoto(photo.url)}\n />\n {!readonly && (\n handleDelete(photo.id)}\n >\n \n \n )}\n setSelectedPhoto(photo.url)}\n >\n \n \n
\n ))}\n
\n ) : (\n
\n 暂无照片\n
\n )}\n\n {/* 照片预览对话框 */}\n setSelectedPhoto(null)}>\n \n \n 照片预览\n \n {selectedPhoto && (\n \n )}\n \n \n
\n )\n}\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 2535, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/story-manager.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Label } from \"@/components/ui/label\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from \"@/components/ui/dialog\"\nimport { Plus, Edit, Trash, BookOpen, Calendar } from \"lucide-react\"\nimport type { FamilyStory } from \"@/types/family\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\n\ninterface StoryManagerProps {\n stories?: FamilyStory[]\n onChange: (stories: FamilyStory[]) => void\n readonly?: boolean\n}\n\nexport function StoryManager({ stories = [], onChange, readonly = false }: StoryManagerProps) {\n const { showAlert, showConfirm } = useDialog()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const [editingStory, setEditingStory] = useState(null)\n const [formData, setFormData] = useState>({\n title: \"\",\n content: \"\",\n date: \"\",\n })\n\n const handleAdd = () => {\n setEditingStory(null)\n setFormData({ title: \"\", content: \"\", date: \"\" })\n setIsDialogOpen(true)\n }\n\n const handleEdit = (story: FamilyStory) => {\n setEditingStory(story)\n setFormData(story)\n setIsDialogOpen(true)\n }\n\n const handleDelete = async (storyId: string) => {\n const confirmed = await showConfirm(\"确定要删除这个故事吗?\", \"删除故事\")\n if (confirmed) {\n onChange(stories.filter(s => s.id !== storyId))\n }\n }\n\n const handleSave = async () => {\n if (!formData.title || !formData.content) {\n await showAlert(\"请填写标题和内容\", \"提示\")\n return\n }\n\n const now = new Date().toISOString()\n \n if (editingStory) {\n // 更新现有故事\n onChange(\n stories.map(s =>\n s.id === editingStory.id\n ? { ...s, ...formData, updatedAt: now }\n : s\n )\n )\n } else {\n // 添加新故事\n const newStory: FamilyStory = {\n id: uuidv4(),\n title: formData.title!,\n content: formData.content!,\n date: formData.date,\n imageIds: formData.imageIds || [],\n createdAt: now,\n updatedAt: now,\n }\n onChange([...stories, newStory])\n }\n\n setIsDialogOpen(false)\n setFormData({ title: \"\", content: \"\", date: \"\" })\n }\n\n return (\n
\n
\n

\n \n 家族故事 ({stories.length})\n

\n {!readonly && (\n \n \n 添加故事\n \n )}\n
\n\n {stories.length > 0 ? (\n
\n {stories\n .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())\n .map((story) => (\n \n \n
\n
\n {story.title}\n {story.date && (\n
\n \n {story.date}\n
\n )}\n
\n {!readonly && (\n
\n handleEdit(story)}\n >\n \n \n handleDelete(story.id)}\n >\n \n \n
\n )}\n
\n
\n \n

\n {story.content}\n

\n
\n 创建于 {new Date(story.createdAt).toLocaleDateString('zh-CN')}\n
\n
\n
\n ))}\n
\n ) : (\n
\n 暂无家族故事\n
\n )}\n\n {/* 添加/编辑故事对话框 */}\n \n \n \n {editingStory ? \"编辑故事\" : \"添加故事\"}\n \n
\n
\n \n setFormData({ ...formData, title: e.target.value })}\n />\n
\n
\n \n setFormData({ ...formData, date: e.target.value })}\n />\n
\n
\n \n setFormData({ ...formData, content: e.target.value })}\n />\n
\n
\n \n \n \n \n
\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 3006, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/member-form.tsx"],"sourcesContent":["\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { CalendarIcon, User, Scroll, Users, Images, BookOpen } from \"lucide-react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { ImageUpload } from \"@/components/ui/image-upload\"\nimport { PhotoGallery } from \"./photo-gallery\"\nimport { StoryManager } from \"./story-manager\"\n\ninterface MemberFormProps {\n initialData?: Partial\n existingMembers?: FamilyMember[]\n onSubmit: (data: FamilyMember) => void\n onCancel: () => void\n}\n\nexport function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }: MemberFormProps) {\n // 计算最大世系\n const maxGeneration = existingMembers.length > 0 \n ? Math.max(...existingMembers.map(m => m.generation || 1))\n : 1\n \n // 获取始祖的姓氏(第1世成员)\n const ancestorSurname = existingMembers.find(m => m.generation === 1)?.surname || \"\"\n \n // Initialize state with default values or initialData\n const [formData, setFormData] = useState>(() => {\n const defaults = {\n id: crypto.randomUUID(),\n surname: ancestorSurname,\n givenName: \"\",\n fullName: \"\",\n gender: \"MALE\" as \"MALE\" | \"FEMALE\",\n generation: maxGeneration,\n spouseIds: [],\n childrenIds: [],\n tags: [],\n }\n \n if (!initialData) return defaults\n \n return {\n ...defaults,\n ...initialData,\n gender: (initialData.gender || \"MALE\").toUpperCase() as \"MALE\" | \"FEMALE\",\n spouseIds: initialData.spouseIds || [],\n childrenIds: initialData.childrenIds || [],\n tags: initialData.tags || [],\n fatherId: initialData.fatherId || undefined,\n motherId: initialData.motherId || undefined,\n }\n })\n\n const [errors, setErrors] = useState([])\n\n const handleChange = (field: keyof FamilyMember, value: any) => {\n setFormData((prev) => {\n const newData = { ...prev, [field]: value }\n \n // Auto-update full name if surname or given name changes\n if (field === \"surname\" || field === \"givenName\") {\n newData.fullName = (newData.surname || \"\") + (newData.givenName || \"\")\n }\n \n // 选择父亲时自动带出母亲\n if (field === \"fatherId\" && value) {\n const father = existingMembers.find(m => m.id === value)\n if (father && father.spouseIds && father.spouseIds.length > 0) {\n // 找到父亲的配偶(母亲)\n const motherId = father.spouseIds[0]\n newData.motherId = motherId\n }\n }\n \n // 选择母亲时自动带出父亲\n if (field === \"motherId\" && value) {\n const mother = existingMembers.find(m => m.id === value)\n if (mother && mother.spouseIds && mother.spouseIds.length > 0) {\n // 找到母亲的配偶(父亲)\n const fatherId = mother.spouseIds[0]\n newData.fatherId = fatherId\n }\n }\n \n return newData\n })\n // Clear errors when user makes changes\n if (errors.length > 0) setErrors([])\n }\n\n const handleSpouseAdd = (spouseId: string) => {\n if (!spouseId || spouseId === \"none\") return\n \n setFormData((prev) => {\n const currentSpouses = prev.spouseIds || []\n // 避免重复添加\n if (currentSpouses.includes(spouseId)) return prev\n \n return {\n ...prev,\n spouseIds: [...currentSpouses, spouseId]\n }\n })\n }\n\n const handleSpouseRemove = (spouseId: string) => {\n setFormData((prev) => ({\n ...prev,\n spouseIds: (prev.spouseIds || []).filter(id => id !== spouseId)\n }))\n }\n\n const handleChildAdd = (childId: string) => {\n if (!childId || childId === \"none\") return\n \n setFormData((prev) => {\n const currentChildren = prev.childrenIds || []\n // 避免重复添加\n if (currentChildren.includes(childId)) return prev\n \n return {\n ...prev,\n childrenIds: [...currentChildren, childId]\n }\n })\n }\n\n const handleChildRemove = (childId: string) => {\n setFormData((prev) => ({\n ...prev,\n childrenIds: (prev.childrenIds || []).filter(id => id !== childId)\n }))\n }\n\n const validate = (): boolean => {\n const newErrors: string[] = []\n\n // 1. Date Validation\n if (formData.birthDate && formData.deathDate) {\n if (new Date(formData.birthDate) > new Date(formData.deathDate)) {\n newErrors.push(\"出生日期不能晚于逝世日期\")\n }\n }\n\n // 2. Parent Age Validation\n const birthYear = formData.birthDate ? new Date(formData.birthDate).getFullYear() : null\n\n if (birthYear) {\n if (formData.fatherId) {\n const father = existingMembers.find((m) => m.id === formData.fatherId)\n if (father?.birthDate) {\n const fatherBirthYear = new Date(father.birthDate).getFullYear()\n if (birthYear - fatherBirthYear < 15) {\n newErrors.push(`与父亲的年龄差过小 (${birthYear - fatherBirthYear}岁),请确认`)\n }\n if (birthYear < fatherBirthYear) {\n newErrors.push(\"出生日期不能早于父亲\")\n }\n }\n }\n\n if (formData.motherId) {\n const mother = existingMembers.find((m) => m.id === formData.motherId)\n if (mother?.birthDate) {\n const motherBirthYear = new Date(mother.birthDate).getFullYear()\n if (birthYear - motherBirthYear < 15) {\n newErrors.push(`与母亲的年龄差过小 (${birthYear - motherBirthYear}岁),请确认`)\n }\n if (birthYear < motherBirthYear) {\n newErrors.push(\"出生日期不能早于母亲\")\n }\n }\n }\n }\n\n // 3. Generation Validation\n if (formData.fatherId) {\n const father = existingMembers.find((m) => m.id === formData.fatherId)\n if (father && formData.generation !== father.generation + 1) {\n newErrors.push(`世系错误:父亲是第 ${father.generation} 世,子女应为第 ${father.generation + 1} 世`)\n }\n }\n\n // 4. Circular Reference Detection (循环引用检测)\n if (formData.fatherId || formData.motherId) {\n const visited = new Set()\n const checkCircular = (memberId: string): boolean => {\n if (memberId === formData.id) return true\n if (visited.has(memberId)) return false\n visited.add(memberId)\n\n const member = existingMembers.find((m) => m.id === memberId)\n if (!member) return false\n\n if (member.fatherId && checkCircular(member.fatherId)) return true\n if (member.motherId && checkCircular(member.motherId)) return true\n\n return false\n }\n\n if (formData.fatherId && checkCircular(formData.fatherId)) {\n newErrors.push(\"检测到循环引用:不能将自己的后代设置为父亲\")\n }\n if (formData.motherId && checkCircular(formData.motherId)) {\n newErrors.push(\"检测到循环引用:不能将自己的后代设置为母亲\")\n }\n }\n\n // 5. Self-Reference Detection (自我引用检测)\n if (formData.fatherId === formData.id) {\n newErrors.push(\"不能将自己设置为自己的父亲\")\n }\n if (formData.motherId === formData.id) {\n newErrors.push(\"不能将自己设置为自己的母亲\")\n }\n if (formData.spouseIds?.includes(formData.id || \"\")) {\n newErrors.push(\"不能将自己设置为自己的配偶\")\n }\n\n setErrors(newErrors)\n return newErrors.length === 0\n }\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n if (validate()) {\n onSubmit(formData as FamilyMember)\n }\n }\n\n const potentialRelatives = existingMembers.filter((m) => m.id !== formData.id)\n\n return (\n
\n {errors.length > 0 && (\n
\n

请检查以下问题:

\n
    \n {errors.map((err, index) => (\n
  • {err}
  • \n ))}\n
\n
\n )}\n\n
\n {/* 基本信息和家庭关系 - 两列布局 */}\n
\n {/* 左列:基本信息 */}\n \n \n \n \n 基本信息 (Identity)\n \n \n \n
\n handleChange(\"avatarImageId\", imageId)}\n />\n
\n\n
\n
\n \n handleChange(\"surname\", e.target.value)}\n />\n
\n
\n \n handleChange(\"givenName\", e.target.value)}\n />\n
\n
\n\n
\n
\n \n \n
\n
\n \n handleChange(\"generation\", Number.parseInt(e.target.value))}\n />\n
\n
\n
\n
\n\n {/* 右列:家庭关系 */}\n \n \n \n \n 家庭关系 (Relationships)\n \n \n \n
\n \n
\n handleChange(\"fatherId\", val === \"none\" ? undefined : val)}\n >\n \n \n \n \n 无 (None)\n {potentialRelatives\n .filter((m) => m.gender === \"MALE\" && m.generation === (formData.generation || 1) - 1)\n .map((m) => (\n \n {m.fullName} ({m.generation}世)\n \n ))}\n \n \n {!formData.fatherId && (\n handleChange(\"spouseFatherName\", e.target.value)}\n className=\"flex-1\"\n />\n )}\n
\n
\n\n
\n \n
\n handleChange(\"motherId\", val === \"none\" ? undefined : val)}\n >\n \n \n \n \n 无 (None)\n {potentialRelatives\n .filter((m) => m.gender === \"FEMALE\" && m.generation === (formData.generation || 1) - 1)\n .map((m) => (\n \n {m.fullName} ({m.generation}世)\n \n ))}\n \n \n {!formData.motherId && (\n handleChange(\"spouseMotherName\", e.target.value)}\n className=\"flex-1\"\n />\n )}\n
\n
\n\n
\n \n \n \n {/* 已选配偶列表 */}\n {formData.spouseIds && formData.spouseIds.length > 0 && (\n
\n {formData.spouseIds.map((spouseId, index) => {\n const spouse = existingMembers.find(m => m.id === spouseId)\n if (!spouse) return null\n \n return (\n
\n \n {index + 1}. {spouse.fullName} (第{spouse.generation}世)\n \n handleSpouseRemove(spouseId)}\n className=\"h-6 w-6 p-0 hover:bg-destructive hover:text-destructive-foreground\"\n >\n ×\n \n
\n )\n })}\n
\n )}\n
\n\n
\n \n \n \n {/* 已选子女列表 */}\n {formData.childrenIds && formData.childrenIds.length > 0 && (\n
\n {formData.childrenIds.map((childId, index) => {\n const child = existingMembers.find(m => m.id === childId)\n if (!child) return null\n \n return (\n
\n \n {index + 1}. {child.fullName} (第{child.generation}世)\n \n handleChildRemove(childId)}\n className=\"h-6 w-6 p-0 hover:bg-destructive hover:text-destructive-foreground\"\n >\n ×\n \n
\n )\n })}\n
\n )}\n
\n
\n
\n
\n\n {/* Traditional Names */}\n \n \n \n \n 传统称谓 (Traditional Names)\n \n \n \n
\n
\n \n handleChange(\"courtesyName\", e.target.value)}\n placeholder=\"e.g. 伯虎\"\n />\n
\n
\n \n handleChange(\"artName\", e.target.value)}\n placeholder=\"e.g. 六如居士\"\n />\n
\n
\n
\n
\n \n handleChange(\"generationName\", e.target.value)}\n />\n
\n
\n \n handleChange(\"posthumousName\", e.target.value)}\n />\n
\n
\n
\n
\n\n {/* Dates & Places */}\n \n \n \n \n 生平与地点 (Life & Places)\n \n \n \n
\n
\n \n handleChange(\"birthDate\", e.target.value)}\n />\n
\n
\n \n handleChange(\"deathDate\", e.target.value)}\n />\n
\n
\n
\n \n handleChange(\"ancestralHome\", e.target.value)}\n placeholder=\"e.g. 福建省泉州市\"\n />\n
\n
\n \n handleChange(\"burialPlace\", e.target.value)}\n />\n
\n
\n
\n\n {/* Contact Information */}\n \n \n \n \n 联系方式 (Contact Information)\n \n 在世成员的联系方式\n \n \n
\n \n handleChange(\"phone\", e.target.value)}\n placeholder=\"e.g. 13800138000\"\n />\n
\n
\n \n handleChange(\"telephone\", e.target.value)}\n placeholder=\"e.g. 0592-1234567\"\n />\n
\n
\n \n handleChange(\"email\", e.target.value)}\n placeholder=\"e.g. example@email.com\"\n />\n
\n
\n \n handleChange(\"address\", e.target.value)}\n placeholder=\"e.g. 福建省厦门市思明区XX路XX号\"\n />\n
\n
\n
\n\n {/* Biography */}\n \n \n \n \n 生平事迹 (Biography)\n \n \n \n handleChange(\"bio\", e.target.value)}\n />\n \n \n\n {/* Tags */}\n \n \n \n \n 标签 (Tags)\n \n 添加标签以便分类和搜索(按回车添加)\n \n \n
\n
\n {\n if (e.key === 'Enter') {\n e.preventDefault()\n const input = e.currentTarget\n const value = input.value.trim()\n if (value && !(formData.tags || []).includes(value)) {\n handleChange('tags', [...(formData.tags || []), value])\n input.value = ''\n }\n }\n }}\n />\n
\n {formData.tags && formData.tags.length > 0 && (\n
\n {formData.tags.map((tag, index) => (\n \n {tag}\n {\n const newTags = formData.tags?.filter((_, i) => i !== index) || []\n handleChange('tags', newTags)\n }}\n className=\"ml-1 hover:text-destructive\"\n >\n ×\n \n \n ))}\n
\n )}\n
\n
\n
\n\n {/* Photo Gallery */}\n \n \n \n \n 照片墙 (Photo Gallery)\n \n 上传多张照片记录珍贵时刻\n \n \n handleChange(\"photoIds\", photoIds)}\n />\n \n \n\n {/* Family Stories */}\n \n \n \n \n 家族故事 (Family Stories)\n \n 记录与此成员相关的家族故事\n \n \n handleChange(\"stories\", stories)}\n />\n \n \n\n
\n\n
\n \n \n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 4787, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/new/page.tsx"],"sourcesContent":["\"use client\"\n\nimport { useRouter, useSearchParams } from \"next/navigation\"\nimport { useFamily } from \"@/context/family-context\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { MemberForm } from \"@/components/members/member-form\"\nimport { Button } from \"@/components/ui/button\"\nimport { ArrowLeft } from \"lucide-react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { useMemo } from \"react\"\n\nexport default function NewMemberPage() {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { addMember, treeData, getMember } = useFamily()\n\n const existingMembers = Object.values(treeData.members)\n \n // 从URL参数获取预填信息\n const initialData = useMemo(() => {\n const fatherId = searchParams.get('fatherId')\n const motherId = searchParams.get('motherId')\n const spouseId = searchParams.get('spouseId')\n const generation = searchParams.get('generation')\n const gender = searchParams.get('gender')\n \n if (!fatherId && !motherId && !spouseId && !generation && !gender) return undefined\n \n const data: Partial = {}\n \n // 处理父母信息\n if (fatherId) {\n data.fatherId = fatherId\n // 如果有父亲,尝试获取母亲(父亲的配偶)\n const father = getMember(fatherId)\n if (father?.spouseIds && father.spouseIds.length > 0) {\n data.motherId = father.spouseIds[0]\n }\n }\n \n if (motherId) {\n data.motherId = motherId\n // 如果有母亲,尝试获取父亲(母亲的配偶)\n const mother = getMember(motherId)\n if (mother?.spouseIds && mother.spouseIds.length > 0) {\n data.fatherId = mother.spouseIds[0]\n }\n }\n \n // 处理配偶信息\n if (spouseId) {\n data.spouseIds = [spouseId]\n }\n \n // 处理世代\n if (generation) {\n data.generation = parseInt(generation)\n }\n \n // 处理性别\n if (gender) {\n data.gender = gender.toUpperCase() as 'MALE' | 'FEMALE'\n }\n \n return data\n }, [searchParams, getMember])\n\n const handleSave = async (newMember: FamilyMember) => {\n try {\n await addMember({\n ...newMember,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n })\n // 跳转到成员列表页\n router.push('/members')\n } catch (error) {\n console.error('添加成员失败:', error)\n alert('添加成员失败: ' + (error as Error).message)\n }\n }\n\n return (\n
\n \n
\n
\n \n

新增家族成员

\n
\n router.back()} />\n
\n
\n )\n}\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AATA;;;;;;;;AAWe,SAAS;;IACtB,MAAM,SAAS,IAAA,wUAAS;IACxB,MAAM,eAAe,IAAA,8UAAe;IACpC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAA,oMAAS;IAEpD,MAAM,kBAAkB,OAAO,MAAM,CAAC,SAAS,OAAO;IAEtD,eAAe;IACf,MAAM,cAAc,IAAA,8VAAO;8CAAC;YAC1B,MAAM,WAAW,aAAa,GAAG,CAAC;YAClC,MAAM,WAAW,aAAa,GAAG,CAAC;YAClC,MAAM,WAAW,aAAa,GAAG,CAAC;YAClC,MAAM,aAAa,aAAa,GAAG,CAAC;YACpC,MAAM,SAAS,aAAa,GAAG,CAAC;YAEhC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,OAAO;YAE1E,MAAM,OAA8B,CAAC;YAErC,SAAS;YACT,IAAI,UAAU;gBACZ,KAAK,QAAQ,GAAG;gBAChB,sBAAsB;gBACtB,MAAM,SAAS,UAAU;gBACzB,IAAI,QAAQ,aAAa,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG;oBACpD,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC,EAAE;gBACrC;YACF;YAEA,IAAI,UAAU;gBACZ,KAAK,QAAQ,GAAG;gBAChB,sBAAsB;gBACtB,MAAM,SAAS,UAAU;gBACzB,IAAI,QAAQ,aAAa,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG;oBACpD,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC,EAAE;gBACrC;YACF;YAEA,SAAS;YACT,IAAI,UAAU;gBACZ,KAAK,SAAS,GAAG;oBAAC;iBAAS;YAC7B;YAEA,OAAO;YACP,IAAI,YAAY;gBACd,KAAK,UAAU,GAAG,SAAS;YAC7B;YAEA,OAAO;YACP,IAAI,QAAQ;gBACV,KAAK,MAAM,GAAG,OAAO,WAAW;YAClC;YAEA,OAAO;QACT;6CAAG;QAAC;QAAc;KAAU;IAE5B,MAAM,aAAa,OAAO;QACxB,IAAI;YACF,MAAM,UAAU;gBACd,GAAG,SAAS;gBACZ,WAAW,IAAI,OAAO,WAAW;gBACjC,WAAW,IAAI,OAAO,WAAW;YACnC;YACA,WAAW;YACX,OAAO,IAAI,CAAC;QACd,EAAE,OAAO,OAAO;YACd,QAAQ,KAAK,CAAC,WAAW;YACzB,MAAM,aAAa,AAAC,MAAgB,OAAO;QAC7C;IACF;IAEA,qBACE,mXAAC;QAAI,WAAU;;0BACb,mXAAC,qMAAU;;;;;0BACX,mXAAC;gBAAI,WAAU;;kCACb,mXAAC;wBAAI,WAAU;;0CACb,mXAAC,+LAAM;gCAAC,SAAQ;gCAAQ,SAAS,IAAM,OAAO,IAAI;;kDAChD,mXAAC,2WAAS;wCAAC,WAAU;;;;;;oCAAiB;;;;;;;0CAExC,mXAAC;gCAAG,WAAU;0CAAgC;;;;;;;;;;;;kCAEhD,mXAAC,gNAAU;wBAAC,aAAa;wBAAa,iBAAiB;wBAAiB,UAAU;wBAAY,UAAU,IAAM,OAAO,IAAI;;;;;;;;;;;;;;;;;;AAIjI;GArFwB;;QACP,wUAAS;QACH,8UAAe;QACO,oMAAS;;;KAH9B"}}] + {"offset": {"line": 4787, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/new/page.tsx"],"sourcesContent":["\"use client\"\n\nimport { useRouter, useSearchParams } from \"next/navigation\"\nimport { useFamily } from \"@/context/family-context\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { MemberForm } from \"@/components/members/member-form\"\nimport { Button } from \"@/components/ui/button\"\nimport { ArrowLeft } from \"lucide-react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { useMemo } from \"react\"\n\nexport default function NewMemberPage() {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { addMember, treeData, getMember } = useFamily()\n\n const existingMembers = Object.values(treeData.members)\n \n // 从URL参数获取预填信息\n const initialData = useMemo(() => {\n const fatherId = searchParams.get('fatherId')\n const motherId = searchParams.get('motherId')\n const spouseId = searchParams.get('spouseId')\n const childId = searchParams.get('childId')\n const generation = searchParams.get('generation')\n const gender = searchParams.get('gender')\n \n if (!fatherId && !motherId && !spouseId && !childId && !generation && !gender) return undefined\n \n const data: Partial = {}\n \n // 处理父母信息\n if (fatherId) {\n data.fatherId = fatherId\n // 如果有父亲,尝试获取母亲(父亲的配偶)\n const father = getMember(fatherId)\n if (father?.spouseIds && father.spouseIds.length > 0) {\n data.motherId = father.spouseIds[0]\n }\n }\n \n if (motherId) {\n data.motherId = motherId\n // 如果有母亲,尝试获取父亲(母亲的配偶)\n const mother = getMember(motherId)\n if (mother?.spouseIds && mother.spouseIds.length > 0) {\n data.fatherId = mother.spouseIds[0]\n }\n }\n \n // 处理配偶信息\n if (spouseId) {\n data.spouseIds = [spouseId]\n }\n \n // 处理子女信息(添加父母时使用)\n if (childId) {\n data.childrenIds = [childId]\n }\n \n // 处理世代\n if (generation) {\n data.generation = parseInt(generation)\n }\n \n // 处理性别\n if (gender) {\n data.gender = gender.toUpperCase() as 'MALE' | 'FEMALE'\n }\n \n return data\n }, [searchParams, getMember])\n\n const handleSave = async (newMember: FamilyMember) => {\n try {\n await addMember({\n ...newMember,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n })\n // 跳转到成员列表页\n router.push('/members')\n } catch (error) {\n console.error('添加成员失败:', error)\n alert('添加成员失败: ' + (error as Error).message)\n }\n }\n\n return (\n
\n \n
\n
\n \n

新增家族成员

\n
\n router.back()} />\n
\n
\n )\n}\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AATA;;;;;;;;AAWe,SAAS;;IACtB,MAAM,SAAS,IAAA,wUAAS;IACxB,MAAM,eAAe,IAAA,8UAAe;IACpC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAA,oMAAS;IAEpD,MAAM,kBAAkB,OAAO,MAAM,CAAC,SAAS,OAAO;IAEtD,eAAe;IACf,MAAM,cAAc,IAAA,8VAAO;8CAAC;YAC1B,MAAM,WAAW,aAAa,GAAG,CAAC;YAClC,MAAM,WAAW,aAAa,GAAG,CAAC;YAClC,MAAM,WAAW,aAAa,GAAG,CAAC;YAClC,MAAM,UAAU,aAAa,GAAG,CAAC;YACjC,MAAM,aAAa,aAAa,GAAG,CAAC;YACpC,MAAM,SAAS,aAAa,GAAG,CAAC;YAEhC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,OAAO;YAEtF,MAAM,OAA8B,CAAC;YAErC,SAAS;YACT,IAAI,UAAU;gBACZ,KAAK,QAAQ,GAAG;gBAChB,sBAAsB;gBACtB,MAAM,SAAS,UAAU;gBACzB,IAAI,QAAQ,aAAa,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG;oBACpD,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC,EAAE;gBACrC;YACF;YAEA,IAAI,UAAU;gBACZ,KAAK,QAAQ,GAAG;gBAChB,sBAAsB;gBACtB,MAAM,SAAS,UAAU;gBACzB,IAAI,QAAQ,aAAa,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG;oBACpD,KAAK,QAAQ,GAAG,OAAO,SAAS,CAAC,EAAE;gBACrC;YACF;YAEA,SAAS;YACT,IAAI,UAAU;gBACZ,KAAK,SAAS,GAAG;oBAAC;iBAAS;YAC7B;YAEA,kBAAkB;YAClB,IAAI,SAAS;gBACX,KAAK,WAAW,GAAG;oBAAC;iBAAQ;YAC9B;YAEA,OAAO;YACP,IAAI,YAAY;gBACd,KAAK,UAAU,GAAG,SAAS;YAC7B;YAEA,OAAO;YACP,IAAI,QAAQ;gBACV,KAAK,MAAM,GAAG,OAAO,WAAW;YAClC;YAEA,OAAO;QACT;6CAAG;QAAC;QAAc;KAAU;IAE5B,MAAM,aAAa,OAAO;QACxB,IAAI;YACF,MAAM,UAAU;gBACd,GAAG,SAAS;gBACZ,WAAW,IAAI,OAAO,WAAW;gBACjC,WAAW,IAAI,OAAO,WAAW;YACnC;YACA,WAAW;YACX,OAAO,IAAI,CAAC;QACd,EAAE,OAAO,OAAO;YACd,QAAQ,KAAK,CAAC,WAAW;YACzB,MAAM,aAAa,AAAC,MAAgB,OAAO;QAC7C;IACF;IAEA,qBACE,mXAAC;QAAI,WAAU;;0BACb,mXAAC,qMAAU;;;;;0BACX,mXAAC;gBAAI,WAAU;;kCACb,mXAAC;wBAAI,WAAU;;0CACb,mXAAC,+LAAM;gCAAC,SAAQ;gCAAQ,SAAS,IAAM,OAAO,IAAI;;kDAChD,mXAAC,2WAAS;wCAAC,WAAU;;;;;;oCAAiB;;;;;;;0CAExC,mXAAC;gCAAG,WAAU;0CAAgC;;;;;;;;;;;;kCAEhD,mXAAC,gNAAU;wBAAC,aAAa;wBAAa,iBAAiB;wBAAiB,UAAU;wBAAY,UAAU,IAAM,OAAO,IAAI;;;;;;;;;;;;;;;;;;AAIjI;GA3FwB;;QACP,wUAAS;QACH,8UAAe;QACO,oMAAS;;;KAH9B"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_app_globals_css_bad6b30c._.single.css b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_app_globals_css_bad6b30c._.single.css index bf187cab..598b5ea1 100644 --- a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_app_globals_css_bad6b30c._.single.css +++ b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_app_globals_css_bad6b30c._.single.css @@ -645,6 +645,10 @@ top: 100%; } + .-right-0\.5 { + right: calc(var(--spacing) * -.5); + } + .-right-1 { right: calc(var(--spacing) * -1); } @@ -673,6 +677,10 @@ right: calc(var(--spacing) * 4); } + .-bottom-0\.5 { + bottom: calc(var(--spacing) * -.5); + } + .-bottom-1 { bottom: calc(var(--spacing) * -1); } @@ -1763,6 +1771,10 @@ gap: calc(var(--spacing) * 4); } + .gap-5 { + gap: calc(var(--spacing) * 5); + } + .gap-6 { gap: calc(var(--spacing) * 6); } diff --git a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_app_globals_css_bad6b30c._.single.css.map b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_app_globals_css_bad6b30c._.single.css.map index 8b3fee01..263ac8ce 100644 --- a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_app_globals_css_bad6b30c._.single.css.map +++ b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_app_globals_css_bad6b30c._.single.css.map @@ -2,5 +2,5 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/Documents/go-new/chinese-family-tree/app/globals.css"],"sourcesContent":["/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-orange-50: oklch(98% 0.016 73.684);\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-700: oklch(55.3% 0.195 38.402);\n --color-amber-700: oklch(55.5% 0.163 48.998);\n --color-yellow-50: oklch(98.7% 0.026 102.212);\n --color-yellow-200: oklch(94.5% 0.129 101.54);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-800: oklch(47.6% 0.114 61.907);\n --color-yellow-900: oklch(42.1% 0.095 57.708);\n --color-yellow-950: oklch(28.6% 0.066 53.813);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-100: oklch(93.2% 0.032 255.585);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-blue-950: oklch(28.2% 0.091 267.935);\n --color-purple-50: oklch(97.7% 0.014 308.299);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-500: oklch(62.7% 0.265 303.9);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-pink-50: oklch(97.1% 0.014 343.198);\n --color-pink-100: oklch(94.8% 0.028 342.258);\n --color-pink-200: oklch(89.9% 0.061 343.231);\n --color-pink-400: oklch(71.8% 0.202 349.761);\n --color-pink-700: oklch(52.5% 0.223 3.958);\n --color-pink-800: oklch(45.9% 0.187 3.815);\n --color-pink-950: oklch(28.4% 0.109 3.907);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-neutral-100: oklch(97% 0 0);\n --color-neutral-400: oklch(70.8% 0 0);\n --color-neutral-500: oklch(55.6% 0 0);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-6xl: 72rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --radius-xs: 0.125rem;\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: \"Geist\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n --default-mono-font-family: \"Geist Mono\", monospace;\n --color-border: var(--border);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .\\@container\\/card-header {\n container-type: inline-size;\n container-name: card-header;\n }\n .\\@container\\/field-group {\n container-type: inline-size;\n container-name: field-group;\n }\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .invisible {\n visibility: hidden;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n .-top-1 {\n top: calc(var(--spacing) * -1);\n }\n .-top-3 {\n top: calc(var(--spacing) * -3);\n }\n .-top-12 {\n top: calc(var(--spacing) * -12);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1 {\n top: calc(var(--spacing) * 1);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-2\\.5 {\n top: calc(var(--spacing) * 2.5);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-20 {\n top: calc(var(--spacing) * 20);\n }\n .top-\\[1px\\] {\n top: 1px;\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .top-\\[60\\%\\] {\n top: 60%;\n }\n .top-full {\n top: 100%;\n }\n .-right-1 {\n right: calc(var(--spacing) * -1);\n }\n .-right-12 {\n right: calc(var(--spacing) * -12);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1 {\n right: calc(var(--spacing) * 1);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .-bottom-1 {\n bottom: calc(var(--spacing) * -1);\n }\n .-bottom-12 {\n bottom: calc(var(--spacing) * -12);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .-left-12 {\n left: calc(var(--spacing) * -12);\n }\n .-left-16 {\n left: calc(var(--spacing) * -16);\n }\n .-left-\\[9px\\] {\n left: calc(9px * -1);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-2\\.5 {\n left: calc(var(--spacing) * 2.5);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .isolate {\n isolation: isolate;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-30 {\n z-index: 30;\n }\n .z-50 {\n z-index: 50;\n }\n .z-\\[1\\] {\n z-index: 1;\n }\n .z-\\[100\\] {\n z-index: 100;\n }\n .order-first {\n order: -9999;\n }\n .order-last {\n order: 9999;\n }\n .col-span-full {\n grid-column: 1 / -1;\n }\n .col-start-2 {\n grid-column-start: 2;\n }\n .row-span-2 {\n grid-row: span 2 / span 2;\n }\n .row-start-1 {\n grid-row-start: 1;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .\\!m-0 {\n margin: calc(var(--spacing) * 0) !important;\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-3\\.5 {\n margin-inline: calc(var(--spacing) * 3.5);\n }\n .mx-4 {\n margin-inline: calc(var(--spacing) * 4);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .-my-2 {\n margin-block: calc(var(--spacing) * -2);\n }\n .my-0 {\n margin-block: calc(var(--spacing) * 0);\n }\n .my-0\\.5 {\n margin-block: calc(var(--spacing) * 0.5);\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n .mt-0 {\n margin-top: calc(var(--spacing) * 0);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-auto {\n margin-top: auto;\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n .mr-8 {\n margin-right: calc(var(--spacing) * 8);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .-ml-4 {\n margin-left: calc(var(--spacing) * -4);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-6 {\n margin-left: calc(var(--spacing) * 6);\n }\n .ml-auto {\n margin-left: auto;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .table-caption {\n display: table-caption;\n }\n .table-cell {\n display: table-cell;\n }\n .table-row {\n display: table-row;\n }\n .field-sizing-content {\n field-sizing: content;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .size-\\(--cell-size\\) {\n width: var(--cell-size);\n height: var(--cell-size);\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n height: calc(var(--spacing) * 2.5);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-6 {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n .size-7 {\n width: calc(var(--spacing) * 7);\n height: calc(var(--spacing) * 7);\n }\n .size-8 {\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-10 {\n width: calc(var(--spacing) * 10);\n height: calc(var(--spacing) * 10);\n }\n .size-auto {\n width: auto;\n height: auto;\n }\n .size-full {\n width: 100%;\n height: 100%;\n }\n .h-\\(--cell-size\\) {\n height: var(--cell-size);\n }\n .h-1 {\n height: calc(var(--spacing) * 1);\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-2\\.5 {\n height: calc(var(--spacing) * 2.5);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-\\[1\\.15rem\\] {\n height: 1.15rem;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-\\[600px\\] {\n height: 600px;\n }\n .h-\\[calc\\(100\\%-1px\\)\\] {\n height: calc(100% - 1px);\n }\n .h-\\[var\\(--radix-navigation-menu-viewport-height\\)\\] {\n height: var(--radix-navigation-menu-viewport-height);\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .h-svh {\n height: 100svh;\n }\n .max-h-\\(--radix-context-menu-content-available-height\\) {\n max-height: var(--radix-context-menu-content-available-height);\n }\n .max-h-\\(--radix-dropdown-menu-content-available-height\\) {\n max-height: var(--radix-dropdown-menu-content-available-height);\n }\n .max-h-\\(--radix-select-content-available-height\\) {\n max-height: var(--radix-select-content-available-height);\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[60vh\\] {\n max-height: 60vh;\n }\n .max-h-\\[70vh\\] {\n max-height: 70vh;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .max-h-screen {\n max-height: 100vh;\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-4 {\n min-height: calc(var(--spacing) * 4);\n }\n .min-h-16 {\n min-height: calc(var(--spacing) * 16);\n }\n .min-h-\\[200px\\] {\n min-height: 200px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .min-h-svh {\n min-height: 100svh;\n }\n .w-\\(--cell-size\\) {\n width: var(--cell-size);\n }\n .w-\\(--sidebar-width\\) {\n width: var(--sidebar-width);\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\/4 {\n width: calc(3/4 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-7 {\n width: calc(var(--spacing) * 7);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-\\[100px\\] {\n width: 100px;\n }\n .w-\\[200px\\] {\n width: 200px;\n }\n .w-\\[var\\(--radix-dropdown-menu-trigger-width\\)\\] {\n width: var(--radix-dropdown-menu-trigger-width);\n }\n .w-auto {\n width: auto;\n }\n .w-fit {\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-px {\n width: 1px;\n }\n .max-w-\\(--skeleton-width\\) {\n max-width: var(--skeleton-width);\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-3xl {\n max-width: var(--container-3xl);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-max {\n max-width: max-content;\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .max-w-none {\n max-width: none;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .min-w-\\(--cell-size\\) {\n min-width: var(--cell-size);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-5 {\n min-width: calc(var(--spacing) * 5);\n }\n .min-w-8 {\n min-width: calc(var(--spacing) * 8);\n }\n .min-w-9 {\n min-width: calc(var(--spacing) * 9);\n }\n .min-w-10 {\n min-width: calc(var(--spacing) * 10);\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[12rem\\] {\n min-width: 12rem;\n }\n .min-w-\\[200px\\] {\n min-width: 200px;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .min-w-fit {\n min-width: fit-content;\n }\n .min-w-full {\n min-width: 100%;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .grow {\n flex-grow: 1;\n }\n .grow-0 {\n flex-grow: 0;\n }\n .basis-full {\n flex-basis: 100%;\n }\n .caption-bottom {\n caption-side: bottom;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .origin-\\(--radix-context-menu-content-transform-origin\\) {\n transform-origin: var(--radix-context-menu-content-transform-origin);\n }\n .origin-\\(--radix-dropdown-menu-content-transform-origin\\) {\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n }\n .origin-\\(--radix-hover-card-content-transform-origin\\) {\n transform-origin: var(--radix-hover-card-content-transform-origin);\n }\n .origin-\\(--radix-menubar-content-transform-origin\\) {\n transform-origin: var(--radix-menubar-content-transform-origin);\n }\n .origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n .origin-\\(--radix-select-content-transform-origin\\) {\n transform-origin: var(--radix-select-content-transform-origin);\n }\n .origin-\\(--radix-tooltip-content-transform-origin\\) {\n transform-origin: var(--radix-tooltip-content-transform-origin);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-px {\n --tw-translate-x: -1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-px {\n --tw-translate-x: 1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0\\.5 {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[2px\\] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[calc\\(-50\\%_-_2px\\)\\] {\n --tw-translate-y: calc(-50% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-45 {\n rotate: 45deg;\n }\n .rotate-90 {\n rotate: 90deg;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-caret-blink {\n animation: caret-blink 1.25s ease-out infinite;\n }\n .animate-in {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-move {\n cursor: move;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-text {\n cursor: text;\n }\n .touch-none {\n touch-action: none;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .scroll-my-1 {\n scroll-margin-block: calc(var(--spacing) * 1);\n }\n .scroll-py-1 {\n scroll-padding-block: calc(var(--spacing) * 1);\n }\n .list-inside {\n list-style-position: inside;\n }\n .list-disc {\n list-style-type: disc;\n }\n .list-none {\n list-style-type: none;\n }\n .auto-rows-min {\n grid-auto-rows: min-content;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-\\[0_1fr\\] {\n grid-template-columns: 0 1fr;\n }\n .grid-rows-\\[auto_auto\\] {\n grid-template-rows: auto auto;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-baseline {\n align-items: baseline;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .justify-items-start {\n justify-items: start;\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-7 {\n gap: calc(var(--spacing) * 7);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .space-y-0\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-4 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .gap-y-0\\.5 {\n row-gap: calc(var(--spacing) * 0.5);\n }\n .self-start {\n align-self: flex-start;\n }\n .self-stretch {\n align-self: stretch;\n }\n .justify-self-end {\n justify-self: flex-end;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-\\[2px\\] {\n border-radius: 2px;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\] {\n border-radius: calc(var(--radius) - 5px);\n }\n .rounded-\\[inherit\\] {\n border-radius: inherit;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius);\n }\n .rounded-md {\n border-radius: calc(var(--radius) - 2px);\n }\n .rounded-none {\n border-radius: 0;\n }\n .rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n }\n .rounded-xl {\n border-radius: calc(var(--radius) + 4px);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .rounded-l-md {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n .rounded-tl-sm {\n border-top-left-radius: calc(var(--radius) - 4px);\n }\n .rounded-r-md {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-\\[1\\.5px\\] {\n border-style: var(--tw-border-style);\n border-width: 1.5px;\n }\n .border-y {\n border-block-style: var(--tw-border-style);\n border-block-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-\\(--color-border\\) {\n border-color: var(--color-border);\n }\n .border-background {\n border-color: var(--background);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-200\\/50 {\n border-color: color-mix(in srgb, oklch(88.2% 0.059 254.128) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-blue-200) 50%, transparent);\n }\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-border {\n border-color: var(--border);\n }\n .border-border\\/40 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 40%, transparent);\n }\n }\n .border-border\\/50 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n .border-border\\/60 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 60%, transparent);\n }\n }\n .border-destructive {\n border-color: var(--destructive);\n }\n .border-destructive\\/20 {\n border-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-input {\n border-color: var(--input);\n }\n .border-muted-foreground\\/50 {\n border-color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--muted-foreground) 50%, transparent);\n }\n }\n .border-orange-200 {\n border-color: var(--color-orange-200);\n }\n .border-pink-200\\/50 {\n border-color: color-mix(in srgb, oklch(89.9% 0.061 343.231) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-pink-200) 50%, transparent);\n }\n }\n .border-primary {\n border-color: var(--primary);\n }\n .border-primary\\/20 {\n border-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n .border-purple-200 {\n border-color: var(--color-purple-200);\n }\n .border-red-500 {\n border-color: var(--color-red-500);\n }\n .border-sidebar-border {\n border-color: var(--sidebar-border);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-yellow-400 {\n border-color: var(--color-yellow-400);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .border-l-transparent {\n border-left-color: transparent;\n }\n .bg-\\(--color-bg\\) {\n background-color: var(--color-bg);\n }\n .bg-accent {\n background-color: var(--accent);\n }\n .bg-background {\n background-color: var(--background);\n }\n .bg-background\\/50 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 50%, transparent);\n }\n }\n .bg-background\\/60 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 60%, transparent);\n }\n }\n .bg-background\\/80 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 80%, transparent);\n }\n }\n .bg-background\\/90 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 90%, transparent);\n }\n }\n .bg-background\\/95 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 95%, transparent);\n }\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-50\\/50 {\n background-color: color-mix(in srgb, oklch(97% 0.014 254.604) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-50) 50%, transparent);\n }\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-border {\n background-color: var(--border);\n }\n .bg-card {\n background-color: var(--card);\n }\n .bg-card\\/50 {\n background-color: var(--card);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--card) 50%, transparent);\n }\n }\n .bg-destructive {\n background-color: var(--destructive);\n }\n .bg-destructive\\/10 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n .bg-destructive\\/15 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 15%, transparent);\n }\n }\n .bg-foreground {\n background-color: var(--foreground);\n }\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-gray-500 {\n background-color: var(--color-gray-500);\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-input {\n background-color: var(--input);\n }\n .bg-muted {\n background-color: var(--muted);\n }\n .bg-muted\\/30 {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\n }\n }\n .bg-muted\\/50 {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n .bg-neutral-100 {\n background-color: var(--color-neutral-100);\n }\n .bg-neutral-400 {\n background-color: var(--color-neutral-400);\n }\n .bg-orange-50 {\n background-color: var(--color-orange-50);\n }\n .bg-orange-500 {\n background-color: var(--color-orange-500);\n }\n .bg-pink-50\\/50 {\n background-color: color-mix(in srgb, oklch(97.1% 0.014 343.198) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-pink-50) 50%, transparent);\n }\n }\n .bg-pink-100 {\n background-color: var(--color-pink-100);\n }\n .bg-popover {\n background-color: var(--popover);\n }\n .bg-primary {\n background-color: var(--primary);\n }\n .bg-primary\\/5 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n }\n .bg-primary\\/10 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n }\n }\n .bg-primary\\/20 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n .bg-purple-50 {\n background-color: var(--color-purple-50);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-purple-500 {\n background-color: var(--color-purple-500);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-500 {\n background-color: var(--color-red-500);\n }\n .bg-secondary {\n background-color: var(--secondary);\n }\n .bg-sidebar {\n background-color: var(--sidebar);\n }\n .bg-sidebar-border {\n background-color: var(--sidebar-border);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n .bg-gradient-to-br {\n --tw-gradient-position: to bottom right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-\\[url\\(\\'https\\:\\/\\/www\\.transparenttextures\\.com\\/patterns\\/rice-paper\\.png\\'\\)\\] {\n background-image: url('https://www.transparenttextures.com/patterns/rice-paper.png');\n }\n .from-card {\n --tw-gradient-from: var(--card);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-primary\\/5 {\n --tw-gradient-from: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-primary\\/50 {\n --tw-gradient-from: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--primary) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-background {\n --tw-gradient-via: var(--background);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-primary {\n --tw-gradient-via: var(--primary);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-card\\/50 {\n --tw-gradient-to: var(--card);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--card) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-primary\\/50 {\n --tw-gradient-to: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--primary) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-secondary\\/5 {\n --tw-gradient-to: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--secondary) 5%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-repeat {\n background-repeat: repeat;\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-foreground {\n fill: var(--foreground);\n }\n .fill-primary {\n fill: var(--primary);\n }\n .object-contain {\n object-fit: contain;\n }\n .object-cover {\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .p-\\[3px\\] {\n padding: 3px;\n }\n .p-px {\n padding: 1px;\n }\n .px-\\(--cell-size\\) {\n padding-inline: var(--cell-size);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .pt-0 {\n padding-top: calc(var(--spacing) * 0);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-20 {\n padding-top: calc(var(--spacing) * 20);\n }\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-2\\.5 {\n padding-right: calc(var(--spacing) * 2.5);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-20 {\n padding-bottom: calc(var(--spacing) * 20);\n }\n .pl-1 {\n padding-left: calc(var(--spacing) * 1);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .align-middle {\n vertical-align: middle;\n }\n .font-mono {\n font-family: \"Geist Mono\", monospace;\n }\n .font-sans {\n font-family: \"Geist\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n }\n .font-serif {\n font-family: \"Songti SC\", \"STSong\", \"SimSun\", \"Times New Roman\", serif;\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-sm\\/relaxed {\n font-size: var(--text-sm);\n line-height: var(--leading-relaxed);\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .leading-normal {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-balance {\n text-wrap: balance;\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .break-all {\n word-break: break-all;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre-line {\n white-space: pre-line;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-accent-foreground {\n color: var(--accent-foreground);\n }\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n .text-background {\n color: var(--background);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-card-foreground {\n color: var(--card-foreground);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-foreground {\n color: var(--foreground);\n }\n .text-foreground\\/50 {\n color: var(--foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--foreground) 50%, transparent);\n }\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-muted-foreground\\/60 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 60%, transparent);\n }\n }\n .text-muted-foreground\\/70 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 70%, transparent);\n }\n }\n .text-muted-foreground\\/80 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 80%, transparent);\n }\n }\n .text-neutral-500 {\n color: var(--color-neutral-500);\n }\n .text-orange-700 {\n color: var(--color-orange-700);\n }\n .text-pink-400 {\n color: var(--color-pink-400);\n }\n .text-pink-700 {\n color: var(--color-pink-700);\n }\n .text-popover-foreground {\n color: var(--popover-foreground);\n }\n .text-primary {\n color: var(--primary);\n }\n .text-primary-foreground {\n color: var(--primary-foreground);\n }\n .text-primary\\/70 {\n color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--primary) 70%, transparent);\n }\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-secondary-foreground {\n color: var(--secondary-foreground);\n }\n .text-sidebar-foreground {\n color: var(--sidebar-foreground);\n }\n .text-sidebar-foreground\\/70 {\n color: var(--sidebar-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--sidebar-foreground) 70%, transparent);\n }\n }\n .text-white {\n color: var(--color-white);\n }\n .text-yellow-800 {\n color: var(--color-yellow-800);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .italic {\n font-style: italic;\n }\n .tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .underline {\n text-decoration-line: underline;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-90 {\n opacity: 90%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-border\\)\\)\\] {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-none {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-0 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-4 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-background {\n --tw-ring-color: var(--background);\n }\n .ring-blue-200 {\n --tw-ring-color: var(--color-blue-200);\n }\n .ring-ring\\/50 {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n .ring-sidebar-ring {\n --tw-ring-color: var(--sidebar-ring);\n }\n .ring-yellow-200 {\n --tw-ring-color: var(--color-yellow-200);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--background);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .backdrop-blur {\n --tw-backdrop-blur: blur(8px);\n -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,);\n 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,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[left\\,right\\,width\\] {\n transition-property: left,right,width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[margin\\,opacity\\] {\n transition-property: margin,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\,height\\,padding\\] {\n transition-property: width,height,padding;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\] {\n transition-property: width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-1000 {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .ease-linear {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n .fade-in-0 {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n .slide-in-from-bottom-5 {\n --tw-enter-translate-y: calc(5*var(--spacing));\n --tw-enter-translate-y: calc(.05*100%);\n }\n .zoom-in-95 {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n .\\[--cell-size\\:--spacing\\(8\\)\\] {\n --cell-size: calc(var(--spacing) * 8);\n }\n .slide-in-from-top-2 {\n --tw-enter-translate-y: calc(2*var(--spacing)*-1);\n }\n .group-last\\:hidden {\n &:is(:where(.group):last-child *) {\n display: none;\n }\n }\n .group-focus-within\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):focus-within *) {\n opacity: 100%;\n }\n }\n .group-hover\\:scale-110 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .group-hover\\:bg-primary\\/20 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-hover\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-has-data-\\[sidebar\\=menu-action\\]\\/menu-item\\:pr-8 {\n &:is(:where(.group\\/menu-item):has(*[data-sidebar=\"menu-action\"]) *) {\n padding-right: calc(var(--spacing) * 8);\n }\n }\n .group-has-\\[\\[data-orientation\\=horizontal\\]\\]\\/field\\:text-balance {\n &:is(:where(.group\\/field):has(*:is([data-orientation=horizontal])) *) {\n text-wrap: balance;\n }\n }\n .group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:translate-y-0\\.5 {\n &:is(:where(.group\\/item):has(*:is([data-slot=item-description])) *) {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:self-start {\n &:is(:where(.group\\/item):has(*:is([data-slot=item-description])) *) {\n align-self: flex-start;\n }\n }\n .group-has-\\[\\>input\\]\\/input-group\\:pt-2\\.5 {\n &:is(:where(.group\\/input-group):has(>input) *) {\n padding-top: calc(var(--spacing) * 2.5);\n }\n }\n .group-has-\\[\\>input\\]\\/input-group\\:pb-2\\.5 {\n &:is(:where(.group\\/input-group):has(>input) *) {\n padding-bottom: calc(var(--spacing) * 2.5);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:-mt-8 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n margin-top: calc(var(--spacing) * -8);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n display: none;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:size-8\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--spacing) * 8) !important;\n height: calc(var(--spacing) * 8) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\(--sidebar-width-icon\\) {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: var(--sidebar-width-icon);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)));\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\+2px\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:overflow-hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-0\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 0) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-2\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 2) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:opacity-0 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n opacity: 0%;\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n right: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n left: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:w-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n width: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[disabled\\=true\\]\\:pointer-events-none {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n pointer-events: none;\n }\n }\n .group-data-\\[disabled\\=true\\]\\:opacity-50 {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[disabled\\=true\\]\\/field\\:opacity-50 {\n &:is(:where(.group\\/field)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50 {\n &:is(:where(.group\\/input-group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:relative {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n position: relative;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:z-10 {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n z-index: 10;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:border-ring {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n border-color: var(--ring);\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:ring-\\[3px\\] {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:ring-ring\\/50 {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .group-data-\\[side\\=left\\]\\:-right-4 {\n &:is(:where(.group)[data-side=\"left\"] *) {\n right: calc(var(--spacing) * -4);\n }\n }\n .group-data-\\[side\\=left\\]\\:border-r {\n &:is(:where(.group)[data-side=\"left\"] *) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .group-data-\\[side\\=right\\]\\:left-0 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n left: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[side\\=right\\]\\:rotate-180 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[side\\=right\\]\\:border-l {\n &:is(:where(.group)[data-side=\"right\"] *) {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .group-data-\\[state\\=open\\]\\:rotate-180 {\n &:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:rounded-lg {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-radius: var(--radius);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border-sidebar-border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-color: var(--sidebar-border);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:shadow-sm {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[variant\\=outline\\]\\/field-group\\:-mb-2 {\n &:is(:where(.group\\/field-group)[data-variant=\"outline\"] *) {\n margin-bottom: calc(var(--spacing) * -2);\n }\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:block {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"bottom\"] *) {\n display: block;\n }\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:text-center {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"bottom\"] *) {\n text-align: center;\n }\n }\n .group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:text-center {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"top\"] *) {\n text-align: center;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:top-full {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n top: 100%;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:mt-1\\.5 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n margin-top: calc(var(--spacing) * 1.5);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:overflow-hidden {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:rounded-md {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:border {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:bg-popover {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n background-color: var(--popover);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:text-popover-foreground {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n color: var(--popover-foreground);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:shadow {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:duration-200 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n }\n .group-\\[\\.destructive\\]\\:border-muted\\/40 {\n &:is(:where(.group):is(.destructive) *) {\n border-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--muted) 40%, transparent);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:text-red-300 {\n &:is(:where(.group):is(.destructive) *) {\n color: var(--color-red-300);\n }\n }\n .peer-hover\\/menu-button\\:text-sidebar-accent-foreground {\n &:is(:where(.peer\\/menu-button):hover ~ *) {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-50 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n }\n .peer-data-\\[active\\=true\\]\\/menu-button\\:text-sidebar-accent-foreground {\n &:is(:where(.peer\\/menu-button)[data-active=\"true\"] ~ *) {\n color: var(--sidebar-accent-foreground);\n }\n }\n .peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"default\"] ~ *) {\n top: calc(var(--spacing) * 1.5);\n }\n }\n .peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"lg\"] ~ *) {\n top: calc(var(--spacing) * 2.5);\n }\n }\n .peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1 {\n &:is(:where(.peer\\/menu-button)[data-size=\"sm\"] ~ *) {\n top: calc(var(--spacing) * 1);\n }\n }\n .selection\\:bg-primary {\n & *::selection {\n background-color: var(--primary);\n }\n &::selection {\n background-color: var(--primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::selection {\n color: var(--primary-foreground);\n }\n &::selection {\n color: var(--primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .file\\:text-foreground {\n &::file-selector-button {\n color: var(--foreground);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .after\\:absolute {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .after\\:-inset-2 {\n &::after {\n content: var(--tw-content);\n inset: calc(var(--spacing) * -2);\n }\n }\n .after\\:inset-y-0 {\n &::after {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-1\\/2 {\n &::after {\n content: var(--tw-content);\n left: calc(1/2 * 100%);\n }\n }\n .after\\:w-1 {\n &::after {\n content: var(--tw-content);\n width: calc(var(--spacing) * 1);\n }\n }\n .after\\:w-\\[2px\\] {\n &::after {\n content: var(--tw-content);\n width: 2px;\n }\n }\n .after\\:-translate-x-1\\/2 {\n &::after {\n content: var(--tw-content);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:after\\:left-full {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n &::after {\n content: var(--tw-content);\n left: 100%;\n }\n }\n }\n .first\\:rounded-l-md {\n &:first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .first\\:border-l {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .last\\:mt-0 {\n &:last-child {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .last\\:rounded-r-md {\n &:last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .last\\:border-0 {\n &:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .last\\:border-b-0 {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:border-blue-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-400);\n }\n }\n }\n .hover\\:border-primary {\n &:hover {\n @media (hover: hover) {\n border-color: var(--primary);\n }\n }\n }\n .hover\\:border-primary\\/30 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--primary) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n .hover\\:bg-accent\\/5 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 5%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-background {\n &:hover {\n @media (hover: hover) {\n background-color: var(--background);\n }\n }\n }\n .hover\\:bg-destructive {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n }\n }\n }\n .hover\\:bg-muted\\/30 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-secondary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-sidebar-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--sidebar-accent);\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n .hover\\:text-destructive {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive);\n }\n }\n }\n .hover\\:text-destructive-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive-foreground);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--foreground);\n }\n }\n }\n .hover\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--muted-foreground);\n }\n }\n }\n .hover\\:text-primary {\n &:hover {\n @media (hover: hover) {\n color: var(--primary);\n }\n }\n }\n .hover\\:text-sidebar-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-90 {\n &:hover {\n @media (hover: hover) {\n opacity: 90%;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .hover\\:shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-accent\\)\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-lg {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:ring-4 {\n &:hover {\n @media (hover: hover) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:group-data-\\[collapsible\\=offcanvas\\]\\:bg-sidebar {\n &:hover {\n @media (hover: hover) {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n background-color: var(--sidebar);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:border-destructive\\/30 {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--destructive) 30%, transparent);\n }\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:bg-destructive {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive-foreground);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:text-red-50 {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-50);\n }\n }\n }\n }\n .hover\\:after\\:bg-sidebar-border {\n &:hover {\n @media (hover: hover) {\n &::after {\n content: var(--tw-content);\n background-color: var(--sidebar-border);\n }\n }\n }\n }\n .focus\\:z-10 {\n &:focus {\n z-index: 10;\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--accent);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--accent-foreground);\n }\n }\n .focus\\:opacity-100 {\n &:focus {\n opacity: 100%;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-destructive {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-color: var(--destructive);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-red-400 {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-color: var(--color-red-400);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600 {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-offset-color: var(--color-red-600);\n }\n }\n }\n .focus-visible\\:z-10 {\n &:focus-visible {\n z-index: 10;\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--ring);\n }\n }\n .focus-visible\\:ring-0 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-1 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-4 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-primary {\n &:focus-visible {\n --tw-ring-color: var(--primary);\n }\n }\n .focus-visible\\:ring-ring {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .focus-visible\\:ring-offset-1 {\n &:focus-visible {\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-visible\\:outline-hidden {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus-visible\\:outline-1 {\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n }\n .focus-visible\\:outline-ring {\n &:focus-visible {\n outline-color: var(--ring);\n }\n }\n .active\\:bg-sidebar-accent {\n &:active {\n background-color: var(--sidebar-accent);\n }\n }\n .active\\:text-sidebar-accent-foreground {\n &:active {\n color: var(--sidebar-accent-foreground);\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .in-data-\\[side\\=left\\]\\:cursor-w-resize {\n :where(*[data-side=\"left\"]) & {\n cursor: w-resize;\n }\n }\n .in-data-\\[side\\=right\\]\\:cursor-e-resize {\n :where(*[data-side=\"right\"]) & {\n cursor: e-resize;\n }\n }\n .has-focus\\:border-ring {\n &:has(*:focus) {\n border-color: var(--ring);\n }\n }\n .has-focus\\:ring-\\[3px\\] {\n &:has(*:focus) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .has-focus\\:ring-ring\\/50 {\n &:has(*:focus) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .has-disabled\\:opacity-50 {\n &:has(*:disabled) {\n opacity: 50%;\n }\n }\n .has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\] {\n &:has(*[data-slot=\"card-action\"]) {\n grid-template-columns: 1fr auto;\n }\n }\n .has-data-\\[state\\=checked\\]\\:border-primary {\n &:has(*[data-state=\"checked\"]) {\n border-color: var(--primary);\n }\n }\n .has-data-\\[state\\=checked\\]\\:bg-primary\\/5 {\n &:has(*[data-state=\"checked\"]) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n }\n }\n .has-data-\\[variant\\=inset\\]\\:bg-sidebar {\n &:has(*[data-variant=\"inset\"]) {\n background-color: var(--sidebar);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n border-color: var(--ring);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-\\[3px\\] {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50 {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive {\n &:has(*:is([data-slot][aria-invalid=true])) {\n border-color: var(--destructive);\n }\n }\n .has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20 {\n &:has(*:is([data-slot][aria-invalid=true])) {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto {\n &:has(>[data-align=block-end]) {\n height: auto;\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col {\n &:has(>[data-align=block-end]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto {\n &:has(>[data-align=block-start]) {\n height: auto;\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col {\n &:has(>[data-align=block-start]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2 {\n &:has(>[data-slot=button-group]) {\n gap: calc(var(--spacing) * 2);\n }\n }\n .has-\\[\\>\\[data-slot\\=checkbox-group\\]\\]\\:gap-3 {\n &:has(>[data-slot=checkbox-group]) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start {\n &:has(>[data-slot=field-content]) {\n align-items: flex-start;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:w-full {\n &:has(>[data-slot=field]) {\n width: 100%;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:flex-col {\n &:has(>[data-slot=field]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:rounded-md {\n &:has(>[data-slot=field]) {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:border {\n &:has(>[data-slot=field]) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .has-\\[\\>\\[data-slot\\=radio-group\\]\\]\\:gap-3 {\n &:has(>[data-slot=radio-group]) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>button\\]\\:mr-\\[-0\\.4rem\\] {\n &:has(>button) {\n margin-right: -0.4rem;\n }\n }\n .has-\\[\\>button\\]\\:ml-\\[-0\\.45rem\\] {\n &:has(>button) {\n margin-left: -0.45rem;\n }\n }\n .has-\\[\\>kbd\\]\\:mr-\\[-0\\.35rem\\] {\n &:has(>kbd) {\n margin-right: -0.35rem;\n }\n }\n .has-\\[\\>kbd\\]\\:ml-\\[-0\\.35rem\\] {\n &:has(>kbd) {\n margin-left: -0.35rem;\n }\n }\n .has-\\[\\>svg\\]\\:grid-cols-\\[calc\\(var\\(--spacing\\)\\*4\\)_1fr\\] {\n &:has(>svg) {\n grid-template-columns: calc(var(--spacing) * 4) 1fr;\n }\n }\n .has-\\[\\>svg\\]\\:gap-x-3 {\n &:has(>svg) {\n column-gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:p-0 {\n &:has(>svg) {\n padding: calc(var(--spacing) * 0);\n }\n }\n .has-\\[\\>svg\\]\\:px-2 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .has-\\[\\>textarea\\]\\:h-auto {\n &:has(>textarea) {\n height: auto;\n }\n }\n .aria-disabled\\:pointer-events-none {\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .aria-disabled\\:opacity-50 {\n &[aria-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .aria-selected\\:text-muted-foreground {\n &[aria-selected=\"true\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:z-10 {\n &[data-active=\"true\"] {\n z-index: 10;\n }\n }\n .data-\\[active\\=true\\]\\:border-ring {\n &[data-active=\"true\"] {\n border-color: var(--ring);\n }\n }\n .data-\\[active\\=true\\]\\:bg-accent\\/50 {\n &[data-active=\"true\"] {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:bg-sidebar-accent {\n &[data-active=\"true\"] {\n background-color: var(--sidebar-accent);\n }\n }\n .data-\\[active\\=true\\]\\:font-medium {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .data-\\[active\\=true\\]\\:font-semibold {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .data-\\[active\\=true\\]\\:text-accent-foreground {\n &[data-active=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:text-foreground {\n &[data-active=\"true\"] {\n color: var(--foreground);\n }\n }\n .data-\\[active\\=true\\]\\:text-sidebar-accent-foreground {\n &[data-active=\"true\"] {\n color: var(--sidebar-accent-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:ring-\\[3px\\] {\n &[data-active=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[active\\=true\\]\\:ring-ring\\/50 {\n &[data-active=\"true\"] {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:hover\\:bg-accent {\n &[data-active=\"true\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .data-\\[active\\=true\\]\\:focus\\:bg-accent {\n &[data-active=\"true\"] {\n &:focus {\n background-color: var(--accent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:aria-invalid\\:border-destructive {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n }\n .data-\\[active\\=true\\]\\:aria-invalid\\:ring-destructive\\/20 {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive {\n &[data-error=\"true\"] {\n color: var(--destructive);\n }\n }\n .data-\\[inset\\]\\:pl-8 {\n &[data-inset] {\n padding-left: calc(var(--spacing) * 8);\n }\n }\n .data-\\[invalid\\=true\\]\\:text-destructive {\n &[data-invalid=\"true\"] {\n color: var(--destructive);\n }\n }\n .data-\\[motion\\=from-end\\]\\:slide-in-from-right-52 {\n &[data-motion=\"from-end\"] {\n --tw-enter-translate-x: calc(52*var(--spacing));\n }\n }\n .data-\\[motion\\=from-start\\]\\:slide-in-from-left-52 {\n &[data-motion=\"from-start\"] {\n --tw-enter-translate-x: calc(52*var(--spacing)*-1);\n }\n }\n .data-\\[motion\\=to-end\\]\\:slide-out-to-right-52 {\n &[data-motion=\"to-end\"] {\n --tw-exit-translate-x: calc(52*var(--spacing));\n }\n }\n .data-\\[motion\\=to-start\\]\\:slide-out-to-left-52 {\n &[data-motion=\"to-start\"] {\n --tw-exit-translate-x: calc(52*var(--spacing)*-1);\n }\n }\n .data-\\[motion\\^\\=from-\\]\\:animate-in {\n &[data-motion^=\"from-\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[motion\\^\\=from-\\]\\:fade-in {\n &[data-motion^=\"from-\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[motion\\^\\=to-\\]\\:animate-out {\n &[data-motion^=\"to-\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[motion\\^\\=to-\\]\\:fade-out {\n &[data-motion^=\"to-\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-1\\.5 {\n &[data-orientation=\"horizontal\"] {\n height: calc(var(--spacing) * 1.5);\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-full {\n &[data-orientation=\"horizontal\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-px {\n &[data-orientation=\"horizontal\"] {\n height: 1px;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:w-full {\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-auto {\n &[data-orientation=\"vertical\"] {\n height: auto;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-full {\n &[data-orientation=\"vertical\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:min-h-44 {\n &[data-orientation=\"vertical\"] {\n min-height: calc(var(--spacing) * 44);\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-1\\.5 {\n &[data-orientation=\"vertical\"] {\n width: calc(var(--spacing) * 1.5);\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-auto {\n &[data-orientation=\"vertical\"] {\n width: auto;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-full {\n &[data-orientation=\"vertical\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-px {\n &[data-orientation=\"vertical\"] {\n width: 1px;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:flex-col {\n &[data-orientation=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:h-px {\n &[data-panel-group-direction=\"vertical\"] {\n height: 1px;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:w-full {\n &[data-panel-group-direction=\"vertical\"] {\n width: 100%;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:flex-col {\n &[data-panel-group-direction=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:left-0 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:h-1 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n height: calc(var(--spacing) * 1);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:w-full {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n width: 100%;\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:translate-x-0 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:-translate-y-1\\/2 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[range-end\\=true\\]\\:rounded-md {\n &[data-range-end=\"true\"] {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-end\\=true\\]\\:rounded-r-md {\n &[data-range-end=\"true\"] {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-end\\=true\\]\\:bg-primary {\n &[data-range-end=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[range-end\\=true\\]\\:text-primary-foreground {\n &[data-range-end=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[range-middle\\=true\\]\\:rounded-none {\n &[data-range-middle=\"true\"] {\n border-radius: 0;\n }\n }\n .data-\\[range-middle\\=true\\]\\:bg-accent {\n &[data-range-middle=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[range-middle\\=true\\]\\:text-accent-foreground {\n &[data-range-middle=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[range-start\\=true\\]\\:rounded-md {\n &[data-range-start=\"true\"] {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-start\\=true\\]\\:rounded-l-md {\n &[data-range-start=\"true\"] {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-start\\=true\\]\\:bg-primary {\n &[data-range-start=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[range-start\\=true\\]\\:text-primary-foreground {\n &[data-range-start=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[selected-single\\=true\\]\\:bg-primary {\n &[data-selected-single=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[selected-single\\=true\\]\\:text-primary-foreground {\n &[data-selected-single=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:rounded-none {\n &[data-selected=\"true\"] {\n border-radius: 0;\n }\n }\n .data-\\[selected\\=true\\]\\:bg-accent {\n &[data-selected=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[selected\\=true\\]\\:text-accent-foreground {\n &[data-selected=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: calc(2*var(--spacing)*-1);\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:slide-in-from-right-2 {\n &[data-side=\"left\"] {\n --tw-enter-translate-x: calc(2*var(--spacing));\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: calc(2*var(--spacing)*-1);\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2 {\n &[data-side=\"top\"] {\n --tw-enter-translate-y: calc(2*var(--spacing));\n }\n }\n .data-\\[size\\=default\\]\\:h-9 {\n &[data-size=\"default\"] {\n height: calc(var(--spacing) * 9);\n }\n }\n .data-\\[size\\=sm\\]\\:h-8 {\n &[data-size=\"sm\"] {\n height: calc(var(--spacing) * 8);\n }\n }\n .\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90 {\n :is(& > *) {\n &[data-slot=\"alert-description\"] {\n color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .data-\\[slot\\=checkbox-group\\]\\:gap-3 {\n &[data-slot=\"checkbox-group\"] {\n gap: calc(var(--spacing) * 3);\n }\n }\n .\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 {\n :is(& *) {\n &[data-slot=\"command-input-wrapper\"] {\n height: calc(var(--spacing) * 12);\n }\n }\n }\n .\\*\\*\\:data-\\[slot\\=navigation-menu-link\\]\\:focus\\:ring-0 {\n :is(& *) {\n &[data-slot=\"navigation-menu-link\"] {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n }\n .\\*\\*\\:data-\\[slot\\=navigation-menu-link\\]\\:focus\\:outline-none {\n :is(& *) {\n &[data-slot=\"navigation-menu-link\"] {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:flex {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n display: flex;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:items-center {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n align-items: center;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:gap-2 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n .data-\\[state\\=active\\]\\:bg-background {\n &[data-state=\"active\"] {\n background-color: var(--background);\n }\n }\n .data-\\[state\\=active\\]\\:shadow-sm {\n &[data-state=\"active\"] {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\] {\n &[data-state=\"checked\"] {\n --tw-translate-x: calc(100% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[state\\=closed\\]\\:animate-accordion-up {\n &[data-state=\"closed\"] {\n animation: accordion-up 0.2s ease-out;\n }\n }\n .data-\\[state\\=closed\\]\\:animate-out {\n &[data-state=\"closed\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=closed\\]\\:duration-300 {\n &[data-state=\"closed\"] {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-0 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(0/100);\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-80 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(80/100);\n --tw-exit-opacity: .8;\n }\n }\n .data-\\[state\\=closed\\]\\:zoom-out-95 {\n &[data-state=\"closed\"] {\n --tw-exit-scale: calc(95*1%);\n --tw-exit-scale: .95;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-bottom {\n &[data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-left {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-right {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-right-full {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: calc(1*100%);\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-top {\n &[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:animate-out {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:fade-out-0 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(0/100);\n --tw-exit-opacity: 0;\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:zoom-out-95 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n --tw-exit-scale: calc(95*1%);\n --tw-exit-scale: .95;\n }\n }\n }\n .data-\\[state\\=hidden\\]\\:animate-out {\n &[data-state=\"hidden\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=hidden\\]\\:fade-out {\n &[data-state=\"hidden\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=on\\]\\:bg-accent {\n &[data-state=\"on\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=on\\]\\:text-accent-foreground {\n &[data-state=\"on\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:animate-accordion-down {\n &[data-state=\"open\"] {\n animation: accordion-down 0.2s ease-out;\n }\n }\n .data-\\[state\\=open\\]\\:animate-in {\n &[data-state=\"open\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent\\/50 {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n .data-\\[state\\=open\\]\\:bg-secondary {\n &[data-state=\"open\"] {\n background-color: var(--secondary);\n }\n }\n .data-\\[state\\=open\\]\\:text-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:opacity-100 {\n &[data-state=\"open\"] {\n opacity: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:duration-500 {\n &[data-state=\"open\"] {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n }\n .data-\\[state\\=open\\]\\:fade-in-0 {\n &[data-state=\"open\"] {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-90 {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(90*1%);\n --tw-enter-scale: .9;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-95 {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-bottom {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-left {\n &[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-right {\n &[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-top {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-top-full {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: calc(1*-100%);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:animate-in {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:fade-in-0 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:zoom-in-95 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:bg-accent {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:bg-sidebar-accent {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--sidebar-accent);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:text-sidebar-accent-foreground {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:focus\\:bg-accent {\n &[data-state=\"open\"] {\n &:focus {\n background-color: var(--accent);\n }\n }\n }\n .data-\\[state\\=selected\\]\\:bg-muted {\n &[data-state=\"selected\"] {\n background-color: var(--muted);\n }\n }\n .data-\\[state\\=unchecked\\]\\:translate-x-0 {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=unchecked\\]\\:bg-input {\n &[data-state=\"unchecked\"] {\n background-color: var(--input);\n }\n }\n .data-\\[state\\=visible\\]\\:animate-in {\n &[data-state=\"visible\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=visible\\]\\:fade-in {\n &[data-state=\"visible\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[swipe\\=cancel\\]\\:translate-x-0 {\n &[data-swipe=\"cancel\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\] {\n &[data-swipe=\"end\"] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=end\\]\\:animate-out {\n &[data-swipe=\"end\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\] {\n &[data-swipe=\"move\"] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=move\\]\\:transition-none {\n &[data-swipe=\"move\"] {\n transition-property: none;\n }\n }\n .data-\\[variant\\=destructive\\]\\:text-destructive {\n &[data-variant=\"destructive\"] {\n color: var(--destructive);\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10 {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:text-destructive {\n &[data-variant=\"destructive\"] {\n &:focus {\n color: var(--destructive);\n }\n }\n }\n .data-\\[variant\\=label\\]\\:text-sm {\n &[data-variant=\"label\"] {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .data-\\[variant\\=legend\\]\\:text-base {\n &[data-variant=\"legend\"] {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .data-\\[variant\\=outline\\]\\:border-l-0 {\n &[data-variant=\"outline\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .data-\\[variant\\=outline\\]\\:shadow-xs {\n &[data-variant=\"outline\"] {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[variant\\=outline\\]\\:first\\:border-l {\n &[data-variant=\"outline\"] {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:bottom-0 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:mt-24 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n margin-top: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=\"bottom\"] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:rounded-t-lg {\n &[data-vaul-drawer-direction=\"bottom\"] {\n border-top-left-radius: var(--radius);\n border-top-right-radius: var(--radius);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:border-t {\n &[data-vaul-drawer-direction=\"bottom\"] {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=\"left\"] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:left-0 {\n &[data-vaul-drawer-direction=\"left\"] {\n left: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=\"left\"] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:border-r {\n &[data-vaul-drawer-direction=\"left\"] {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=\"right\"] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:right-0 {\n &[data-vaul-drawer-direction=\"right\"] {\n right: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=\"right\"] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:border-l {\n &[data-vaul-drawer-direction=\"right\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=\"top\"] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:top-0 {\n &[data-vaul-drawer-direction=\"top\"] {\n top: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:mb-24 {\n &[data-vaul-drawer-direction=\"top\"] {\n margin-bottom: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=\"top\"] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:rounded-b-lg {\n &[data-vaul-drawer-direction=\"top\"] {\n border-bottom-right-radius: var(--radius);\n border-bottom-left-radius: var(--radius);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:border-b {\n &[data-vaul-drawer-direction=\"top\"] {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .nth-last-2\\:-mt-1 {\n &:nth-last-child(2) {\n margin-top: calc(var(--spacing) * -1);\n }\n }\n .supports-\\[backdrop-filter\\]\\:bg-background\\/60 {\n @supports (backdrop-filter: var(--tw)) {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 60%, transparent);\n }\n }\n }\n .sm\\:top-auto {\n @media (width >= 40rem) {\n top: auto;\n }\n }\n .sm\\:right-0 {\n @media (width >= 40rem) {\n right: calc(var(--spacing) * 0);\n }\n }\n .sm\\:bottom-0 {\n @media (width >= 40rem) {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .sm\\:col-span-2 {\n @media (width >= 40rem) {\n grid-column: span 2 / span 2;\n }\n }\n .sm\\:block {\n @media (width >= 40rem) {\n display: block;\n }\n }\n .sm\\:flex {\n @media (width >= 40rem) {\n display: flex;\n }\n }\n .sm\\:max-w-\\[600px\\] {\n @media (width >= 40rem) {\n max-width: 600px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:max-w-sm {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n .sm\\:grid-cols-2 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .sm\\:flex-col {\n @media (width >= 40rem) {\n flex-direction: column;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:gap-2\\.5 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:pr-2\\.5 {\n @media (width >= 40rem) {\n padding-right: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:pl-2\\.5 {\n @media (width >= 40rem) {\n padding-left: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full {\n &[data-state=\"open\"] {\n @media (width >= 40rem) {\n --tw-enter-translate-y: calc(1*100%);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=\"left\"] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=\"right\"] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .md\\:absolute {\n @media (width >= 48rem) {\n position: absolute;\n }\n }\n .md\\:-left-24 {\n @media (width >= 48rem) {\n left: calc(var(--spacing) * -24);\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:ml-12 {\n @media (width >= 48rem) {\n margin-left: calc(var(--spacing) * 12);\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:w-20 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 20);\n }\n }\n .md\\:w-80 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 80);\n }\n }\n .md\\:w-\\[var\\(--radix-navigation-menu-viewport-width\\)\\] {\n @media (width >= 48rem) {\n width: var(--radix-navigation-menu-viewport-width);\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:max-w-\\[420px\\] {\n @media (width >= 48rem) {\n max-width: 420px;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:gap-1\\.5 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 1.5);\n }\n }\n .md\\:p-12 {\n @media (width >= 48rem) {\n padding: calc(var(--spacing) * 12);\n }\n }\n .md\\:px-6 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n .md\\:pl-12 {\n @media (width >= 48rem) {\n padding-left: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-left {\n @media (width >= 48rem) {\n text-align: left;\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:opacity-0 {\n @media (width >= 48rem) {\n opacity: 0%;\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:m-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin: calc(var(--spacing) * 2);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:ml-0 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin-left: calc(var(--spacing) * 0);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n border-radius: calc(var(--radius) + 4px);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:shadow-sm {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:peer-data-\\[state\\=collapsed\\]\\:ml-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n &:is(:where(.peer)[data-state=\"collapsed\"] ~ *) {\n margin-left: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .md\\:after\\:hidden {\n @media (width >= 48rem) {\n &::after {\n content: var(--tw-content);\n display: none;\n }\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:grid-cols-2 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-4 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .xl\\:grid-cols-4 {\n @media (width >= 80rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .\\@md\\/field-group\\:flex-row {\n @container field-group (width >= 28rem) {\n flex-direction: row;\n }\n }\n .\\@md\\/field-group\\:items-center {\n @container field-group (width >= 28rem) {\n align-items: center;\n }\n }\n .\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start {\n @container field-group (width >= 28rem) {\n &:has(>[data-slot=field-content]) {\n align-items: flex-start;\n }\n }\n }\n .dark\\:border-blue-800 {\n &:is(.dark *) {\n border-color: var(--color-blue-800);\n }\n }\n .dark\\:border-blue-800\\/30 {\n &:is(.dark *) {\n border-color: color-mix(in srgb, oklch(42.4% 0.199 265.638) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-blue-800) 30%, transparent);\n }\n }\n }\n .dark\\:border-input {\n &:is(.dark *) {\n border-color: var(--input);\n }\n }\n .dark\\:border-pink-800\\/30 {\n &:is(.dark *) {\n border-color: color-mix(in srgb, oklch(45.9% 0.187 3.815) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-pink-800) 30%, transparent);\n }\n }\n }\n .dark\\:bg-blue-900\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-900) 20%, transparent);\n }\n }\n }\n .dark\\:bg-blue-950 {\n &:is(.dark *) {\n background-color: var(--color-blue-950);\n }\n }\n .dark\\:bg-blue-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-destructive\\/60 {\n &:is(.dark *) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 60%, transparent);\n }\n }\n }\n .dark\\:bg-input\\/30 {\n &:is(.dark *) {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\n }\n }\n }\n .dark\\:bg-pink-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(28.4% 0.109 3.907) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-pink-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-transparent {\n &:is(.dark *) {\n background-color: transparent;\n }\n }\n .dark\\:bg-yellow-900\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent);\n }\n }\n }\n .dark\\:bg-yellow-950 {\n &:is(.dark *) {\n background-color: var(--color-yellow-950);\n }\n }\n .dark\\:text-blue-200 {\n &:is(.dark *) {\n color: var(--color-blue-200);\n }\n }\n .dark\\:text-muted-foreground {\n &:is(.dark *) {\n color: var(--muted-foreground);\n }\n }\n .dark\\:text-yellow-200 {\n &:is(.dark *) {\n color: var(--color-yellow-200);\n }\n }\n .dark\\:ring-blue-800 {\n &:is(.dark *) {\n --tw-ring-color: var(--color-blue-800);\n }\n }\n .dark\\:ring-yellow-800 {\n &:is(.dark *) {\n --tw-ring-color: var(--color-yellow-800);\n }\n }\n .dark\\:hover\\:bg-accent\\/50 {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-input\\/50 {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:text-accent-foreground {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:has-data-\\[state\\=checked\\]\\:bg-primary\\/10 {\n &:is(.dark *) {\n &:has(*[data-state=\"checked\"]) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n }\n }\n }\n }\n .dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:has(*:is([data-slot][aria-invalid=true])) {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[active\\=true\\]\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:border-input {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n border-color: var(--input);\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:bg-input\\/30 {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:text-foreground {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n color: var(--foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary {\n &:is(.dark *) {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary-foreground {\n &:is(.dark *) {\n &[data-state=\"checked\"] {\n background-color: var(--primary-foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-foreground {\n &:is(.dark *) {\n &[data-state=\"unchecked\"] {\n background-color: var(--foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-input\\/80 {\n &:is(.dark *) {\n &[data-state=\"unchecked\"] {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 80%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20 {\n &:is(.dark *) {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n }\n .\\[\\&_\\.recharts-cartesian-axis-tick_text\\]\\:fill-muted-foreground {\n & .recharts-cartesian-axis-tick text {\n fill: var(--muted-foreground);\n }\n }\n .\\[\\&_\\.recharts-cartesian-grid_line\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border\\/50 {\n & .recharts-cartesian-grid line[stroke='#ccc'] {\n stroke: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n stroke: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n }\n .\\[\\&_\\.recharts-curve\\.recharts-tooltip-cursor\\]\\:stroke-border {\n & .recharts-curve.recharts-tooltip-cursor {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-dot\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent {\n & .recharts-dot[stroke='#fff'] {\n stroke: transparent;\n }\n }\n .\\[\\&_\\.recharts-layer\\]\\:outline-hidden {\n & .recharts-layer {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\.recharts-polar-grid_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border {\n & .recharts-polar-grid [stroke='#ccc'] {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-radial-bar-background-sector\\]\\:fill-muted {\n & .recharts-radial-bar-background-sector {\n fill: var(--muted);\n }\n }\n .\\[\\&_\\.recharts-rectangle\\.recharts-tooltip-cursor\\]\\:fill-muted {\n & .recharts-rectangle.recharts-tooltip-cursor {\n fill: var(--muted);\n }\n }\n .\\[\\&_\\.recharts-reference-line_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border {\n & .recharts-reference-line [stroke='#ccc'] {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-sector\\]\\:outline-hidden {\n & .recharts-sector {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\.recharts-sector\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent {\n & .recharts-sector[stroke='#fff'] {\n stroke: transparent;\n }\n }\n .\\[\\&_\\.recharts-surface\\]\\:outline-hidden {\n & .recharts-surface {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 {\n & [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 {\n & [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs {\n & [cmdk-group-heading] {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium {\n & [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground {\n & [cmdk-group-heading] {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\]\\:px-2 {\n & [cmdk-group] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 {\n & [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 {\n & [cmdk-input-wrapper] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 {\n & [cmdk-input-wrapper] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input\\]\\]\\:h-12 {\n & [cmdk-input] {\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:px-2 {\n & [cmdk-item] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:py-3 {\n & [cmdk-item] {\n padding-block: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 {\n & [cmdk-item] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 {\n & [cmdk-item] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_img\\]\\:size-full {\n & img {\n width: 100%;\n height: 100%;\n }\n }\n .\\[\\&_img\\]\\:object-cover {\n & img {\n object-fit: cover;\n }\n }\n .\\[\\&_p\\]\\:leading-relaxed {\n & p {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-6 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground {\n & svg:not([class*='text-']) {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_tr\\]\\:border-b {\n & tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .\\[\\&_tr\\:last-child\\]\\:border-0 {\n & tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .\\[\\&\\+\\[data-slot\\=item-content\\]\\]\\:flex-none {\n &+[data-slot=item-content] {\n flex: none;\n }\n }\n .\\[\\&\\:first-child\\[data-selected\\=true\\]_button\\]\\:rounded-l-md {\n &:first-child[data-selected=true] button {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0 {\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n }\n .\\[\\.border-b\\]\\:pb-3 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n .\\[\\.border-b\\]\\:pb-6 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 6);\n }\n }\n .\\[\\.border-t\\]\\:pt-3 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 3);\n }\n }\n .\\[\\.border-t\\]\\:pt-6 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 6);\n }\n }\n .rtl\\:\\*\\*\\:\\[\\.rdp-button\\\\_next\\>svg\\]\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n :is(& *) {\n &:is(.rdp-button_next>svg) {\n rotate: 180deg;\n }\n }\n }\n }\n .rtl\\:\\*\\*\\:\\[\\.rdp-button\\\\_previous\\>svg\\]\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n :is(& *) {\n &:is(.rdp-button_previous>svg) {\n rotate: 180deg;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:flex {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n display: flex;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:items-center {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n align-items: center;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:gap-2 {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive {\n &[data-variant=\"destructive\"] {\n :is(& > *) {\n &:is(svg) {\n color: var(--destructive) !important;\n }\n }\n }\n }\n .\\[\\&\\:last-child\\[data-selected\\=true\\]_button\\]\\:rounded-r-md {\n &:last-child[data-selected=true] button {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .\\[\\&\\>\\*\\]\\:w-full {\n &>* {\n width: 100%;\n }\n }\n .\\[\\&\\>\\*\\]\\:focus-visible\\:relative {\n &>* {\n &:focus-visible {\n position: relative;\n }\n }\n }\n .\\[\\&\\>\\*\\]\\:focus-visible\\:z-10 {\n &>* {\n &:focus-visible {\n z-index: 10;\n }\n }\n }\n .\\[\\&\\>\\*\\]\\:data-\\[slot\\=field\\]\\:p-4 {\n &>* {\n &[data-slot=\"field\"] {\n padding: calc(var(--spacing) * 4);\n }\n }\n }\n .\\@md\\/field-group\\:\\[\\&\\>\\*\\]\\:w-auto {\n @container field-group (width >= 28rem) {\n &>* {\n width: auto;\n }\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none {\n &>*:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-l-none {\n &>*:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0 {\n &>*:not(:first-child) {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-l-0 {\n &>*:not(:first-child) {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-r-none {\n &>*:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none {\n &>*:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n .\\[\\&\\>\\.sr-only\\]\\:w-auto {\n &>.sr-only {\n width: auto;\n }\n }\n .\\[\\&\\>\\[data-slot\\=field-group\\]\\]\\:gap-4 {\n &>[data-slot=field-group] {\n gap: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto {\n &>[data-slot=field-label] {\n flex: auto;\n }\n }\n .\\@md\\/field-group\\:\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto {\n @container field-group (width >= 28rem) {\n &>[data-slot=field-label] {\n flex: auto;\n }\n }\n }\n .has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-r-md {\n &:has(*:is(select[aria-hidden=true]:last-child)) {\n &>[data-slot=select-trigger]:last-of-type {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n }\n .\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=\\'w-\\'\\]\\)\\]\\:w-fit {\n &>[data-slot=select-trigger]:not([class*='w-']) {\n width: fit-content;\n }\n }\n .\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] {\n &>[role=checkbox] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px {\n &:has(>[data-slot=field-content]) {\n &>[role=checkbox],[role=radio] {\n margin-top: 1px;\n }\n }\n }\n .\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px {\n @container field-group (width >= 28rem) {\n &:has(>[data-slot=field-content]) {\n &>[role=checkbox],[role=radio] {\n margin-top: 1px;\n }\n }\n }\n }\n .\\[\\&\\>a\\]\\:underline {\n &>a {\n text-decoration-line: underline;\n }\n }\n .\\[\\&\\>a\\]\\:underline-offset-4 {\n &>a {\n text-underline-offset: 4px;\n }\n }\n .\\[\\&\\>a\\:hover\\]\\:text-primary {\n &>a:hover {\n color: var(--primary);\n }\n }\n .\\[\\&\\>button\\]\\:hidden {\n &>button {\n display: none;\n }\n }\n .\\[\\&\\>input\\]\\:flex-1 {\n &>input {\n flex: 1;\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3 {\n &:has(>[data-align=block-end]) {\n &>input {\n padding-top: calc(var(--spacing) * 3);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3 {\n &:has(>[data-align=block-start]) {\n &>input {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pr-2 {\n &:has(>[data-align=inline-end]) {\n &>input {\n padding-right: calc(var(--spacing) * 2);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:pl-2 {\n &:has(>[data-align=inline-start]) {\n &>input {\n padding-left: calc(var(--spacing) * 2);\n }\n }\n }\n .\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\] {\n &>kbd {\n border-radius: calc(var(--radius) - 5px);\n }\n }\n .\\[\\&\\>span\\]\\:text-xs {\n &>span {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&\\>span\\]\\:opacity-70 {\n &>span {\n opacity: 70%;\n }\n }\n .\\[\\&\\>span\\:last-child\\]\\:truncate {\n &>span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n .\\[\\&\\>svg\\]\\:pointer-events-none {\n &>svg {\n pointer-events: none;\n }\n }\n .\\[\\&\\>svg\\]\\:size-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:size-3\\.5 {\n &>svg {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\]\\:size-4 {\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>svg\\]\\:h-2\\.5 {\n &>svg {\n height: calc(var(--spacing) * 2.5);\n }\n }\n .\\[\\&\\>svg\\]\\:h-3 {\n &>svg {\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:w-2\\.5 {\n &>svg {\n width: calc(var(--spacing) * 2.5);\n }\n }\n .\\[\\&\\>svg\\]\\:w-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:shrink-0 {\n &>svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&\\>svg\\]\\:translate-y-0\\.5 {\n &>svg {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .\\[\\&\\>svg\\]\\:text-current {\n &>svg {\n color: currentcolor;\n }\n }\n .\\[\\&\\>svg\\]\\:text-muted-foreground {\n &>svg {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&\\>svg\\]\\:text-sidebar-accent-foreground {\n &>svg {\n color: var(--sidebar-accent-foreground);\n }\n }\n .\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3\\.5 {\n &>svg:not([class*='size-']) {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n &>svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>tr\\]\\:last\\:border-b-0 {\n &>tr {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n .\\[\\&\\[data-panel-group-direction\\=vertical\\]\\>div\\]\\:rotate-90 {\n &[data-panel-group-direction=vertical]>div {\n rotate: 90deg;\n }\n }\n .\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180 {\n &[data-state=open]>svg {\n rotate: 180deg;\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-right-2 {\n [data-side=left][data-collapsible=offcanvas] & {\n right: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize {\n [data-side=left][data-state=collapsed] & {\n cursor: e-resize;\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-left-2 {\n [data-side=right][data-collapsible=offcanvas] & {\n left: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize {\n [data-side=right][data-state=collapsed] & {\n cursor: w-resize;\n }\n }\n .\\[\\[data-slot\\=card-content\\]_\\&\\]\\:bg-transparent {\n [data-slot=card-content] & {\n background-color: transparent;\n }\n }\n .\\[\\[data-slot\\=popover-content\\]_\\&\\]\\:bg-transparent {\n [data-slot=popover-content] & {\n background-color: transparent;\n }\n }\n .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-background\\/20 {\n [data-slot=tooltip-content] & {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 20%, transparent);\n }\n }\n }\n .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:text-background {\n [data-slot=tooltip-content] & {\n color: var(--background);\n }\n }\n .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-background\\/10 {\n &:is(.dark *) {\n [data-slot=tooltip-content] & {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 10%, transparent);\n }\n }\n }\n }\n .\\[\\[data-variant\\=legend\\]\\+\\&\\]\\:-mt-1\\.5 {\n [data-variant=legend]+& {\n margin-top: calc(var(--spacing) * -1.5);\n }\n }\n .\\[a\\&\\]\\:transition-colors {\n a& {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent\\/50 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-destructive\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-primary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-secondary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:text-accent-foreground {\n a& {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n }\n}\n@property --tw-animation-delay {\n syntax: \"*\";\n inherits: false;\n initial-value: 0s;\n}\n@property --tw-animation-direction {\n syntax: \"*\";\n inherits: false;\n initial-value: normal;\n}\n@property --tw-animation-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-animation-fill-mode {\n syntax: \"*\";\n inherits: false;\n initial-value: forwards;\n}\n@property --tw-animation-iteration-count {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n:root {\n --background: oklch(0.97 0.01 90);\n --foreground: oklch(0.2 0.02 265);\n --card: oklch(0.98 0.005 90);\n --card-foreground: oklch(0.2 0.02 265);\n --popover: oklch(0.98 0.005 90);\n --popover-foreground: oklch(0.2 0.02 265);\n --primary: oklch(0.45 0.15 25);\n --primary-foreground: oklch(0.98 0.01 90);\n --secondary: oklch(0.85 0.05 85);\n --secondary-foreground: oklch(0.3 0.05 50);\n --muted: oklch(0.92 0.01 90);\n --muted-foreground: oklch(0.45 0.02 265);\n --accent: oklch(0.94 0.02 85);\n --accent-foreground: oklch(0.3 0.05 50);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.98 0 0);\n --border: oklch(0.88 0.01 90);\n --input: oklch(0.88 0.01 90);\n --ring: oklch(0.45 0.15 25);\n --radius: 0.5rem;\n --sidebar: oklch(0.96 0.01 90);\n --sidebar-foreground: oklch(0.25 0.02 265);\n --sidebar-primary: oklch(0.45 0.15 25);\n --sidebar-primary-foreground: oklch(0.98 0.01 90);\n --sidebar-accent: oklch(0.93 0.01 90);\n --sidebar-accent-foreground: oklch(0.25 0.02 265);\n --sidebar-border: oklch(0.88 0.01 90);\n --sidebar-ring: oklch(0.45 0.15 25);\n --chart-1: oklch(0.45 0.15 25);\n --chart-2: oklch(0.65 0.12 50);\n --chart-3: oklch(0.35 0.08 200);\n --chart-4: oklch(0.55 0.05 265);\n --chart-5: oklch(0.75 0.1 85);\n}\n.dark {\n --background: oklch(0.12 0.01 265);\n --foreground: oklch(0.95 0.01 90);\n --card: oklch(0.15 0.01 265);\n --card-foreground: oklch(0.95 0.01 90);\n --popover: oklch(0.15 0.01 265);\n --popover-foreground: oklch(0.95 0.01 90);\n --primary: oklch(0.6 0.15 25);\n --primary-foreground: oklch(0.98 0.01 90);\n --secondary: oklch(0.3 0.05 50);\n --secondary-foreground: oklch(0.9 0.05 85);\n --muted: oklch(0.2 0.01 265);\n --muted-foreground: oklch(0.65 0.01 265);\n --accent: oklch(0.2 0.02 265);\n --accent-foreground: oklch(0.95 0.01 90);\n --destructive: oklch(0.396 0.141 25.723);\n --destructive-foreground: oklch(0.98 0 0);\n --border: oklch(0.25 0.01 265);\n --input: oklch(0.25 0.01 265);\n --ring: oklch(0.6 0.15 25);\n --sidebar: oklch(0.14 0.01 265);\n --sidebar-foreground: oklch(0.95 0.01 90);\n --sidebar-primary: oklch(0.6 0.15 25);\n --sidebar-primary-foreground: oklch(0.98 0.01 90);\n --sidebar-accent: oklch(0.2 0.01 265);\n --sidebar-accent-foreground: oklch(0.95 0.01 90);\n --sidebar-border: oklch(0.25 0.01 265);\n --sidebar-ring: oklch(0.6 0.15 25);\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n body {\n background-color: var(--background);\n color: var(--foreground);\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-family: \"Songti SC\", \"STSong\", \"SimSun\", \"Times New Roman\", serif;\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity,1);\n transform: translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity,1);\n transform: translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))));\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))));\n }\n to {\n height: 0;\n }\n}\n@keyframes caret-blink {\n 0%,70%,100% {\n opacity: 1;\n }\n 20%,50% {\n opacity: 0;\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-content: \"\";\n --tw-animation-delay: 0s;\n --tw-animation-direction: normal;\n --tw-animation-duration: initial;\n --tw-animation-fill-mode: forwards;\n --tw-animation-iteration-count: 1;\n --tw-enter-opacity: 1;\n --tw-enter-rotate: 0;\n --tw-enter-scale: 1;\n --tw-enter-translate-x: 0;\n --tw-enter-translate-y: 0;\n --tw-exit-opacity: 1;\n --tw-exit-rotate: 0;\n --tw-exit-scale: 1;\n --tw-exit-translate-x: 0;\n --tw-exit-translate-y: 0;\n }\n }\n}\n"],"names":[],"mappings":"AACA;EA62ME;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA72MJ;EAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAFF;EA6GE;;;;;;;EAAA;;;;;;;EAMA;;;;;;;;;;EASA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;;;EAKA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;;;;;EAAA;;;;;;;;;;;EAUA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;IACE;;;;IAEE;MAAgD;;;;;;EAKpD;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAyxLA;;;;;EAGE;IAAgD;;;;;EAIlD;;;;;EAIA;;;;;;;AAhiMF;;AAAA;EAiQE;;;;EAIA;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;;;;;;EAWA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAI3B;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;EAMA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAIE;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAMF;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;;EAKA;;;;;;EAKA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAG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"}}] + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/Documents/go-new/chinese-family-tree/app/globals.css"],"sourcesContent":["/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-orange-50: oklch(98% 0.016 73.684);\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-700: oklch(55.3% 0.195 38.402);\n --color-amber-700: oklch(55.5% 0.163 48.998);\n --color-yellow-50: oklch(98.7% 0.026 102.212);\n --color-yellow-200: oklch(94.5% 0.129 101.54);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-800: oklch(47.6% 0.114 61.907);\n --color-yellow-900: oklch(42.1% 0.095 57.708);\n --color-yellow-950: oklch(28.6% 0.066 53.813);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-100: oklch(93.2% 0.032 255.585);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-blue-950: oklch(28.2% 0.091 267.935);\n --color-purple-50: oklch(97.7% 0.014 308.299);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-500: oklch(62.7% 0.265 303.9);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-pink-50: oklch(97.1% 0.014 343.198);\n --color-pink-100: oklch(94.8% 0.028 342.258);\n --color-pink-200: oklch(89.9% 0.061 343.231);\n --color-pink-400: oklch(71.8% 0.202 349.761);\n --color-pink-700: oklch(52.5% 0.223 3.958);\n --color-pink-800: oklch(45.9% 0.187 3.815);\n --color-pink-950: oklch(28.4% 0.109 3.907);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-neutral-100: oklch(97% 0 0);\n --color-neutral-400: oklch(70.8% 0 0);\n --color-neutral-500: oklch(55.6% 0 0);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-6xl: 72rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --radius-xs: 0.125rem;\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: \"Geist\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n --default-mono-font-family: \"Geist Mono\", monospace;\n --color-border: var(--border);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .\\@container\\/card-header {\n container-type: inline-size;\n container-name: card-header;\n }\n .\\@container\\/field-group {\n container-type: inline-size;\n container-name: field-group;\n }\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .invisible {\n visibility: hidden;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n .-top-1 {\n top: calc(var(--spacing) * -1);\n }\n .-top-3 {\n top: calc(var(--spacing) * -3);\n }\n .-top-12 {\n top: calc(var(--spacing) * -12);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1 {\n top: calc(var(--spacing) * 1);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-2\\.5 {\n top: calc(var(--spacing) * 2.5);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-20 {\n top: calc(var(--spacing) * 20);\n }\n .top-\\[1px\\] {\n top: 1px;\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .top-\\[60\\%\\] {\n top: 60%;\n }\n .top-full {\n top: 100%;\n }\n .-right-0\\.5 {\n right: calc(var(--spacing) * -0.5);\n }\n .-right-1 {\n right: calc(var(--spacing) * -1);\n }\n .-right-12 {\n right: calc(var(--spacing) * -12);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1 {\n right: calc(var(--spacing) * 1);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .-bottom-0\\.5 {\n bottom: calc(var(--spacing) * -0.5);\n }\n .-bottom-1 {\n bottom: calc(var(--spacing) * -1);\n }\n .-bottom-12 {\n bottom: calc(var(--spacing) * -12);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .-left-12 {\n left: calc(var(--spacing) * -12);\n }\n .-left-16 {\n left: calc(var(--spacing) * -16);\n }\n .-left-\\[9px\\] {\n left: calc(9px * -1);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-2\\.5 {\n left: calc(var(--spacing) * 2.5);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .isolate {\n isolation: isolate;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-30 {\n z-index: 30;\n }\n .z-50 {\n z-index: 50;\n }\n .z-\\[1\\] {\n z-index: 1;\n }\n .z-\\[100\\] {\n z-index: 100;\n }\n .order-first {\n order: -9999;\n }\n .order-last {\n order: 9999;\n }\n .col-span-full {\n grid-column: 1 / -1;\n }\n .col-start-2 {\n grid-column-start: 2;\n }\n .row-span-2 {\n grid-row: span 2 / span 2;\n }\n .row-start-1 {\n grid-row-start: 1;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .\\!m-0 {\n margin: calc(var(--spacing) * 0) !important;\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-3\\.5 {\n margin-inline: calc(var(--spacing) * 3.5);\n }\n .mx-4 {\n margin-inline: calc(var(--spacing) * 4);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .-my-2 {\n margin-block: calc(var(--spacing) * -2);\n }\n .my-0 {\n margin-block: calc(var(--spacing) * 0);\n }\n .my-0\\.5 {\n margin-block: calc(var(--spacing) * 0.5);\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n .mt-0 {\n margin-top: calc(var(--spacing) * 0);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-auto {\n margin-top: auto;\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n .mr-8 {\n margin-right: calc(var(--spacing) * 8);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .-ml-4 {\n margin-left: calc(var(--spacing) * -4);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-6 {\n margin-left: calc(var(--spacing) * 6);\n }\n .ml-auto {\n margin-left: auto;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .table-caption {\n display: table-caption;\n }\n .table-cell {\n display: table-cell;\n }\n .table-row {\n display: table-row;\n }\n .field-sizing-content {\n field-sizing: content;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .size-\\(--cell-size\\) {\n width: var(--cell-size);\n height: var(--cell-size);\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n height: calc(var(--spacing) * 2.5);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-6 {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n .size-7 {\n width: calc(var(--spacing) * 7);\n height: calc(var(--spacing) * 7);\n }\n .size-8 {\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-10 {\n width: calc(var(--spacing) * 10);\n height: calc(var(--spacing) * 10);\n }\n .size-auto {\n width: auto;\n height: auto;\n }\n .size-full {\n width: 100%;\n height: 100%;\n }\n .h-\\(--cell-size\\) {\n height: var(--cell-size);\n }\n .h-1 {\n height: calc(var(--spacing) * 1);\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-2\\.5 {\n height: calc(var(--spacing) * 2.5);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-\\[1\\.15rem\\] {\n height: 1.15rem;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-\\[600px\\] {\n height: 600px;\n }\n .h-\\[calc\\(100\\%-1px\\)\\] {\n height: calc(100% - 1px);\n }\n .h-\\[var\\(--radix-navigation-menu-viewport-height\\)\\] {\n height: var(--radix-navigation-menu-viewport-height);\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .h-svh {\n height: 100svh;\n }\n .max-h-\\(--radix-context-menu-content-available-height\\) {\n max-height: var(--radix-context-menu-content-available-height);\n }\n .max-h-\\(--radix-dropdown-menu-content-available-height\\) {\n max-height: var(--radix-dropdown-menu-content-available-height);\n }\n .max-h-\\(--radix-select-content-available-height\\) {\n max-height: var(--radix-select-content-available-height);\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[60vh\\] {\n max-height: 60vh;\n }\n .max-h-\\[70vh\\] {\n max-height: 70vh;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .max-h-screen {\n max-height: 100vh;\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-4 {\n min-height: calc(var(--spacing) * 4);\n }\n .min-h-16 {\n min-height: calc(var(--spacing) * 16);\n }\n .min-h-\\[200px\\] {\n min-height: 200px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .min-h-svh {\n min-height: 100svh;\n }\n .w-\\(--cell-size\\) {\n width: var(--cell-size);\n }\n .w-\\(--sidebar-width\\) {\n width: var(--sidebar-width);\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\/4 {\n width: calc(3/4 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-7 {\n width: calc(var(--spacing) * 7);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-\\[100px\\] {\n width: 100px;\n }\n .w-\\[200px\\] {\n width: 200px;\n }\n .w-\\[var\\(--radix-dropdown-menu-trigger-width\\)\\] {\n width: var(--radix-dropdown-menu-trigger-width);\n }\n .w-auto {\n width: auto;\n }\n .w-fit {\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-px {\n width: 1px;\n }\n .max-w-\\(--skeleton-width\\) {\n max-width: var(--skeleton-width);\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-3xl {\n max-width: var(--container-3xl);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-max {\n max-width: max-content;\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .max-w-none {\n max-width: none;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .min-w-\\(--cell-size\\) {\n min-width: var(--cell-size);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-5 {\n min-width: calc(var(--spacing) * 5);\n }\n .min-w-8 {\n min-width: calc(var(--spacing) * 8);\n }\n .min-w-9 {\n min-width: calc(var(--spacing) * 9);\n }\n .min-w-10 {\n min-width: calc(var(--spacing) * 10);\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[12rem\\] {\n min-width: 12rem;\n }\n .min-w-\\[200px\\] {\n min-width: 200px;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .min-w-fit {\n min-width: fit-content;\n }\n .min-w-full {\n min-width: 100%;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .grow {\n flex-grow: 1;\n }\n .grow-0 {\n flex-grow: 0;\n }\n .basis-full {\n flex-basis: 100%;\n }\n .caption-bottom {\n caption-side: bottom;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .origin-\\(--radix-context-menu-content-transform-origin\\) {\n transform-origin: var(--radix-context-menu-content-transform-origin);\n }\n .origin-\\(--radix-dropdown-menu-content-transform-origin\\) {\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n }\n .origin-\\(--radix-hover-card-content-transform-origin\\) {\n transform-origin: var(--radix-hover-card-content-transform-origin);\n }\n .origin-\\(--radix-menubar-content-transform-origin\\) {\n transform-origin: var(--radix-menubar-content-transform-origin);\n }\n .origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n .origin-\\(--radix-select-content-transform-origin\\) {\n transform-origin: var(--radix-select-content-transform-origin);\n }\n .origin-\\(--radix-tooltip-content-transform-origin\\) {\n transform-origin: var(--radix-tooltip-content-transform-origin);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-px {\n --tw-translate-x: -1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-px {\n --tw-translate-x: 1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0\\.5 {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[2px\\] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[calc\\(-50\\%_-_2px\\)\\] {\n --tw-translate-y: calc(-50% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-45 {\n rotate: 45deg;\n }\n .rotate-90 {\n rotate: 90deg;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-caret-blink {\n animation: caret-blink 1.25s ease-out infinite;\n }\n .animate-in {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-move {\n cursor: move;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-text {\n cursor: text;\n }\n .touch-none {\n touch-action: none;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .scroll-my-1 {\n scroll-margin-block: calc(var(--spacing) * 1);\n }\n .scroll-py-1 {\n scroll-padding-block: calc(var(--spacing) * 1);\n }\n .list-inside {\n list-style-position: inside;\n }\n .list-disc {\n list-style-type: disc;\n }\n .list-none {\n list-style-type: none;\n }\n .auto-rows-min {\n grid-auto-rows: min-content;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-\\[0_1fr\\] {\n grid-template-columns: 0 1fr;\n }\n .grid-rows-\\[auto_auto\\] {\n grid-template-rows: auto auto;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-baseline {\n align-items: baseline;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .justify-items-start {\n justify-items: start;\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-7 {\n gap: calc(var(--spacing) * 7);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .space-y-0\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-4 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .gap-y-0\\.5 {\n row-gap: calc(var(--spacing) * 0.5);\n }\n .self-start {\n align-self: flex-start;\n }\n .self-stretch {\n align-self: stretch;\n }\n .justify-self-end {\n justify-self: flex-end;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-\\[2px\\] {\n border-radius: 2px;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\] {\n border-radius: calc(var(--radius) - 5px);\n }\n .rounded-\\[inherit\\] {\n border-radius: inherit;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius);\n }\n .rounded-md {\n border-radius: calc(var(--radius) - 2px);\n }\n .rounded-none {\n border-radius: 0;\n }\n .rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n }\n .rounded-xl {\n border-radius: calc(var(--radius) + 4px);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .rounded-l-md {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n .rounded-tl-sm {\n border-top-left-radius: calc(var(--radius) - 4px);\n }\n .rounded-r-md {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-\\[1\\.5px\\] {\n border-style: var(--tw-border-style);\n border-width: 1.5px;\n }\n .border-y {\n border-block-style: var(--tw-border-style);\n border-block-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-\\(--color-border\\) {\n border-color: var(--color-border);\n }\n .border-background {\n border-color: var(--background);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-200\\/50 {\n border-color: color-mix(in srgb, oklch(88.2% 0.059 254.128) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-blue-200) 50%, transparent);\n }\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-border {\n border-color: var(--border);\n }\n .border-border\\/40 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 40%, transparent);\n }\n }\n .border-border\\/50 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n .border-border\\/60 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 60%, transparent);\n }\n }\n .border-destructive {\n border-color: var(--destructive);\n }\n .border-destructive\\/20 {\n border-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-input {\n border-color: var(--input);\n }\n .border-muted-foreground\\/50 {\n border-color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--muted-foreground) 50%, transparent);\n }\n }\n .border-orange-200 {\n border-color: var(--color-orange-200);\n }\n .border-pink-200\\/50 {\n border-color: color-mix(in srgb, oklch(89.9% 0.061 343.231) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-pink-200) 50%, transparent);\n }\n }\n .border-primary {\n border-color: var(--primary);\n }\n .border-primary\\/20 {\n border-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n .border-purple-200 {\n border-color: var(--color-purple-200);\n }\n .border-red-500 {\n border-color: var(--color-red-500);\n }\n .border-sidebar-border {\n border-color: var(--sidebar-border);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-yellow-400 {\n border-color: var(--color-yellow-400);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .border-l-transparent {\n border-left-color: transparent;\n }\n .bg-\\(--color-bg\\) {\n background-color: var(--color-bg);\n }\n .bg-accent {\n background-color: var(--accent);\n }\n .bg-background {\n background-color: var(--background);\n }\n .bg-background\\/50 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 50%, transparent);\n }\n }\n .bg-background\\/60 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 60%, transparent);\n }\n }\n .bg-background\\/80 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 80%, transparent);\n }\n }\n .bg-background\\/90 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 90%, transparent);\n }\n }\n .bg-background\\/95 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 95%, transparent);\n }\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-50\\/50 {\n background-color: color-mix(in srgb, oklch(97% 0.014 254.604) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-50) 50%, transparent);\n }\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-border {\n background-color: var(--border);\n }\n .bg-card {\n background-color: var(--card);\n }\n .bg-card\\/50 {\n background-color: var(--card);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--card) 50%, transparent);\n }\n }\n .bg-destructive {\n background-color: var(--destructive);\n }\n .bg-destructive\\/10 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n .bg-destructive\\/15 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 15%, transparent);\n }\n }\n .bg-foreground {\n background-color: var(--foreground);\n }\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-gray-500 {\n background-color: var(--color-gray-500);\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-input {\n background-color: var(--input);\n }\n .bg-muted {\n background-color: var(--muted);\n }\n .bg-muted\\/30 {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\n }\n }\n .bg-muted\\/50 {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n .bg-neutral-100 {\n background-color: var(--color-neutral-100);\n }\n .bg-neutral-400 {\n background-color: var(--color-neutral-400);\n }\n .bg-orange-50 {\n background-color: var(--color-orange-50);\n }\n .bg-orange-500 {\n background-color: var(--color-orange-500);\n }\n .bg-pink-50\\/50 {\n background-color: color-mix(in srgb, oklch(97.1% 0.014 343.198) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-pink-50) 50%, transparent);\n }\n }\n .bg-pink-100 {\n background-color: var(--color-pink-100);\n }\n .bg-popover {\n background-color: var(--popover);\n }\n .bg-primary {\n background-color: var(--primary);\n }\n .bg-primary\\/5 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n }\n .bg-primary\\/10 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n }\n }\n .bg-primary\\/20 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n .bg-purple-50 {\n background-color: var(--color-purple-50);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-purple-500 {\n background-color: var(--color-purple-500);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-500 {\n background-color: var(--color-red-500);\n }\n .bg-secondary {\n background-color: var(--secondary);\n }\n .bg-sidebar {\n background-color: var(--sidebar);\n }\n .bg-sidebar-border {\n background-color: var(--sidebar-border);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n .bg-gradient-to-br {\n --tw-gradient-position: to bottom right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-\\[url\\(\\'https\\:\\/\\/www\\.transparenttextures\\.com\\/patterns\\/rice-paper\\.png\\'\\)\\] {\n background-image: url('https://www.transparenttextures.com/patterns/rice-paper.png');\n }\n .from-card {\n --tw-gradient-from: var(--card);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-primary\\/5 {\n --tw-gradient-from: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-primary\\/50 {\n --tw-gradient-from: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--primary) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-background {\n --tw-gradient-via: var(--background);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-primary {\n --tw-gradient-via: var(--primary);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-card\\/50 {\n --tw-gradient-to: var(--card);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--card) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-primary\\/50 {\n --tw-gradient-to: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--primary) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-secondary\\/5 {\n --tw-gradient-to: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--secondary) 5%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-repeat {\n background-repeat: repeat;\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-foreground {\n fill: var(--foreground);\n }\n .fill-primary {\n fill: var(--primary);\n }\n .object-contain {\n object-fit: contain;\n }\n .object-cover {\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .p-\\[3px\\] {\n padding: 3px;\n }\n .p-px {\n padding: 1px;\n }\n .px-\\(--cell-size\\) {\n padding-inline: var(--cell-size);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .pt-0 {\n padding-top: calc(var(--spacing) * 0);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-20 {\n padding-top: calc(var(--spacing) * 20);\n }\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-2\\.5 {\n padding-right: calc(var(--spacing) * 2.5);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-20 {\n padding-bottom: calc(var(--spacing) * 20);\n }\n .pl-1 {\n padding-left: calc(var(--spacing) * 1);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .align-middle {\n vertical-align: middle;\n }\n .font-mono {\n font-family: \"Geist Mono\", monospace;\n }\n .font-sans {\n font-family: \"Geist\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n }\n .font-serif {\n font-family: \"Songti SC\", \"STSong\", \"SimSun\", \"Times New Roman\", serif;\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-sm\\/relaxed {\n font-size: var(--text-sm);\n line-height: var(--leading-relaxed);\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .leading-normal {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-balance {\n text-wrap: balance;\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .break-all {\n word-break: break-all;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre-line {\n white-space: pre-line;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-accent-foreground {\n color: var(--accent-foreground);\n }\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n .text-background {\n color: var(--background);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-card-foreground {\n color: var(--card-foreground);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-foreground {\n color: var(--foreground);\n }\n .text-foreground\\/50 {\n color: var(--foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--foreground) 50%, transparent);\n }\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-muted-foreground\\/60 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 60%, transparent);\n }\n }\n .text-muted-foreground\\/70 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 70%, transparent);\n }\n }\n .text-muted-foreground\\/80 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 80%, transparent);\n }\n }\n .text-neutral-500 {\n color: var(--color-neutral-500);\n }\n .text-orange-700 {\n color: var(--color-orange-700);\n }\n .text-pink-400 {\n color: var(--color-pink-400);\n }\n .text-pink-700 {\n color: var(--color-pink-700);\n }\n .text-popover-foreground {\n color: var(--popover-foreground);\n }\n .text-primary {\n color: var(--primary);\n }\n .text-primary-foreground {\n color: var(--primary-foreground);\n }\n .text-primary\\/70 {\n color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--primary) 70%, transparent);\n }\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-secondary-foreground {\n color: var(--secondary-foreground);\n }\n .text-sidebar-foreground {\n color: var(--sidebar-foreground);\n }\n .text-sidebar-foreground\\/70 {\n color: var(--sidebar-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--sidebar-foreground) 70%, transparent);\n }\n }\n .text-white {\n color: var(--color-white);\n }\n .text-yellow-800 {\n color: var(--color-yellow-800);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .italic {\n font-style: italic;\n }\n .tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .underline {\n text-decoration-line: underline;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-90 {\n opacity: 90%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-border\\)\\)\\] {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-none {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-0 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-4 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-background {\n --tw-ring-color: var(--background);\n }\n .ring-blue-200 {\n --tw-ring-color: var(--color-blue-200);\n }\n .ring-ring\\/50 {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n .ring-sidebar-ring {\n --tw-ring-color: var(--sidebar-ring);\n }\n .ring-yellow-200 {\n --tw-ring-color: var(--color-yellow-200);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--background);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .backdrop-blur {\n --tw-backdrop-blur: blur(8px);\n -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,);\n 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,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[left\\,right\\,width\\] {\n transition-property: left,right,width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[margin\\,opacity\\] {\n transition-property: margin,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\,height\\,padding\\] {\n transition-property: width,height,padding;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\] {\n transition-property: width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-1000 {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .ease-linear {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n .fade-in-0 {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n .slide-in-from-bottom-5 {\n --tw-enter-translate-y: calc(5*var(--spacing));\n --tw-enter-translate-y: calc(.05*100%);\n }\n .zoom-in-95 {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n .\\[--cell-size\\:--spacing\\(8\\)\\] {\n --cell-size: calc(var(--spacing) * 8);\n }\n .slide-in-from-top-2 {\n --tw-enter-translate-y: calc(2*var(--spacing)*-1);\n }\n .group-last\\:hidden {\n &:is(:where(.group):last-child *) {\n display: none;\n }\n }\n .group-focus-within\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):focus-within *) {\n opacity: 100%;\n }\n }\n .group-hover\\:scale-110 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .group-hover\\:bg-primary\\/20 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-hover\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-has-data-\\[sidebar\\=menu-action\\]\\/menu-item\\:pr-8 {\n &:is(:where(.group\\/menu-item):has(*[data-sidebar=\"menu-action\"]) *) {\n padding-right: calc(var(--spacing) * 8);\n }\n }\n .group-has-\\[\\[data-orientation\\=horizontal\\]\\]\\/field\\:text-balance {\n &:is(:where(.group\\/field):has(*:is([data-orientation=horizontal])) *) {\n text-wrap: balance;\n }\n }\n .group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:translate-y-0\\.5 {\n &:is(:where(.group\\/item):has(*:is([data-slot=item-description])) *) {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:self-start {\n &:is(:where(.group\\/item):has(*:is([data-slot=item-description])) *) {\n align-self: flex-start;\n }\n }\n .group-has-\\[\\>input\\]\\/input-group\\:pt-2\\.5 {\n &:is(:where(.group\\/input-group):has(>input) *) {\n padding-top: calc(var(--spacing) * 2.5);\n }\n }\n .group-has-\\[\\>input\\]\\/input-group\\:pb-2\\.5 {\n &:is(:where(.group\\/input-group):has(>input) *) {\n padding-bottom: calc(var(--spacing) * 2.5);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:-mt-8 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n margin-top: calc(var(--spacing) * -8);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n display: none;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:size-8\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--spacing) * 8) !important;\n height: calc(var(--spacing) * 8) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\(--sidebar-width-icon\\) {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: var(--sidebar-width-icon);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)));\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\+2px\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:overflow-hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-0\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 0) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-2\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 2) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:opacity-0 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n opacity: 0%;\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n right: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n left: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:w-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n width: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[disabled\\=true\\]\\:pointer-events-none {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n pointer-events: none;\n }\n }\n .group-data-\\[disabled\\=true\\]\\:opacity-50 {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[disabled\\=true\\]\\/field\\:opacity-50 {\n &:is(:where(.group\\/field)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50 {\n &:is(:where(.group\\/input-group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:relative {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n position: relative;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:z-10 {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n z-index: 10;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:border-ring {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n border-color: var(--ring);\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:ring-\\[3px\\] {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:ring-ring\\/50 {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .group-data-\\[side\\=left\\]\\:-right-4 {\n &:is(:where(.group)[data-side=\"left\"] *) {\n right: calc(var(--spacing) * -4);\n }\n }\n .group-data-\\[side\\=left\\]\\:border-r {\n &:is(:where(.group)[data-side=\"left\"] *) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .group-data-\\[side\\=right\\]\\:left-0 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n left: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[side\\=right\\]\\:rotate-180 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[side\\=right\\]\\:border-l {\n &:is(:where(.group)[data-side=\"right\"] *) {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .group-data-\\[state\\=open\\]\\:rotate-180 {\n &:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:rounded-lg {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-radius: var(--radius);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border-sidebar-border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-color: var(--sidebar-border);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:shadow-sm {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[variant\\=outline\\]\\/field-group\\:-mb-2 {\n &:is(:where(.group\\/field-group)[data-variant=\"outline\"] *) {\n margin-bottom: calc(var(--spacing) * -2);\n }\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:block {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"bottom\"] *) {\n display: block;\n }\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:text-center {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"bottom\"] *) {\n text-align: center;\n }\n }\n .group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:text-center {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"top\"] *) {\n text-align: center;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:top-full {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n top: 100%;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:mt-1\\.5 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n margin-top: calc(var(--spacing) * 1.5);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:overflow-hidden {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:rounded-md {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:border {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:bg-popover {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n background-color: var(--popover);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:text-popover-foreground {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n color: var(--popover-foreground);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:shadow {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:duration-200 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n }\n .group-\\[\\.destructive\\]\\:border-muted\\/40 {\n &:is(:where(.group):is(.destructive) *) {\n border-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--muted) 40%, transparent);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:text-red-300 {\n &:is(:where(.group):is(.destructive) *) {\n color: var(--color-red-300);\n }\n }\n .peer-hover\\/menu-button\\:text-sidebar-accent-foreground {\n &:is(:where(.peer\\/menu-button):hover ~ *) {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-50 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n }\n .peer-data-\\[active\\=true\\]\\/menu-button\\:text-sidebar-accent-foreground {\n &:is(:where(.peer\\/menu-button)[data-active=\"true\"] ~ *) {\n color: var(--sidebar-accent-foreground);\n }\n }\n .peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"default\"] ~ *) {\n top: calc(var(--spacing) * 1.5);\n }\n }\n .peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"lg\"] ~ *) {\n top: calc(var(--spacing) * 2.5);\n }\n }\n .peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1 {\n &:is(:where(.peer\\/menu-button)[data-size=\"sm\"] ~ *) {\n top: calc(var(--spacing) * 1);\n }\n }\n .selection\\:bg-primary {\n & *::selection {\n background-color: var(--primary);\n }\n &::selection {\n background-color: var(--primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::selection {\n color: var(--primary-foreground);\n }\n &::selection {\n color: var(--primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .file\\:text-foreground {\n &::file-selector-button {\n color: var(--foreground);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .after\\:absolute {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .after\\:-inset-2 {\n &::after {\n content: var(--tw-content);\n inset: calc(var(--spacing) * -2);\n }\n }\n .after\\:inset-y-0 {\n &::after {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-1\\/2 {\n &::after {\n content: var(--tw-content);\n left: calc(1/2 * 100%);\n }\n }\n .after\\:w-1 {\n &::after {\n content: var(--tw-content);\n width: calc(var(--spacing) * 1);\n }\n }\n .after\\:w-\\[2px\\] {\n &::after {\n content: var(--tw-content);\n width: 2px;\n }\n }\n .after\\:-translate-x-1\\/2 {\n &::after {\n content: var(--tw-content);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:after\\:left-full {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n &::after {\n content: var(--tw-content);\n left: 100%;\n }\n }\n }\n .first\\:rounded-l-md {\n &:first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .first\\:border-l {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .last\\:mt-0 {\n &:last-child {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .last\\:rounded-r-md {\n &:last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .last\\:border-0 {\n &:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .last\\:border-b-0 {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:border-blue-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-400);\n }\n }\n }\n .hover\\:border-primary {\n &:hover {\n @media (hover: hover) {\n border-color: var(--primary);\n }\n }\n }\n .hover\\:border-primary\\/30 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--primary) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n .hover\\:bg-accent\\/5 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 5%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-background {\n &:hover {\n @media (hover: hover) {\n background-color: var(--background);\n }\n }\n }\n .hover\\:bg-destructive {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n }\n }\n }\n .hover\\:bg-muted\\/30 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-secondary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-sidebar-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--sidebar-accent);\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n .hover\\:text-destructive {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive);\n }\n }\n }\n .hover\\:text-destructive-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive-foreground);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--foreground);\n }\n }\n }\n .hover\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--muted-foreground);\n }\n }\n }\n .hover\\:text-primary {\n &:hover {\n @media (hover: hover) {\n color: var(--primary);\n }\n }\n }\n .hover\\:text-sidebar-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-90 {\n &:hover {\n @media (hover: hover) {\n opacity: 90%;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .hover\\:shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-accent\\)\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-lg {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:ring-4 {\n &:hover {\n @media (hover: hover) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:group-data-\\[collapsible\\=offcanvas\\]\\:bg-sidebar {\n &:hover {\n @media (hover: hover) {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n background-color: var(--sidebar);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:border-destructive\\/30 {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--destructive) 30%, transparent);\n }\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:bg-destructive {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive-foreground);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:text-red-50 {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-50);\n }\n }\n }\n }\n .hover\\:after\\:bg-sidebar-border {\n &:hover {\n @media (hover: hover) {\n &::after {\n content: var(--tw-content);\n background-color: var(--sidebar-border);\n }\n }\n }\n }\n .focus\\:z-10 {\n &:focus {\n z-index: 10;\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--accent);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--accent-foreground);\n }\n }\n .focus\\:opacity-100 {\n &:focus {\n opacity: 100%;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-destructive {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-color: var(--destructive);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-red-400 {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-color: var(--color-red-400);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600 {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-offset-color: var(--color-red-600);\n }\n }\n }\n .focus-visible\\:z-10 {\n &:focus-visible {\n z-index: 10;\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--ring);\n }\n }\n .focus-visible\\:ring-0 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-1 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-4 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-primary {\n &:focus-visible {\n --tw-ring-color: var(--primary);\n }\n }\n .focus-visible\\:ring-ring {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .focus-visible\\:ring-offset-1 {\n &:focus-visible {\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-visible\\:outline-hidden {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus-visible\\:outline-1 {\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n }\n .focus-visible\\:outline-ring {\n &:focus-visible {\n outline-color: var(--ring);\n }\n }\n .active\\:bg-sidebar-accent {\n &:active {\n background-color: var(--sidebar-accent);\n }\n }\n .active\\:text-sidebar-accent-foreground {\n &:active {\n color: var(--sidebar-accent-foreground);\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .in-data-\\[side\\=left\\]\\:cursor-w-resize {\n :where(*[data-side=\"left\"]) & {\n cursor: w-resize;\n }\n }\n .in-data-\\[side\\=right\\]\\:cursor-e-resize {\n :where(*[data-side=\"right\"]) & {\n cursor: e-resize;\n }\n }\n .has-focus\\:border-ring {\n &:has(*:focus) {\n border-color: var(--ring);\n }\n }\n .has-focus\\:ring-\\[3px\\] {\n &:has(*:focus) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .has-focus\\:ring-ring\\/50 {\n &:has(*:focus) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .has-disabled\\:opacity-50 {\n &:has(*:disabled) {\n opacity: 50%;\n }\n }\n .has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\] {\n &:has(*[data-slot=\"card-action\"]) {\n grid-template-columns: 1fr auto;\n }\n }\n .has-data-\\[state\\=checked\\]\\:border-primary {\n &:has(*[data-state=\"checked\"]) {\n border-color: var(--primary);\n }\n }\n .has-data-\\[state\\=checked\\]\\:bg-primary\\/5 {\n &:has(*[data-state=\"checked\"]) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n }\n }\n .has-data-\\[variant\\=inset\\]\\:bg-sidebar {\n &:has(*[data-variant=\"inset\"]) {\n background-color: var(--sidebar);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n border-color: var(--ring);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-\\[3px\\] {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50 {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive {\n &:has(*:is([data-slot][aria-invalid=true])) {\n border-color: var(--destructive);\n }\n }\n .has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20 {\n &:has(*:is([data-slot][aria-invalid=true])) {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto {\n &:has(>[data-align=block-end]) {\n height: auto;\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col {\n &:has(>[data-align=block-end]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto {\n &:has(>[data-align=block-start]) {\n height: auto;\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col {\n &:has(>[data-align=block-start]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2 {\n &:has(>[data-slot=button-group]) {\n gap: calc(var(--spacing) * 2);\n }\n }\n .has-\\[\\>\\[data-slot\\=checkbox-group\\]\\]\\:gap-3 {\n &:has(>[data-slot=checkbox-group]) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start {\n &:has(>[data-slot=field-content]) {\n align-items: flex-start;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:w-full {\n &:has(>[data-slot=field]) {\n width: 100%;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:flex-col {\n &:has(>[data-slot=field]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:rounded-md {\n &:has(>[data-slot=field]) {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:border {\n &:has(>[data-slot=field]) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .has-\\[\\>\\[data-slot\\=radio-group\\]\\]\\:gap-3 {\n &:has(>[data-slot=radio-group]) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>button\\]\\:mr-\\[-0\\.4rem\\] {\n &:has(>button) {\n margin-right: -0.4rem;\n }\n }\n .has-\\[\\>button\\]\\:ml-\\[-0\\.45rem\\] {\n &:has(>button) {\n margin-left: -0.45rem;\n }\n }\n .has-\\[\\>kbd\\]\\:mr-\\[-0\\.35rem\\] {\n &:has(>kbd) {\n margin-right: -0.35rem;\n }\n }\n .has-\\[\\>kbd\\]\\:ml-\\[-0\\.35rem\\] {\n &:has(>kbd) {\n margin-left: -0.35rem;\n }\n }\n .has-\\[\\>svg\\]\\:grid-cols-\\[calc\\(var\\(--spacing\\)\\*4\\)_1fr\\] {\n &:has(>svg) {\n grid-template-columns: calc(var(--spacing) * 4) 1fr;\n }\n }\n .has-\\[\\>svg\\]\\:gap-x-3 {\n &:has(>svg) {\n column-gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:p-0 {\n &:has(>svg) {\n padding: calc(var(--spacing) * 0);\n }\n }\n .has-\\[\\>svg\\]\\:px-2 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .has-\\[\\>textarea\\]\\:h-auto {\n &:has(>textarea) {\n height: auto;\n }\n }\n .aria-disabled\\:pointer-events-none {\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .aria-disabled\\:opacity-50 {\n &[aria-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .aria-selected\\:text-muted-foreground {\n &[aria-selected=\"true\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:z-10 {\n &[data-active=\"true\"] {\n z-index: 10;\n }\n }\n .data-\\[active\\=true\\]\\:border-ring {\n &[data-active=\"true\"] {\n border-color: var(--ring);\n }\n }\n .data-\\[active\\=true\\]\\:bg-accent\\/50 {\n &[data-active=\"true\"] {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:bg-sidebar-accent {\n &[data-active=\"true\"] {\n background-color: var(--sidebar-accent);\n }\n }\n .data-\\[active\\=true\\]\\:font-medium {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .data-\\[active\\=true\\]\\:font-semibold {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .data-\\[active\\=true\\]\\:text-accent-foreground {\n &[data-active=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:text-foreground {\n &[data-active=\"true\"] {\n color: var(--foreground);\n }\n }\n .data-\\[active\\=true\\]\\:text-sidebar-accent-foreground {\n &[data-active=\"true\"] {\n color: var(--sidebar-accent-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:ring-\\[3px\\] {\n &[data-active=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[active\\=true\\]\\:ring-ring\\/50 {\n &[data-active=\"true\"] {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:hover\\:bg-accent {\n &[data-active=\"true\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .data-\\[active\\=true\\]\\:focus\\:bg-accent {\n &[data-active=\"true\"] {\n &:focus {\n background-color: var(--accent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:aria-invalid\\:border-destructive {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n }\n .data-\\[active\\=true\\]\\:aria-invalid\\:ring-destructive\\/20 {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive {\n &[data-error=\"true\"] {\n color: var(--destructive);\n }\n }\n .data-\\[inset\\]\\:pl-8 {\n &[data-inset] {\n padding-left: calc(var(--spacing) * 8);\n }\n }\n .data-\\[invalid\\=true\\]\\:text-destructive {\n &[data-invalid=\"true\"] {\n color: var(--destructive);\n }\n }\n .data-\\[motion\\=from-end\\]\\:slide-in-from-right-52 {\n &[data-motion=\"from-end\"] {\n --tw-enter-translate-x: calc(52*var(--spacing));\n }\n }\n .data-\\[motion\\=from-start\\]\\:slide-in-from-left-52 {\n &[data-motion=\"from-start\"] {\n --tw-enter-translate-x: calc(52*var(--spacing)*-1);\n }\n }\n .data-\\[motion\\=to-end\\]\\:slide-out-to-right-52 {\n &[data-motion=\"to-end\"] {\n --tw-exit-translate-x: calc(52*var(--spacing));\n }\n }\n .data-\\[motion\\=to-start\\]\\:slide-out-to-left-52 {\n &[data-motion=\"to-start\"] {\n --tw-exit-translate-x: calc(52*var(--spacing)*-1);\n }\n }\n .data-\\[motion\\^\\=from-\\]\\:animate-in {\n &[data-motion^=\"from-\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[motion\\^\\=from-\\]\\:fade-in {\n &[data-motion^=\"from-\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[motion\\^\\=to-\\]\\:animate-out {\n &[data-motion^=\"to-\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[motion\\^\\=to-\\]\\:fade-out {\n &[data-motion^=\"to-\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-1\\.5 {\n &[data-orientation=\"horizontal\"] {\n height: calc(var(--spacing) * 1.5);\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-full {\n &[data-orientation=\"horizontal\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-px {\n &[data-orientation=\"horizontal\"] {\n height: 1px;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:w-full {\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-auto {\n &[data-orientation=\"vertical\"] {\n height: auto;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-full {\n &[data-orientation=\"vertical\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:min-h-44 {\n &[data-orientation=\"vertical\"] {\n min-height: calc(var(--spacing) * 44);\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-1\\.5 {\n &[data-orientation=\"vertical\"] {\n width: calc(var(--spacing) * 1.5);\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-auto {\n &[data-orientation=\"vertical\"] {\n width: auto;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-full {\n &[data-orientation=\"vertical\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-px {\n &[data-orientation=\"vertical\"] {\n width: 1px;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:flex-col {\n &[data-orientation=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:h-px {\n &[data-panel-group-direction=\"vertical\"] {\n height: 1px;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:w-full {\n &[data-panel-group-direction=\"vertical\"] {\n width: 100%;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:flex-col {\n &[data-panel-group-direction=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:left-0 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:h-1 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n height: calc(var(--spacing) * 1);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:w-full {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n width: 100%;\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:translate-x-0 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:-translate-y-1\\/2 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[range-end\\=true\\]\\:rounded-md {\n &[data-range-end=\"true\"] {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-end\\=true\\]\\:rounded-r-md {\n &[data-range-end=\"true\"] {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-end\\=true\\]\\:bg-primary {\n &[data-range-end=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[range-end\\=true\\]\\:text-primary-foreground {\n &[data-range-end=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[range-middle\\=true\\]\\:rounded-none {\n &[data-range-middle=\"true\"] {\n border-radius: 0;\n }\n }\n .data-\\[range-middle\\=true\\]\\:bg-accent {\n &[data-range-middle=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[range-middle\\=true\\]\\:text-accent-foreground {\n &[data-range-middle=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[range-start\\=true\\]\\:rounded-md {\n &[data-range-start=\"true\"] {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-start\\=true\\]\\:rounded-l-md {\n &[data-range-start=\"true\"] {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-start\\=true\\]\\:bg-primary {\n &[data-range-start=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[range-start\\=true\\]\\:text-primary-foreground {\n &[data-range-start=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[selected-single\\=true\\]\\:bg-primary {\n &[data-selected-single=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[selected-single\\=true\\]\\:text-primary-foreground {\n &[data-selected-single=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:rounded-none {\n &[data-selected=\"true\"] {\n border-radius: 0;\n }\n }\n .data-\\[selected\\=true\\]\\:bg-accent {\n &[data-selected=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[selected\\=true\\]\\:text-accent-foreground {\n &[data-selected=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: calc(2*var(--spacing)*-1);\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:slide-in-from-right-2 {\n &[data-side=\"left\"] {\n --tw-enter-translate-x: calc(2*var(--spacing));\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: calc(2*var(--spacing)*-1);\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2 {\n &[data-side=\"top\"] {\n --tw-enter-translate-y: calc(2*var(--spacing));\n }\n }\n .data-\\[size\\=default\\]\\:h-9 {\n &[data-size=\"default\"] {\n height: calc(var(--spacing) * 9);\n }\n }\n .data-\\[size\\=sm\\]\\:h-8 {\n &[data-size=\"sm\"] {\n height: calc(var(--spacing) * 8);\n }\n }\n .\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90 {\n :is(& > *) {\n &[data-slot=\"alert-description\"] {\n color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .data-\\[slot\\=checkbox-group\\]\\:gap-3 {\n &[data-slot=\"checkbox-group\"] {\n gap: calc(var(--spacing) * 3);\n }\n }\n .\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 {\n :is(& *) {\n &[data-slot=\"command-input-wrapper\"] {\n height: calc(var(--spacing) * 12);\n }\n }\n }\n .\\*\\*\\:data-\\[slot\\=navigation-menu-link\\]\\:focus\\:ring-0 {\n :is(& *) {\n &[data-slot=\"navigation-menu-link\"] {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n }\n .\\*\\*\\:data-\\[slot\\=navigation-menu-link\\]\\:focus\\:outline-none {\n :is(& *) {\n &[data-slot=\"navigation-menu-link\"] {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:flex {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n display: flex;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:items-center {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n align-items: center;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:gap-2 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n .data-\\[state\\=active\\]\\:bg-background {\n &[data-state=\"active\"] {\n background-color: var(--background);\n }\n }\n .data-\\[state\\=active\\]\\:shadow-sm {\n &[data-state=\"active\"] {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\] {\n &[data-state=\"checked\"] {\n --tw-translate-x: calc(100% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[state\\=closed\\]\\:animate-accordion-up {\n &[data-state=\"closed\"] {\n animation: accordion-up 0.2s ease-out;\n }\n }\n .data-\\[state\\=closed\\]\\:animate-out {\n &[data-state=\"closed\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=closed\\]\\:duration-300 {\n &[data-state=\"closed\"] {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-0 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(0/100);\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-80 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(80/100);\n --tw-exit-opacity: .8;\n }\n }\n .data-\\[state\\=closed\\]\\:zoom-out-95 {\n &[data-state=\"closed\"] {\n --tw-exit-scale: calc(95*1%);\n --tw-exit-scale: .95;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-bottom {\n &[data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-left {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-right {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-right-full {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: calc(1*100%);\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-top {\n &[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:animate-out {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:fade-out-0 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(0/100);\n --tw-exit-opacity: 0;\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:zoom-out-95 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n --tw-exit-scale: calc(95*1%);\n --tw-exit-scale: .95;\n }\n }\n }\n .data-\\[state\\=hidden\\]\\:animate-out {\n &[data-state=\"hidden\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=hidden\\]\\:fade-out {\n &[data-state=\"hidden\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=on\\]\\:bg-accent {\n &[data-state=\"on\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=on\\]\\:text-accent-foreground {\n &[data-state=\"on\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:animate-accordion-down {\n &[data-state=\"open\"] {\n animation: accordion-down 0.2s ease-out;\n }\n }\n .data-\\[state\\=open\\]\\:animate-in {\n &[data-state=\"open\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent\\/50 {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n .data-\\[state\\=open\\]\\:bg-secondary {\n &[data-state=\"open\"] {\n background-color: var(--secondary);\n }\n }\n .data-\\[state\\=open\\]\\:text-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:opacity-100 {\n &[data-state=\"open\"] {\n opacity: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:duration-500 {\n &[data-state=\"open\"] {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n }\n .data-\\[state\\=open\\]\\:fade-in-0 {\n &[data-state=\"open\"] {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-90 {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(90*1%);\n --tw-enter-scale: .9;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-95 {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-bottom {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-left {\n &[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-right {\n &[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-top {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-top-full {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: calc(1*-100%);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:animate-in {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:fade-in-0 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:zoom-in-95 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:bg-accent {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:bg-sidebar-accent {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--sidebar-accent);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:text-sidebar-accent-foreground {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:focus\\:bg-accent {\n &[data-state=\"open\"] {\n &:focus {\n background-color: var(--accent);\n }\n }\n }\n .data-\\[state\\=selected\\]\\:bg-muted {\n &[data-state=\"selected\"] {\n background-color: var(--muted);\n }\n }\n .data-\\[state\\=unchecked\\]\\:translate-x-0 {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=unchecked\\]\\:bg-input {\n &[data-state=\"unchecked\"] {\n background-color: var(--input);\n }\n }\n .data-\\[state\\=visible\\]\\:animate-in {\n &[data-state=\"visible\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=visible\\]\\:fade-in {\n &[data-state=\"visible\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[swipe\\=cancel\\]\\:translate-x-0 {\n &[data-swipe=\"cancel\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\] {\n &[data-swipe=\"end\"] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=end\\]\\:animate-out {\n &[data-swipe=\"end\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\] {\n &[data-swipe=\"move\"] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=move\\]\\:transition-none {\n &[data-swipe=\"move\"] {\n transition-property: none;\n }\n }\n .data-\\[variant\\=destructive\\]\\:text-destructive {\n &[data-variant=\"destructive\"] {\n color: var(--destructive);\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10 {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:text-destructive {\n &[data-variant=\"destructive\"] {\n &:focus {\n color: var(--destructive);\n }\n }\n }\n .data-\\[variant\\=label\\]\\:text-sm {\n &[data-variant=\"label\"] {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .data-\\[variant\\=legend\\]\\:text-base {\n &[data-variant=\"legend\"] {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .data-\\[variant\\=outline\\]\\:border-l-0 {\n &[data-variant=\"outline\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .data-\\[variant\\=outline\\]\\:shadow-xs {\n &[data-variant=\"outline\"] {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[variant\\=outline\\]\\:first\\:border-l {\n &[data-variant=\"outline\"] {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:bottom-0 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:mt-24 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n margin-top: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=\"bottom\"] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:rounded-t-lg {\n &[data-vaul-drawer-direction=\"bottom\"] {\n border-top-left-radius: var(--radius);\n border-top-right-radius: var(--radius);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:border-t {\n &[data-vaul-drawer-direction=\"bottom\"] {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=\"left\"] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:left-0 {\n &[data-vaul-drawer-direction=\"left\"] {\n left: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=\"left\"] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:border-r {\n &[data-vaul-drawer-direction=\"left\"] {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=\"right\"] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:right-0 {\n &[data-vaul-drawer-direction=\"right\"] {\n right: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=\"right\"] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:border-l {\n &[data-vaul-drawer-direction=\"right\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=\"top\"] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:top-0 {\n &[data-vaul-drawer-direction=\"top\"] {\n top: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:mb-24 {\n &[data-vaul-drawer-direction=\"top\"] {\n margin-bottom: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=\"top\"] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:rounded-b-lg {\n &[data-vaul-drawer-direction=\"top\"] {\n border-bottom-right-radius: var(--radius);\n border-bottom-left-radius: var(--radius);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:border-b {\n &[data-vaul-drawer-direction=\"top\"] {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .nth-last-2\\:-mt-1 {\n &:nth-last-child(2) {\n margin-top: calc(var(--spacing) * -1);\n }\n }\n .supports-\\[backdrop-filter\\]\\:bg-background\\/60 {\n @supports (backdrop-filter: var(--tw)) {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 60%, transparent);\n }\n }\n }\n .sm\\:top-auto {\n @media (width >= 40rem) {\n top: auto;\n }\n }\n .sm\\:right-0 {\n @media (width >= 40rem) {\n right: calc(var(--spacing) * 0);\n }\n }\n .sm\\:bottom-0 {\n @media (width >= 40rem) {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .sm\\:col-span-2 {\n @media (width >= 40rem) {\n grid-column: span 2 / span 2;\n }\n }\n .sm\\:block {\n @media (width >= 40rem) {\n display: block;\n }\n }\n .sm\\:flex {\n @media (width >= 40rem) {\n display: flex;\n }\n }\n .sm\\:max-w-\\[600px\\] {\n @media (width >= 40rem) {\n max-width: 600px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:max-w-sm {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n .sm\\:grid-cols-2 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .sm\\:flex-col {\n @media (width >= 40rem) {\n flex-direction: column;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:gap-2\\.5 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:pr-2\\.5 {\n @media (width >= 40rem) {\n padding-right: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:pl-2\\.5 {\n @media (width >= 40rem) {\n padding-left: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full {\n &[data-state=\"open\"] {\n @media (width >= 40rem) {\n --tw-enter-translate-y: calc(1*100%);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=\"left\"] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=\"right\"] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .md\\:absolute {\n @media (width >= 48rem) {\n position: absolute;\n }\n }\n .md\\:-left-24 {\n @media (width >= 48rem) {\n left: calc(var(--spacing) * -24);\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:ml-12 {\n @media (width >= 48rem) {\n margin-left: calc(var(--spacing) * 12);\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:w-20 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 20);\n }\n }\n .md\\:w-80 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 80);\n }\n }\n .md\\:w-\\[var\\(--radix-navigation-menu-viewport-width\\)\\] {\n @media (width >= 48rem) {\n width: var(--radix-navigation-menu-viewport-width);\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:max-w-\\[420px\\] {\n @media (width >= 48rem) {\n max-width: 420px;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:gap-1\\.5 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 1.5);\n }\n }\n .md\\:p-12 {\n @media (width >= 48rem) {\n padding: calc(var(--spacing) * 12);\n }\n }\n .md\\:px-6 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n .md\\:pl-12 {\n @media (width >= 48rem) {\n padding-left: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-left {\n @media (width >= 48rem) {\n text-align: left;\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:opacity-0 {\n @media (width >= 48rem) {\n opacity: 0%;\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:m-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin: calc(var(--spacing) * 2);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:ml-0 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin-left: calc(var(--spacing) * 0);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n border-radius: calc(var(--radius) + 4px);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:shadow-sm {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:peer-data-\\[state\\=collapsed\\]\\:ml-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n &:is(:where(.peer)[data-state=\"collapsed\"] ~ *) {\n margin-left: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .md\\:after\\:hidden {\n @media (width >= 48rem) {\n &::after {\n content: var(--tw-content);\n display: none;\n }\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:grid-cols-2 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-4 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .xl\\:grid-cols-4 {\n @media (width >= 80rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .\\@md\\/field-group\\:flex-row {\n @container field-group (width >= 28rem) {\n flex-direction: row;\n }\n }\n .\\@md\\/field-group\\:items-center {\n @container field-group (width >= 28rem) {\n align-items: center;\n }\n }\n .\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start {\n @container field-group (width >= 28rem) {\n &:has(>[data-slot=field-content]) {\n align-items: flex-start;\n }\n }\n }\n .dark\\:border-blue-800 {\n &:is(.dark *) {\n border-color: var(--color-blue-800);\n }\n }\n .dark\\:border-blue-800\\/30 {\n &:is(.dark *) {\n border-color: color-mix(in srgb, oklch(42.4% 0.199 265.638) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-blue-800) 30%, transparent);\n }\n }\n }\n .dark\\:border-input {\n &:is(.dark *) {\n border-color: var(--input);\n }\n }\n .dark\\:border-pink-800\\/30 {\n &:is(.dark *) {\n border-color: color-mix(in srgb, oklch(45.9% 0.187 3.815) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-pink-800) 30%, transparent);\n }\n }\n }\n .dark\\:bg-blue-900\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-900) 20%, transparent);\n }\n }\n }\n .dark\\:bg-blue-950 {\n &:is(.dark *) {\n background-color: var(--color-blue-950);\n }\n }\n .dark\\:bg-blue-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-destructive\\/60 {\n &:is(.dark *) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 60%, transparent);\n }\n }\n }\n .dark\\:bg-input\\/30 {\n &:is(.dark *) {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\n }\n }\n }\n .dark\\:bg-pink-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(28.4% 0.109 3.907) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-pink-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-transparent {\n &:is(.dark *) {\n background-color: transparent;\n }\n }\n .dark\\:bg-yellow-900\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent);\n }\n }\n }\n .dark\\:bg-yellow-950 {\n &:is(.dark *) {\n background-color: var(--color-yellow-950);\n }\n }\n .dark\\:text-blue-200 {\n &:is(.dark *) {\n color: var(--color-blue-200);\n }\n }\n .dark\\:text-muted-foreground {\n &:is(.dark *) {\n color: var(--muted-foreground);\n }\n }\n .dark\\:text-yellow-200 {\n &:is(.dark *) {\n color: var(--color-yellow-200);\n }\n }\n .dark\\:ring-blue-800 {\n &:is(.dark *) {\n --tw-ring-color: var(--color-blue-800);\n }\n }\n .dark\\:ring-yellow-800 {\n &:is(.dark *) {\n --tw-ring-color: var(--color-yellow-800);\n }\n }\n .dark\\:hover\\:bg-accent\\/50 {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-input\\/50 {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:text-accent-foreground {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:has-data-\\[state\\=checked\\]\\:bg-primary\\/10 {\n &:is(.dark *) {\n &:has(*[data-state=\"checked\"]) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n }\n }\n }\n }\n .dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:has(*:is([data-slot][aria-invalid=true])) {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[active\\=true\\]\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:border-input {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n border-color: var(--input);\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:bg-input\\/30 {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:text-foreground {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n color: var(--foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary {\n &:is(.dark *) {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary-foreground {\n &:is(.dark *) {\n &[data-state=\"checked\"] {\n background-color: var(--primary-foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-foreground {\n &:is(.dark *) {\n &[data-state=\"unchecked\"] {\n background-color: var(--foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-input\\/80 {\n &:is(.dark *) {\n &[data-state=\"unchecked\"] {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 80%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20 {\n &:is(.dark *) {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n }\n .\\[\\&_\\.recharts-cartesian-axis-tick_text\\]\\:fill-muted-foreground {\n & .recharts-cartesian-axis-tick text {\n fill: var(--muted-foreground);\n }\n }\n .\\[\\&_\\.recharts-cartesian-grid_line\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border\\/50 {\n & .recharts-cartesian-grid line[stroke='#ccc'] {\n stroke: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n stroke: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n }\n .\\[\\&_\\.recharts-curve\\.recharts-tooltip-cursor\\]\\:stroke-border {\n & .recharts-curve.recharts-tooltip-cursor {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-dot\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent {\n & .recharts-dot[stroke='#fff'] {\n stroke: transparent;\n }\n }\n .\\[\\&_\\.recharts-layer\\]\\:outline-hidden {\n & .recharts-layer {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\.recharts-polar-grid_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border {\n & .recharts-polar-grid [stroke='#ccc'] {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-radial-bar-background-sector\\]\\:fill-muted {\n & .recharts-radial-bar-background-sector {\n fill: var(--muted);\n }\n }\n .\\[\\&_\\.recharts-rectangle\\.recharts-tooltip-cursor\\]\\:fill-muted {\n & .recharts-rectangle.recharts-tooltip-cursor {\n fill: var(--muted);\n }\n }\n .\\[\\&_\\.recharts-reference-line_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border {\n & .recharts-reference-line [stroke='#ccc'] {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-sector\\]\\:outline-hidden {\n & .recharts-sector {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\.recharts-sector\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent {\n & .recharts-sector[stroke='#fff'] {\n stroke: transparent;\n }\n }\n .\\[\\&_\\.recharts-surface\\]\\:outline-hidden {\n & .recharts-surface {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 {\n & [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 {\n & [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs {\n & [cmdk-group-heading] {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium {\n & [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground {\n & [cmdk-group-heading] {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\]\\:px-2 {\n & [cmdk-group] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 {\n & [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 {\n & [cmdk-input-wrapper] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 {\n & [cmdk-input-wrapper] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input\\]\\]\\:h-12 {\n & [cmdk-input] {\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:px-2 {\n & [cmdk-item] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:py-3 {\n & [cmdk-item] {\n padding-block: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 {\n & [cmdk-item] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 {\n & [cmdk-item] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_img\\]\\:size-full {\n & img {\n width: 100%;\n height: 100%;\n }\n }\n .\\[\\&_img\\]\\:object-cover {\n & img {\n object-fit: cover;\n }\n }\n .\\[\\&_p\\]\\:leading-relaxed {\n & p {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-6 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground {\n & svg:not([class*='text-']) {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_tr\\]\\:border-b {\n & tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .\\[\\&_tr\\:last-child\\]\\:border-0 {\n & tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .\\[\\&\\+\\[data-slot\\=item-content\\]\\]\\:flex-none {\n &+[data-slot=item-content] {\n flex: none;\n }\n }\n .\\[\\&\\:first-child\\[data-selected\\=true\\]_button\\]\\:rounded-l-md {\n &:first-child[data-selected=true] button {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0 {\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n }\n .\\[\\.border-b\\]\\:pb-3 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n .\\[\\.border-b\\]\\:pb-6 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 6);\n }\n }\n .\\[\\.border-t\\]\\:pt-3 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 3);\n }\n }\n .\\[\\.border-t\\]\\:pt-6 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 6);\n }\n }\n .rtl\\:\\*\\*\\:\\[\\.rdp-button\\\\_next\\>svg\\]\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n :is(& *) {\n &:is(.rdp-button_next>svg) {\n rotate: 180deg;\n }\n }\n }\n }\n .rtl\\:\\*\\*\\:\\[\\.rdp-button\\\\_previous\\>svg\\]\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n :is(& *) {\n &:is(.rdp-button_previous>svg) {\n rotate: 180deg;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:flex {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n display: flex;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:items-center {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n align-items: center;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:gap-2 {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive {\n &[data-variant=\"destructive\"] {\n :is(& > *) {\n &:is(svg) {\n color: var(--destructive) !important;\n }\n }\n }\n }\n .\\[\\&\\:last-child\\[data-selected\\=true\\]_button\\]\\:rounded-r-md {\n &:last-child[data-selected=true] button {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .\\[\\&\\>\\*\\]\\:w-full {\n &>* {\n width: 100%;\n }\n }\n .\\[\\&\\>\\*\\]\\:focus-visible\\:relative {\n &>* {\n &:focus-visible {\n position: relative;\n }\n }\n }\n .\\[\\&\\>\\*\\]\\:focus-visible\\:z-10 {\n &>* {\n &:focus-visible {\n z-index: 10;\n }\n }\n }\n .\\[\\&\\>\\*\\]\\:data-\\[slot\\=field\\]\\:p-4 {\n &>* {\n &[data-slot=\"field\"] {\n padding: calc(var(--spacing) * 4);\n }\n }\n }\n .\\@md\\/field-group\\:\\[\\&\\>\\*\\]\\:w-auto {\n @container field-group (width >= 28rem) {\n &>* {\n width: auto;\n }\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none {\n &>*:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-l-none {\n &>*:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0 {\n &>*:not(:first-child) {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-l-0 {\n &>*:not(:first-child) {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-r-none {\n &>*:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none {\n &>*:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n .\\[\\&\\>\\.sr-only\\]\\:w-auto {\n &>.sr-only {\n width: auto;\n }\n }\n .\\[\\&\\>\\[data-slot\\=field-group\\]\\]\\:gap-4 {\n &>[data-slot=field-group] {\n gap: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto {\n &>[data-slot=field-label] {\n flex: auto;\n }\n }\n .\\@md\\/field-group\\:\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto {\n @container field-group (width >= 28rem) {\n &>[data-slot=field-label] {\n flex: auto;\n }\n }\n }\n .has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-r-md {\n &:has(*:is(select[aria-hidden=true]:last-child)) {\n &>[data-slot=select-trigger]:last-of-type {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n }\n .\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=\\'w-\\'\\]\\)\\]\\:w-fit {\n &>[data-slot=select-trigger]:not([class*='w-']) {\n width: fit-content;\n }\n }\n .\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] {\n &>[role=checkbox] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px {\n &:has(>[data-slot=field-content]) {\n &>[role=checkbox],[role=radio] {\n margin-top: 1px;\n }\n }\n }\n .\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px {\n @container field-group (width >= 28rem) {\n &:has(>[data-slot=field-content]) {\n &>[role=checkbox],[role=radio] {\n margin-top: 1px;\n }\n }\n }\n }\n .\\[\\&\\>a\\]\\:underline {\n &>a {\n text-decoration-line: underline;\n }\n }\n .\\[\\&\\>a\\]\\:underline-offset-4 {\n &>a {\n text-underline-offset: 4px;\n }\n }\n .\\[\\&\\>a\\:hover\\]\\:text-primary {\n &>a:hover {\n color: var(--primary);\n }\n }\n .\\[\\&\\>button\\]\\:hidden {\n &>button {\n display: none;\n }\n }\n .\\[\\&\\>input\\]\\:flex-1 {\n &>input {\n flex: 1;\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3 {\n &:has(>[data-align=block-end]) {\n &>input {\n padding-top: calc(var(--spacing) * 3);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3 {\n &:has(>[data-align=block-start]) {\n &>input {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pr-2 {\n &:has(>[data-align=inline-end]) {\n &>input {\n padding-right: calc(var(--spacing) * 2);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:pl-2 {\n &:has(>[data-align=inline-start]) {\n &>input {\n padding-left: calc(var(--spacing) * 2);\n }\n }\n }\n .\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\] {\n &>kbd {\n border-radius: calc(var(--radius) - 5px);\n }\n }\n .\\[\\&\\>span\\]\\:text-xs {\n &>span {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&\\>span\\]\\:opacity-70 {\n &>span {\n opacity: 70%;\n }\n }\n .\\[\\&\\>span\\:last-child\\]\\:truncate {\n &>span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n .\\[\\&\\>svg\\]\\:pointer-events-none {\n &>svg {\n pointer-events: none;\n }\n }\n .\\[\\&\\>svg\\]\\:size-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:size-3\\.5 {\n &>svg {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\]\\:size-4 {\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>svg\\]\\:h-2\\.5 {\n &>svg {\n height: calc(var(--spacing) * 2.5);\n }\n }\n .\\[\\&\\>svg\\]\\:h-3 {\n &>svg {\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:w-2\\.5 {\n &>svg {\n width: calc(var(--spacing) * 2.5);\n }\n }\n .\\[\\&\\>svg\\]\\:w-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:shrink-0 {\n &>svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&\\>svg\\]\\:translate-y-0\\.5 {\n &>svg {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .\\[\\&\\>svg\\]\\:text-current {\n &>svg {\n color: currentcolor;\n }\n }\n .\\[\\&\\>svg\\]\\:text-muted-foreground {\n &>svg {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&\\>svg\\]\\:text-sidebar-accent-foreground {\n &>svg {\n color: var(--sidebar-accent-foreground);\n }\n }\n .\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3\\.5 {\n &>svg:not([class*='size-']) {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n &>svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>tr\\]\\:last\\:border-b-0 {\n &>tr {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n .\\[\\&\\[data-panel-group-direction\\=vertical\\]\\>div\\]\\:rotate-90 {\n &[data-panel-group-direction=vertical]>div {\n rotate: 90deg;\n }\n }\n .\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180 {\n &[data-state=open]>svg {\n rotate: 180deg;\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-right-2 {\n [data-side=left][data-collapsible=offcanvas] & {\n right: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize {\n [data-side=left][data-state=collapsed] & {\n cursor: e-resize;\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-left-2 {\n [data-side=right][data-collapsible=offcanvas] & {\n left: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize {\n [data-side=right][data-state=collapsed] & {\n cursor: w-resize;\n }\n }\n .\\[\\[data-slot\\=card-content\\]_\\&\\]\\:bg-transparent {\n [data-slot=card-content] & {\n background-color: transparent;\n }\n }\n .\\[\\[data-slot\\=popover-content\\]_\\&\\]\\:bg-transparent {\n [data-slot=popover-content] & {\n background-color: transparent;\n }\n }\n .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-background\\/20 {\n [data-slot=tooltip-content] & {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 20%, transparent);\n }\n }\n }\n .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:text-background {\n [data-slot=tooltip-content] & {\n color: var(--background);\n }\n }\n .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-background\\/10 {\n &:is(.dark *) {\n [data-slot=tooltip-content] & {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 10%, transparent);\n }\n }\n }\n }\n .\\[\\[data-variant\\=legend\\]\\+\\&\\]\\:-mt-1\\.5 {\n [data-variant=legend]+& {\n margin-top: calc(var(--spacing) * -1.5);\n }\n }\n .\\[a\\&\\]\\:transition-colors {\n a& {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent\\/50 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-destructive\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-primary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-secondary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:text-accent-foreground {\n a& {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n }\n}\n@property --tw-animation-delay {\n syntax: \"*\";\n inherits: false;\n initial-value: 0s;\n}\n@property --tw-animation-direction {\n syntax: \"*\";\n inherits: false;\n initial-value: normal;\n}\n@property --tw-animation-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-animation-fill-mode {\n syntax: \"*\";\n inherits: false;\n initial-value: forwards;\n}\n@property --tw-animation-iteration-count {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n:root {\n --background: oklch(0.97 0.01 90);\n --foreground: oklch(0.2 0.02 265);\n --card: oklch(0.98 0.005 90);\n --card-foreground: oklch(0.2 0.02 265);\n --popover: oklch(0.98 0.005 90);\n --popover-foreground: oklch(0.2 0.02 265);\n --primary: oklch(0.45 0.15 25);\n --primary-foreground: oklch(0.98 0.01 90);\n --secondary: oklch(0.85 0.05 85);\n --secondary-foreground: oklch(0.3 0.05 50);\n --muted: oklch(0.92 0.01 90);\n --muted-foreground: oklch(0.45 0.02 265);\n --accent: oklch(0.94 0.02 85);\n --accent-foreground: oklch(0.3 0.05 50);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.98 0 0);\n --border: oklch(0.88 0.01 90);\n --input: oklch(0.88 0.01 90);\n --ring: oklch(0.45 0.15 25);\n --radius: 0.5rem;\n --sidebar: oklch(0.96 0.01 90);\n --sidebar-foreground: oklch(0.25 0.02 265);\n --sidebar-primary: oklch(0.45 0.15 25);\n --sidebar-primary-foreground: oklch(0.98 0.01 90);\n --sidebar-accent: oklch(0.93 0.01 90);\n --sidebar-accent-foreground: oklch(0.25 0.02 265);\n --sidebar-border: oklch(0.88 0.01 90);\n --sidebar-ring: oklch(0.45 0.15 25);\n --chart-1: oklch(0.45 0.15 25);\n --chart-2: oklch(0.65 0.12 50);\n --chart-3: oklch(0.35 0.08 200);\n --chart-4: oklch(0.55 0.05 265);\n --chart-5: oklch(0.75 0.1 85);\n}\n.dark {\n --background: oklch(0.12 0.01 265);\n --foreground: oklch(0.95 0.01 90);\n --card: oklch(0.15 0.01 265);\n --card-foreground: oklch(0.95 0.01 90);\n --popover: oklch(0.15 0.01 265);\n --popover-foreground: oklch(0.95 0.01 90);\n --primary: oklch(0.6 0.15 25);\n --primary-foreground: oklch(0.98 0.01 90);\n --secondary: oklch(0.3 0.05 50);\n --secondary-foreground: oklch(0.9 0.05 85);\n --muted: oklch(0.2 0.01 265);\n --muted-foreground: oklch(0.65 0.01 265);\n --accent: oklch(0.2 0.02 265);\n --accent-foreground: oklch(0.95 0.01 90);\n --destructive: oklch(0.396 0.141 25.723);\n --destructive-foreground: oklch(0.98 0 0);\n --border: oklch(0.25 0.01 265);\n --input: oklch(0.25 0.01 265);\n --ring: oklch(0.6 0.15 25);\n --sidebar: oklch(0.14 0.01 265);\n --sidebar-foreground: oklch(0.95 0.01 90);\n --sidebar-primary: oklch(0.6 0.15 25);\n --sidebar-primary-foreground: oklch(0.98 0.01 90);\n --sidebar-accent: oklch(0.2 0.01 265);\n --sidebar-accent-foreground: oklch(0.95 0.01 90);\n --sidebar-border: oklch(0.25 0.01 265);\n --sidebar-ring: oklch(0.6 0.15 25);\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n body {\n background-color: var(--background);\n color: var(--foreground);\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-family: \"Songti SC\", \"STSong\", \"SimSun\", \"Times New Roman\", serif;\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity,1);\n transform: translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity,1);\n transform: translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))));\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))));\n }\n to {\n height: 0;\n }\n}\n@keyframes caret-blink {\n 0%,70%,100% {\n opacity: 1;\n }\n 20%,50% {\n opacity: 0;\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-content: \"\";\n --tw-animation-delay: 0s;\n --tw-animation-direction: normal;\n --tw-animation-duration: initial;\n --tw-animation-fill-mode: forwards;\n --tw-animation-iteration-count: 1;\n --tw-enter-opacity: 1;\n --tw-enter-rotate: 0;\n --tw-enter-scale: 1;\n --tw-enter-translate-x: 0;\n --tw-enter-translate-y: 0;\n --tw-exit-opacity: 1;\n --tw-exit-rotate: 0;\n --tw-exit-scale: 1;\n --tw-exit-translate-x: 0;\n --tw-exit-translate-y: 0;\n }\n }\n}\n"],"names":[],"mappings":"AACA;EAs3ME;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAt3MJ;EAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAFF;EA6GE;;;;;;;EAAA;;;;;;;EAMA;;;;;;;;;;EASA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;;;EAKA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;;;;;EAAA;;;;;;;;;;;EAUA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;IACE;;;;IAEE;MAAgD;;;;;;EAKpD;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAkyLA;;;;;EAGE;IAAgD;;;;;EAIlD;;;;;EAIA;;;;;;;AAziMF;;AAAA;EAiQE;;;;EAIA;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;;;;;;EAWA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAI3B;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;EAMA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAIE;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAMF;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;;EAKA;;;;;;EAKA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAG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"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_c5040fe9._.js b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_c5040fe9._.js index 4e0f21bf..d222fce0 100644 --- a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_c5040fe9._.js +++ b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_c5040fe9._.js @@ -2566,7 +2566,7 @@ function MembersPage() { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Card"], { className: `hover:border-primary transition-colors cursor-pointer h-full ${isSpouse ? 'bg-pink-50/50 dark:bg-pink-950/20 border-pink-200/50 dark:border-pink-800/30' : 'bg-blue-50/50 dark:bg-blue-950/20 border-blue-200/50 dark:border-blue-800/30'}`, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CardContent"], { - className: "p-3 flex items-center gap-3", + className: "p-3 flex items-center gap-5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "relative flex-shrink-0", @@ -2605,16 +2605,16 @@ function MembersPage() { columnNumber: 27 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { - className: "flex-1 min-w-0 pl-1", + className: "flex-1 min-w-0 flex flex-col justify-center", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-baseline justify-between gap-1.5", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { - className: "text-base font-bold font-serif truncate", + className: "text-lg font-bold font-serif truncate", children: [ member.fullName, member.courtesyName && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { - className: "text-[11px] font-normal text-muted-foreground ml-1", + className: "text-xs font-normal text-muted-foreground ml-1", children: [ "字 ", member.courtesyName @@ -2636,14 +2636,14 @@ function MembersPage() { columnNumber: 29 }, this), isFounder ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { - className: "text-[11px] text-amber-700 font-medium mt-0.5 truncate", + className: "text-xs text-amber-700 font-medium mt-0.5 truncate", children: "家族始祖" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", lineNumber: 405, columnNumber: 31 }, this) : isSpouse && spouseName ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { - className: "text-[11px] text-purple-700 mt-0.5 truncate", + className: "text-xs text-purple-700 mt-0.5 truncate", children: [ spouseName, "的配偶" @@ -2653,7 +2653,7 @@ function MembersPage() { lineNumber: 409, columnNumber: 31 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { - className: "text-[11px] text-muted-foreground mt-0.5 truncate", + className: "text-xs text-muted-foreground mt-0.5 truncate", children: member.generationName ? `字辈: ${member.generationName}` : "未录入字辈" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", @@ -2664,7 +2664,7 @@ function MembersPage() { className: "flex items-start justify-between gap-2 mt-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { - className: "text-[11px] text-muted-foreground truncate flex-1", + className: "text-xs text-muted-foreground truncate flex-1", children: member.ancestralHome || "籍贯未知" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", @@ -2672,7 +2672,7 @@ function MembersPage() { columnNumber: 31 }, this), (member.birthDate || member.deathDate) && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { - className: "text-[10px] text-muted-foreground text-right space-y-0.5 flex-shrink-0", + className: "text-xs text-muted-foreground text-right space-y-0.5 flex-shrink-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: [ @@ -2691,7 +2691,7 @@ function MembersPage() { const deathYear = member.deathDate ? new Date(member.deathDate).getFullYear() : new Date().getFullYear(); const age = deathYear - birthYear; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { - className: "text-[9px] text-muted-foreground", + className: "text-[10px] text-muted-foreground", children: member.deathDate ? `享年${age}岁` : `${age}岁` }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", @@ -2714,7 +2714,7 @@ function MembersPage() { member.tags && member.tags.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "mt-1.5 flex flex-wrap gap-1", children: member.tags.map((tag)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { - className: "text-[9px] bg-primary/10 text-primary px-1 py-0.5 rounded border border-primary/20", + className: "text-xs bg-primary/10 text-primary px-2 py-0.5 rounded border border-primary/20", children: tag }, tag, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx", diff --git a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_c5040fe9._.js.map b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_c5040fe9._.js.map index 5e464339..557da2d8 100644 --- a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_c5040fe9._.js.map +++ b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_c5040fe9._.js.map @@ -9,5 +9,5 @@ {"offset": {"line": 1343, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { db } from \"@/lib/db\"\nimport { CircleUser, CircleUserRound } from \"lucide-react\"\nimport type { Gender } from \"@/types/family\"\n\ninterface AvatarDisplayProps {\n imageId?: string\n fallbackUrl?: string\n fallbackText?: string\n gender?: Gender\n className?: string\n}\n\nexport function AvatarDisplay({ imageId, fallbackUrl, fallbackText, gender, className }: AvatarDisplayProps) {\n const [blobUrl, setBlobUrl] = useState(undefined)\n\n useEffect(() => {\n if (imageId) {\n db.images.get(imageId).then((image) => {\n if (image) {\n const url = URL.createObjectURL(image.blob)\n setBlobUrl(url)\n return () => URL.revokeObjectURL(url)\n }\n })\n } else {\n setBlobUrl(undefined)\n }\n }, [imageId])\n\n // 如果有头像,显示头像\n if (blobUrl) {\n return (\n \n \n {fallbackText}\n \n )\n }\n\n // 没有头像,显示性别图标\n return (\n \n \n {gender === 'FEMALE' ? (\n \n ) : (\n \n )}\n \n \n )\n}\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AAAA;;;AALA;;;;;AAgBO,SAAS,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAsB;;IACzG,MAAM,CAAC,SAAS,WAAW,GAAG,IAAA,+VAAQ,EAAqB;IAE3D,IAAA,gWAAS;mCAAC;YACR,IAAI,SAAS;gBACX,yKAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI;+CAAC,CAAC;wBAC3B,IAAI,OAAO;4BACT,MAAM,MAAM,IAAI,eAAe,CAAC,MAAM,IAAI;4BAC1C,WAAW;4BACX;2DAAO,IAAM,IAAI,eAAe,CAAC;;wBACnC;oBACF;;YACF,OAAO;gBACL,WAAW;YACb;QACF;kCAAG;QAAC;KAAQ;IAEZ,aAAa;IACb,IAAI,SAAS;QACX,qBACE,mXAAC,+LAAM;YAAC,WAAW;;8BACjB,mXAAC,oMAAW;oBAAC,KAAK;;;;;;8BAClB,mXAAC,uMAAc;oBAAC,WAAU;8BAA+B;;;;;;;;;;;;IAG/D;IAEA,cAAc;IACd,qBACE,mXAAC,+LAAM;QAAC,WAAW;kBACjB,cAAA,mXAAC,uMAAc;YAAC,WAAU;sBACvB,WAAW,yBACV,mXAAC,iYAAe;gBAAC,WAAU;;;;;qCAE3B,mXAAC,8WAAU;gBAAC,WAAU;;;;;;;;;;;;;;;;AAKhC;GAvCgB;KAAA"}}, {"offset": {"line": 1451, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/ui/select.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return \n}\n\nfunction SelectTrigger({\n className,\n size = 'default',\n children,\n ...props\n}: React.ComponentProps & {\n size?: 'sm' | 'default'\n}) {\n return (\n \n {children}\n \n \n \n \n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'popper',\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA;AAAA;AAAA;AAEA;AANA;;;;;AAQA,SAAS,OAAO,EACd,GAAG,OAC+C;IAClD,qBAAO,mXAAC,wbAAoB;QAAC,aAAU;QAAU,GAAG,KAAK;;;;;;AAC3D;KAJS;AAMT,SAAS,YAAY,EACnB,GAAG,OACgD;IACnD,qBAAO,mXAAC,ybAAqB;QAAC,aAAU;QAAgB,GAAG,KAAK;;;;;;AAClE;MAJS;AAMT,SAAS,YAAY,EACnB,GAAG,OACgD;IACnD,qBAAO,mXAAC,ybAAqB;QAAC,aAAU;QAAgB,GAAG,KAAK;;;;;;AAClE;MAJS;AAMT,SAAS,cAAc,EACrB,SAAS,EACT,OAAO,SAAS,EAChB,QAAQ,EACR,GAAG,OAGJ;IACC,qBACE,mXAAC,2bAAuB;QACtB,aAAU;QACV,aAAW;QACX,WAAW,IAAA,4KAAE,EACX,gzBACA;QAED,GAAG,KAAK;;YAER;0BACD,mXAAC,wbAAoB;gBAAC,OAAO;0BAC3B,cAAA,mXAAC,yXAAe;oBAAC,WAAU;;;;;;;;;;;;;;;;;AAInC;MAxBS;AA0BT,SAAS,cAAc,EACrB,SAAS,EACT,QAAQ,EACR,WAAW,QAAQ,EACnB,GAAG,OACkD;IACrD,qBACE,mXAAC,0bAAsB;kBACrB,cAAA,mXAAC,2bAAuB;YACtB,aAAU;YACV,WAAW,IAAA,4KAAE,EACX,ijBACA,aAAa,YACX,mIACF;YAEF,UAAU;YACT,GAAG,KAAK;;8BAET,mXAAC;;;;;8BACD,mXAAC,4bAAwB;oBACvB,WAAW,IAAA,4KAAE,EACX,OACA,aAAa,YACX;8BAGH;;;;;;8BAEH,mXAAC;;;;;;;;;;;;;;;;AAIT;MAjCS;AAmCT,SAAS,YAAY,EACnB,SAAS,EACT,GAAG,OACgD;IACnD,qBACE,mXAAC,ybAAqB;QACpB,aAAU;QACV,WAAW,IAAA,4KAAE,EAAC,6CAA6C;QAC1D,GAAG,KAAK;;;;;;AAGf;MAXS;AAaT,SAAS,WAAW,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,OAC+C;IAClD,qBACE,mXAAC,wbAAoB;QACnB,aAAU;QACV,WAAW,IAAA,4KAAE,EACX,6aACA;QAED,GAAG,KAAK;;0BAET,mXAAC;gBAAK,WAAU;0BACd,cAAA,mXAAC,icAA6B;8BAC5B,cAAA,mXAAC,mWAAS;wBAAC,WAAU;;;;;;;;;;;;;;;;0BAGzB,mXAAC,4bAAwB;0BAAE;;;;;;;;;;;;AAGjC;MAtBS;AAwBT,SAAS,gBAAgB,EACvB,SAAS,EACT,GAAG,OACoD;IACvD,qBACE,mXAAC,6bAAyB;QACxB,aAAU;QACV,WAAW,IAAA,4KAAE,EAAC,iDAAiD;QAC9D,GAAG,KAAK;;;;;;AAGf;MAXS;AAaT,SAAS,qBAAqB,EAC5B,SAAS,EACT,GAAG,OACyD;IAC5D,qBACE,mXAAC,kcAA8B;QAC7B,aAAU;QACV,WAAW,IAAA,4KAAE,EACX,wDACA;QAED,GAAG,KAAK;kBAET,cAAA,mXAAC,mXAAa;YAAC,WAAU;;;;;;;;;;;AAG/B;MAhBS;AAkBT,SAAS,uBAAuB,EAC9B,SAAS,EACT,GAAG,OAC2D;IAC9D,qBACE,mXAAC,ocAAgC;QAC/B,aAAU;QACV,WAAW,IAAA,4KAAE,EACX,wDACA;QAED,GAAG,KAAK;kBAET,cAAA,mXAAC,yXAAe;YAAC,WAAU;;;;;;;;;;;AAGjC;MAhBS"}}, {"offset": {"line": 1708, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/ui/slider.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as SliderPrimitive from '@radix-ui/react-slider'\n\nimport { cn } from '@/lib/utils'\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n )\n\n return (\n \n \n \n \n {Array.from({ length: _values.length }, (_, index) => (\n \n ))}\n \n )\n}\n\nexport { Slider }\n"],"names":[],"mappings":";;;;;AAEA;AACA;AAEA;;;AALA;;;;AAOA,SAAS,OAAO,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,MAAM,CAAC,EACP,MAAM,GAAG,EACT,GAAG,OAC+C;;IAClD,MAAM,UAAU,8VAAa;mCAC3B,IACE,MAAM,OAAO,CAAC,SACV,QACA,MAAM,OAAO,CAAC,gBACZ,eACA;gBAAC;gBAAK;aAAI;kCAClB;QAAC;QAAO;QAAc;QAAK;KAAI;IAGjC,qBACE,mXAAC,wbAAoB;QACnB,aAAU;QACV,cAAc;QACd,OAAO;QACP,KAAK;QACL,KAAK;QACL,WAAW,IAAA,4KAAE,EACX,uOACA;QAED,GAAG,KAAK;;0BAET,mXAAC,ybAAqB;gBACpB,aAAU;gBACV,WACE;0BAGF,cAAA,mXAAC,ybAAqB;oBACpB,aAAU;oBACV,WACE;;;;;;;;;;;YAIL,MAAM,IAAI,CAAC;gBAAE,QAAQ,QAAQ,MAAM;YAAC,GAAG,CAAC,GAAG,sBAC1C,mXAAC,ybAAqB;oBACpB,aAAU;oBAEV,WAAU;mBADL;;;;;;;;;;;AAMf;GArDS;KAAA"}}, - {"offset": {"line": 1789, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/page.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useMemo, useEffect } from \"react\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { useFamily } from \"@/context/family-context\"\nimport { useRouter } from \"next/navigation\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Search, Plus, Filter, X } from \"lucide-react\"\nimport Link from \"next/link\"\nimport { AvatarDisplay } from \"@/components/ui/avatar-display\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { Slider } from \"@/components/ui/slider\"\nimport { Label } from \"@/components/ui/label\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\n\nexport default function MembersPage() {\n const { treeData, searchMembers, setHighlightedMemberId } = useFamily()\n const router = useRouter()\n const [query, setQuery] = useState(\"\")\n const [showFilters, setShowFilters] = useState(false)\n \n // 从 URL 参数读取搜索关键词\n useEffect(() => {\n const params = new URLSearchParams(window.location.search)\n const searchParam = params.get('search')\n if (searchParam) {\n setQuery(searchParam)\n }\n }, [])\n\n // Filter States\n const [selectedSurname, setSelectedSurname] = useState(\"all\")\n const [selectedHome, setSelectedHome] = useState(\"all\")\n const [statusFilter, setStatusFilter] = useState(\"all\")\n const [generationRange, setGenerationRange] = useState<[number, number]>([1, 100])\n\n // Derived Data\n const allMembers = useMemo(() => Object.values(treeData.members), [treeData])\n\n const { uniqueSurnames, uniqueHomes, minGen, maxGen } = useMemo(() => {\n const surnames = new Set()\n const homes = new Set()\n let min = 1000\n let max = 0\n\n allMembers.forEach((m) => {\n if (m.surname) surnames.add(m.surname)\n if (m.ancestralHome) homes.add(m.ancestralHome)\n if (m.generation) {\n if (m.generation < min) min = m.generation\n if (m.generation > max) max = m.generation\n }\n })\n\n return {\n uniqueSurnames: Array.from(surnames).sort(),\n uniqueHomes: Array.from(homes).sort(),\n minGen: min === 1000 ? 1 : min,\n maxGen: max === 0 ? 100 : max,\n }\n }, [allMembers])\n\n // Initialize slider when data loads\n useMemo(() => {\n if (minGen !== 1000 && maxGen !== 0) {\n // Only update if range is default\n // This is a bit tricky, for now let's just rely on user adjustment or default wide range\n // Ideally we sync this once.\n }\n }, [minGen, maxGen])\n\n const filteredMembers = useMemo(() => {\n let result = allMembers\n\n // 1. Search Query\n if (query) {\n const lowerQuery = query.toLowerCase()\n result = result.filter(\n (m) =>\n m.fullName.toLowerCase().includes(lowerQuery) ||\n m.courtesyName?.toLowerCase().includes(lowerQuery) ||\n m.artName?.toLowerCase().includes(lowerQuery),\n )\n }\n\n // 2. Surname Filter\n if (selectedSurname !== \"all\") {\n result = result.filter((m) => m.surname === selectedSurname)\n }\n\n // 3. Home Filter\n if (selectedHome !== \"all\") {\n result = result.filter((m) => m.ancestralHome === selectedHome)\n }\n\n // 4. Status Filter\n if (statusFilter !== \"all\") {\n if (statusFilter === \"living\") {\n result = result.filter((m) => !m.deathDate)\n } else if (statusFilter === \"deceased\") {\n result = result.filter((m) => !!m.deathDate)\n }\n }\n\n // 5. Generation Filter\n result = result.filter((m) => m.generation >= generationRange[0] && m.generation <= generationRange[1])\n\n // Sort\n return result.sort((a, b) => a.generation - b.generation || (a.birthDate || \"\").localeCompare(b.birthDate || \"\"))\n }, [allMembers, query, selectedSurname, selectedHome, statusFilter, generationRange])\n \n // 按世代分组并排序\n const membersByGeneration = useMemo(() => {\n const groups = new Map()\n \n filteredMembers.forEach(member => {\n const gen = member.generation\n if (!groups.has(gen)) {\n groups.set(gen, [])\n }\n groups.get(gen)!.push(member)\n })\n \n // 转换为数组并排序\n return Array.from(groups.entries())\n .sort((a, b) => a[0] - b[0])\n .map(([generation, members]) => {\n // 区分家族成员和配偶\n const familyMembers = members.filter(m => {\n // 家族成员:有父母关系 或 明确标记为始祖\n const isFounder = m.tags?.includes('始祖')\n const hasFamilyParents = m.fatherId || m.motherId\n \n // 如果有父母关系,肯定是家族成员\n if (hasFamilyParents) return true\n \n // 如果明确标记为始祖,是家族成员\n if (isFounder) return true\n \n // 第1世且没有配偶的,可能是始祖(兼容没有标签的情况)\n if (generation === 1 && (!m.spouseIds || m.spouseIds.length === 0)) return true\n \n // 其他情况(如第1世但有配偶且没有父母的)是配偶身份\n return false\n })\n \n // 对家族成员按年龄排序(出生日期从早到晚 = 年龄从高到低)\n const sortedFamilyMembers = [...familyMembers].sort((a, b) => {\n // 1. 始祖永远排第一\n const aIsFounder = a.tags?.includes('始祖')\n const bIsFounder = b.tags?.includes('始祖')\n if (aIsFounder && !bIsFounder) return -1\n if (!aIsFounder && bIsFounder) return 1\n \n // 2. 按出生日期排序(早出生的在前 = 年龄大的在前)\n const aDate = a.birthDate || \"9999-12-31\"\n const bDate = b.birthDate || \"9999-12-31\"\n return aDate.localeCompare(bDate)\n })\n \n // 3. 将配偶插入到主成员后面\n const result: typeof members = []\n const processedSpouses = new Set()\n \n sortedFamilyMembers.forEach(member => {\n result.push(member)\n \n // 计算该家庭单元的成员数(主成员 + 配偶)\n let familyUnitSize = 1 // 主成员自己\n \n // 如果有配偶,将配偶紧跟在后面\n if (member.spouseIds && member.spouseIds.length > 0) {\n member.spouseIds.forEach(spouseId => {\n const spouse = members.find(m => m.id === spouseId)\n if (spouse && !processedSpouses.has(spouseId)) {\n result.push(spouse)\n processedSpouses.add(spouseId)\n familyUnitSize++\n }\n })\n }\n \n // 计算需要添加的占位符数量,确保填满4的倍数\n // 例如:1个主成员 + 1个配偶 = 2人,需要添加2个占位符\n // 例如:1个主成员 + 3个配偶 = 4人,不需要占位符\n // 例如:1个主成员 + 0个配偶 = 1人,需要添加3个占位符\n const placeholdersNeeded = (4 - (familyUnitSize % 4)) % 4\n for (let i = 0; i < placeholdersNeeded; i++) {\n result.push({ id: `placeholder-${member.id}-${i}`, isPlaceholder: true } as any)\n }\n })\n \n return {\n generation,\n members: result\n }\n })\n }, [filteredMembers])\n\n const clearFilters = () => {\n setSelectedSurname(\"all\")\n setSelectedHome(\"all\")\n setStatusFilter(\"all\")\n setGenerationRange([1, 100]) // Reset to wide range\n setQuery(\"\")\n }\n\n const activeFilterCount =\n (selectedSurname !== \"all\" ? 1 : 0) +\n (selectedHome !== \"all\" ? 1 : 0) +\n (statusFilter !== \"all\" ? 1 : 0) +\n (generationRange[0] > 1 || generationRange[1] < 100 ? 1 : 0)\n\n return (\n
\n \n
\n
\n
\n

家族成员列表

\n
\n
\n \n setQuery(e.target.value)}\n />\n
\n 0 ? \"secondary\" : \"outline\"}\n size=\"icon\"\n onClick={() => setShowFilters(!showFilters)}\n className=\"relative\"\n >\n \n {activeFilterCount > 0 && (\n \n )}\n \n \n \n \n
\n
\n\n {/* Filter Bar */}\n {showFilters && (\n
\n
\n

高级筛选

\n \n
\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n {generationRange[0]} - {generationRange[1]} 世\n \n
\n setGenerationRange(val as [number, number])}\n className=\"py-4\"\n />\n
\n
\n
\n )}\n
\n\n {filteredMembers.length === 0 ? (\n
\n 没有找到匹配的成员。\n
\n ) : (\n
\n {membersByGeneration.map(({ generation, members }) => (\n
\n
\n

第 {generation} 世

\n 共 {members.length} 人\n
\n
\n
\n {members.map((member) => {\n // 检查是否是占位符\n if ((member as any).isPlaceholder) {\n return
\n }\n \n // 判断是否是配偶:\n // 1. 没有父母ID\n // 2. 有配偶ID\n // 3. 不是始祖(没有'始祖'标签)\n const isFounder = member.tags?.includes('始祖')\n const isSpouse = !member.fatherId && !member.motherId && \n member.spouseIds && member.spouseIds.length > 0 && \n !isFounder\n \n // 获取配偶信息\n const spouse = isSpouse && member.spouseIds?.[0] ? allMembers.find(m => m.id === member.spouseIds[0]) : null\n const spouseName = spouse ? spouse.fullName : null\n \n return (\n
\n \n \n \n
\n \n {/* 在世/去世标识 */}\n {member.deathDate && (\n
\n )}\n {!member.deathDate && (\n
\n )}\n
\n
\n
\n

\n {member.fullName}\n {member.courtesyName && (\n \n 字 {member.courtesyName}\n \n )}\n

\n
\n {isFounder ? (\n

\n 家族始祖\n

\n ) : isSpouse && spouseName ? (\n

\n {spouseName}的配偶\n

\n ) : (\n

\n {member.generationName ? `字辈: ${member.generationName}` : \"未录入字辈\"}\n

\n )}\n \n {/* 籍贯和生卒年并排 */}\n
\n

{member.ancestralHome || \"籍贯未知\"}

\n \n {/* 生卒年和年龄 */}\n {(member.birthDate || member.deathDate) && (\n
\n
\n {member.birthDate && new Date(member.birthDate).getFullYear()}\n {member.deathDate && ` - ${new Date(member.deathDate).getFullYear()}`}\n {!member.deathDate && member.birthDate && ' - '}\n
\n {(() => {\n if (!member.birthDate) return null\n const birthYear = new Date(member.birthDate).getFullYear()\n const deathYear = member.deathDate ? new Date(member.deathDate).getFullYear() : new Date().getFullYear()\n const age = deathYear - birthYear\n return (\n
\n {member.deathDate ? `享年${age}岁` : `${age}岁`}\n
\n )\n })()}\n
\n )}\n
\n \n {member.tags && member.tags.length > 0 && (\n
\n {member.tags.map((tag) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n \n \n \n {\n setHighlightedMemberId(member.id)\n router.push('/tree')\n }}\n title=\"在族谱图中定位\"\n >\n \n \n
\n )\n })}\n
\n
\n ))}\n
\n )}\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 1789, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/page.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useMemo, useEffect } from \"react\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { useFamily } from \"@/context/family-context\"\nimport { useRouter } from \"next/navigation\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Search, Plus, Filter, X } from \"lucide-react\"\nimport Link from \"next/link\"\nimport { AvatarDisplay } from \"@/components/ui/avatar-display\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { Slider } from \"@/components/ui/slider\"\nimport { Label } from \"@/components/ui/label\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\"\n\nexport default function MembersPage() {\n const { treeData, searchMembers, setHighlightedMemberId } = useFamily()\n const router = useRouter()\n const [query, setQuery] = useState(\"\")\n const [showFilters, setShowFilters] = useState(false)\n \n // 从 URL 参数读取搜索关键词\n useEffect(() => {\n const params = new URLSearchParams(window.location.search)\n const searchParam = params.get('search')\n if (searchParam) {\n setQuery(searchParam)\n }\n }, [])\n\n // Filter States\n const [selectedSurname, setSelectedSurname] = useState(\"all\")\n const [selectedHome, setSelectedHome] = useState(\"all\")\n const [statusFilter, setStatusFilter] = useState(\"all\")\n const [generationRange, setGenerationRange] = useState<[number, number]>([1, 100])\n\n // Derived Data\n const allMembers = useMemo(() => Object.values(treeData.members), [treeData])\n\n const { uniqueSurnames, uniqueHomes, minGen, maxGen } = useMemo(() => {\n const surnames = new Set()\n const homes = new Set()\n let min = 1000\n let max = 0\n\n allMembers.forEach((m) => {\n if (m.surname) surnames.add(m.surname)\n if (m.ancestralHome) homes.add(m.ancestralHome)\n if (m.generation) {\n if (m.generation < min) min = m.generation\n if (m.generation > max) max = m.generation\n }\n })\n\n return {\n uniqueSurnames: Array.from(surnames).sort(),\n uniqueHomes: Array.from(homes).sort(),\n minGen: min === 1000 ? 1 : min,\n maxGen: max === 0 ? 100 : max,\n }\n }, [allMembers])\n\n // Initialize slider when data loads\n useMemo(() => {\n if (minGen !== 1000 && maxGen !== 0) {\n // Only update if range is default\n // This is a bit tricky, for now let's just rely on user adjustment or default wide range\n // Ideally we sync this once.\n }\n }, [minGen, maxGen])\n\n const filteredMembers = useMemo(() => {\n let result = allMembers\n\n // 1. Search Query\n if (query) {\n const lowerQuery = query.toLowerCase()\n result = result.filter(\n (m) =>\n m.fullName.toLowerCase().includes(lowerQuery) ||\n m.courtesyName?.toLowerCase().includes(lowerQuery) ||\n m.artName?.toLowerCase().includes(lowerQuery),\n )\n }\n\n // 2. Surname Filter\n if (selectedSurname !== \"all\") {\n result = result.filter((m) => m.surname === selectedSurname)\n }\n\n // 3. Home Filter\n if (selectedHome !== \"all\") {\n result = result.filter((m) => m.ancestralHome === selectedHome)\n }\n\n // 4. Status Filter\n if (statusFilter !== \"all\") {\n if (statusFilter === \"living\") {\n result = result.filter((m) => !m.deathDate)\n } else if (statusFilter === \"deceased\") {\n result = result.filter((m) => !!m.deathDate)\n }\n }\n\n // 5. Generation Filter\n result = result.filter((m) => m.generation >= generationRange[0] && m.generation <= generationRange[1])\n\n // Sort\n return result.sort((a, b) => a.generation - b.generation || (a.birthDate || \"\").localeCompare(b.birthDate || \"\"))\n }, [allMembers, query, selectedSurname, selectedHome, statusFilter, generationRange])\n \n // 按世代分组并排序\n const membersByGeneration = useMemo(() => {\n const groups = new Map()\n \n filteredMembers.forEach(member => {\n const gen = member.generation\n if (!groups.has(gen)) {\n groups.set(gen, [])\n }\n groups.get(gen)!.push(member)\n })\n \n // 转换为数组并排序\n return Array.from(groups.entries())\n .sort((a, b) => a[0] - b[0])\n .map(([generation, members]) => {\n // 区分家族成员和配偶\n const familyMembers = members.filter(m => {\n // 家族成员:有父母关系 或 明确标记为始祖\n const isFounder = m.tags?.includes('始祖')\n const hasFamilyParents = m.fatherId || m.motherId\n \n // 如果有父母关系,肯定是家族成员\n if (hasFamilyParents) return true\n \n // 如果明确标记为始祖,是家族成员\n if (isFounder) return true\n \n // 第1世且没有配偶的,可能是始祖(兼容没有标签的情况)\n if (generation === 1 && (!m.spouseIds || m.spouseIds.length === 0)) return true\n \n // 其他情况(如第1世但有配偶且没有父母的)是配偶身份\n return false\n })\n \n // 对家族成员按年龄排序(出生日期从早到晚 = 年龄从高到低)\n const sortedFamilyMembers = [...familyMembers].sort((a, b) => {\n // 1. 始祖永远排第一\n const aIsFounder = a.tags?.includes('始祖')\n const bIsFounder = b.tags?.includes('始祖')\n if (aIsFounder && !bIsFounder) return -1\n if (!aIsFounder && bIsFounder) return 1\n \n // 2. 按出生日期排序(早出生的在前 = 年龄大的在前)\n const aDate = a.birthDate || \"9999-12-31\"\n const bDate = b.birthDate || \"9999-12-31\"\n return aDate.localeCompare(bDate)\n })\n \n // 3. 将配偶插入到主成员后面\n const result: typeof members = []\n const processedSpouses = new Set()\n \n sortedFamilyMembers.forEach(member => {\n result.push(member)\n \n // 计算该家庭单元的成员数(主成员 + 配偶)\n let familyUnitSize = 1 // 主成员自己\n \n // 如果有配偶,将配偶紧跟在后面\n if (member.spouseIds && member.spouseIds.length > 0) {\n member.spouseIds.forEach(spouseId => {\n const spouse = members.find(m => m.id === spouseId)\n if (spouse && !processedSpouses.has(spouseId)) {\n result.push(spouse)\n processedSpouses.add(spouseId)\n familyUnitSize++\n }\n })\n }\n \n // 计算需要添加的占位符数量,确保填满4的倍数\n // 例如:1个主成员 + 1个配偶 = 2人,需要添加2个占位符\n // 例如:1个主成员 + 3个配偶 = 4人,不需要占位符\n // 例如:1个主成员 + 0个配偶 = 1人,需要添加3个占位符\n const placeholdersNeeded = (4 - (familyUnitSize % 4)) % 4\n for (let i = 0; i < placeholdersNeeded; i++) {\n result.push({ id: `placeholder-${member.id}-${i}`, isPlaceholder: true } as any)\n }\n })\n \n return {\n generation,\n members: result\n }\n })\n }, [filteredMembers])\n\n const clearFilters = () => {\n setSelectedSurname(\"all\")\n setSelectedHome(\"all\")\n setStatusFilter(\"all\")\n setGenerationRange([1, 100]) // Reset to wide range\n setQuery(\"\")\n }\n\n const activeFilterCount =\n (selectedSurname !== \"all\" ? 1 : 0) +\n (selectedHome !== \"all\" ? 1 : 0) +\n (statusFilter !== \"all\" ? 1 : 0) +\n (generationRange[0] > 1 || generationRange[1] < 100 ? 1 : 0)\n\n return (\n
\n \n
\n
\n
\n

家族成员列表

\n
\n
\n \n setQuery(e.target.value)}\n />\n
\n 0 ? \"secondary\" : \"outline\"}\n size=\"icon\"\n onClick={() => setShowFilters(!showFilters)}\n className=\"relative\"\n >\n \n {activeFilterCount > 0 && (\n \n )}\n \n \n \n \n
\n
\n\n {/* Filter Bar */}\n {showFilters && (\n
\n
\n

高级筛选

\n \n
\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n {generationRange[0]} - {generationRange[1]} 世\n \n
\n setGenerationRange(val as [number, number])}\n className=\"py-4\"\n />\n
\n
\n
\n )}\n
\n\n {filteredMembers.length === 0 ? (\n
\n 没有找到匹配的成员。\n
\n ) : (\n
\n {membersByGeneration.map(({ generation, members }) => (\n
\n
\n

第 {generation} 世

\n 共 {members.length} 人\n
\n
\n
\n {members.map((member) => {\n // 检查是否是占位符\n if ((member as any).isPlaceholder) {\n return
\n }\n \n // 判断是否是配偶:\n // 1. 没有父母ID\n // 2. 有配偶ID\n // 3. 不是始祖(没有'始祖'标签)\n const isFounder = member.tags?.includes('始祖')\n const isSpouse = !member.fatherId && !member.motherId && \n member.spouseIds && member.spouseIds.length > 0 && \n !isFounder\n \n // 获取配偶信息\n const spouse = isSpouse && member.spouseIds?.[0] ? allMembers.find(m => m.id === member.spouseIds[0]) : null\n const spouseName = spouse ? spouse.fullName : null\n \n return (\n
\n \n \n \n
\n \n {/* 在世/去世标识 */}\n {member.deathDate && (\n
\n )}\n {!member.deathDate && (\n
\n )}\n
\n
\n
\n

\n {member.fullName}\n {member.courtesyName && (\n \n 字 {member.courtesyName}\n \n )}\n

\n
\n {isFounder ? (\n

\n 家族始祖\n

\n ) : isSpouse && spouseName ? (\n

\n {spouseName}的配偶\n

\n ) : (\n

\n {member.generationName ? `字辈: ${member.generationName}` : \"未录入字辈\"}\n

\n )}\n \n {/* 籍贯和生卒年并排 */}\n
\n

{member.ancestralHome || \"籍贯未知\"}

\n \n {/* 生卒年和年龄 */}\n {(member.birthDate || member.deathDate) && (\n
\n
\n {member.birthDate && new Date(member.birthDate).getFullYear()}\n {member.deathDate && ` - ${new Date(member.deathDate).getFullYear()}`}\n {!member.deathDate && member.birthDate && ' - '}\n
\n {(() => {\n if (!member.birthDate) return null\n const birthYear = new Date(member.birthDate).getFullYear()\n const deathYear = member.deathDate ? new Date(member.deathDate).getFullYear() : new Date().getFullYear()\n const age = deathYear - birthYear\n return (\n
\n {member.deathDate ? `享年${age}岁` : `${age}岁`}\n
\n )\n })()}\n
\n )}\n
\n \n {member.tags && member.tags.length > 0 && (\n
\n {member.tags.map((tag) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n \n \n \n {\n setHighlightedMemberId(member.id)\n router.push('/tree')\n }}\n title=\"在族谱图中定位\"\n >\n \n \n
\n )\n })}\n
\n
\n ))}\n
\n )}\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_fa7c1a71._.js b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_fa7c1a71._.js index 45a4cde7..12389e79 100644 --- a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_fa7c1a71._.js +++ b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_fa7c1a71._.js @@ -4930,13 +4930,37 @@ function MemberProfilePage() { params.set('gender', member.gender === 'MALE' ? 'FEMALE' : 'MALE'); router.push(`/members/new?${params.toString()}`); }; + const handleQuickAddFather = ()=>{ + // 跳转到新增成员页面,并预填父亲信息 + const params = new URLSearchParams(); + params.set('childId', member.id); + params.set('generation', (member.generation - 1).toString()); + params.set('gender', 'MALE'); + // 如果已有母亲,将母亲设置为配偶 + if (member.motherId) { + params.set('spouseId', member.motherId); + } + router.push(`/members/new?${params.toString()}`); + }; + const handleQuickAddMother = ()=>{ + // 跳转到新增成员页面,并预填母亲信息 + const params = new URLSearchParams(); + params.set('childId', member.id); + params.set('generation', (member.generation - 1).toString()); + params.set('gender', 'FEMALE'); + // 如果已有父亲,将父亲设置为配偶 + if (member.fatherId) { + params.set('spouseId', member.fatherId); + } + router.push(`/members/new?${params.toString()}`); + }; if (isEditing) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "min-h-screen flex flex-col bg-background", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$site$2d$header$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 94, + lineNumber: 120, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -4953,14 +4977,14 @@ function MemberProfilePage() { className: "mr-2 h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 98, + lineNumber: 124, columnNumber: 15 }, this), " 返回" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 97, + lineNumber: 123, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h1", { @@ -4971,13 +4995,13 @@ function MemberProfilePage() { ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 100, + lineNumber: 126, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 96, + lineNumber: 122, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$members$2f$member$2d$form$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["MemberForm"], { @@ -4987,19 +5011,19 @@ function MemberProfilePage() { onCancel: ()=>setIsEditing(false) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 102, + lineNumber: 128, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 95, + lineNumber: 121, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 93, + lineNumber: 119, columnNumber: 7 }, this); } @@ -5008,7 +5032,7 @@ function MemberProfilePage() { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$site$2d$header$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 115, + lineNumber: 141, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("main", { @@ -5028,24 +5052,24 @@ function MemberProfilePage() { className: "h-full w-full object-cover" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 122, + lineNumber: 148, columnNumber: 17 }, this) : member.gender === 'FEMALE' ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$circle$2d$user$2d$round$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CircleUserRound$3e$__["CircleUserRound"], { className: "h-20 w-20 text-pink-400" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 129, + lineNumber: 155, columnNumber: 19 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$circle$2d$user$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CircleUser$3e$__["CircleUser"], { className: "h-20 w-20 text-blue-400" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 131, + lineNumber: 157, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 120, + lineNumber: 146, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5058,7 +5082,7 @@ function MemberProfilePage() { children: member.fullName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 137, + lineNumber: 163, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { @@ -5069,13 +5093,13 @@ function MemberProfilePage() { ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 138, + lineNumber: 164, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 136, + lineNumber: 162, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5089,13 +5113,13 @@ function MemberProfilePage() { children: member.courtesyName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 145, + lineNumber: 171, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 144, + lineNumber: 170, columnNumber: 19 }, this), member.artName && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { @@ -5106,13 +5130,13 @@ function MemberProfilePage() { children: member.artName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 150, + lineNumber: 176, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 149, + lineNumber: 175, columnNumber: 19 }, this), member.ancestralHome && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { @@ -5122,13 +5146,13 @@ function MemberProfilePage() { ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 153, + lineNumber: 179, columnNumber: 42 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 142, + lineNumber: 168, columnNumber: 15 }, this), member.tags && member.tags.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5138,29 +5162,67 @@ function MemberProfilePage() { children: tag }, tag, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 158, + lineNumber: 184, columnNumber: 21 }, this)) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 156, + lineNumber: 182, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 135, + lineNumber: 161, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 119, + lineNumber: 145, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex gap-2 flex-wrap", children: [ + !member.fatherId && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { + variant: "outline", + onClick: handleQuickAddFather, + className: "gap-2", + children: [ + /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2d$plus$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__UserPlus$3e$__["UserPlus"], { + className: "h-4 w-4" + }, void 0, false, { + fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", + lineNumber: 199, + columnNumber: 17 + }, this), + " 添加父亲" + ] + }, void 0, true, { + fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", + lineNumber: 198, + columnNumber: 15 + }, this), + !member.motherId && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { + variant: "outline", + onClick: handleQuickAddMother, + className: "gap-2", + children: [ + /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2d$plus$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__UserPlus$3e$__["UserPlus"], { + className: "h-4 w-4" + }, void 0, false, { + fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", + lineNumber: 204, + columnNumber: 17 + }, this), + " 添加母亲" + ] + }, void 0, true, { + fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", + lineNumber: 203, + columnNumber: 15 + }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { variant: "default", onClick: handleQuickAddChild, @@ -5170,14 +5232,14 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 172, + lineNumber: 208, columnNumber: 15 }, this), " 添加子女" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 171, + lineNumber: 207, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { @@ -5189,14 +5251,14 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 175, + lineNumber: 211, columnNumber: 15 }, this), " 添加配偶" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 174, + lineNumber: 210, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { @@ -5207,12 +5269,12 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 178, + lineNumber: 214, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 177, + lineNumber: 213, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { @@ -5222,12 +5284,12 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 181, + lineNumber: 217, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 180, + lineNumber: 216, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { @@ -5239,14 +5301,14 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 184, + lineNumber: 220, columnNumber: 15 }, this), " 编辑" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 183, + lineNumber: 219, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { @@ -5257,24 +5319,24 @@ function MemberProfilePage() { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 187, + lineNumber: 223, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 186, + lineNumber: 222, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 170, + lineNumber: 196, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 118, + lineNumber: 144, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5292,14 +5354,14 @@ function MemberProfilePage() { className: "w-1 h-6 bg-primary rounded-full" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 198, + lineNumber: 234, columnNumber: 17 }, this), "生平事迹" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 197, + lineNumber: 233, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5309,25 +5371,25 @@ function MemberProfilePage() { children: member.bio }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 203, + lineNumber: 239, columnNumber: 19 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-muted-foreground italic", children: "暂无生平记录..." }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 205, + lineNumber: 241, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 201, + lineNumber: 237, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 196, + lineNumber: 232, columnNumber: 13 }, this), member.photoIds && member.photoIds.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("section", { @@ -5339,14 +5401,14 @@ function MemberProfilePage() { className: "h-6 w-6 text-primary" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 214, + lineNumber: 250, columnNumber: 19 }, this), "照片墙" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 213, + lineNumber: 249, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5359,18 +5421,18 @@ function MemberProfilePage() { readonly: false }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 218, + lineNumber: 254, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 217, + lineNumber: 253, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 212, + lineNumber: 248, columnNumber: 15 }, this), member.stories && member.stories.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("section", { @@ -5382,14 +5444,14 @@ function MemberProfilePage() { className: "h-6 w-6 text-primary" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 231, + lineNumber: 267, columnNumber: 19 }, this), "家族故事" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 230, + lineNumber: 266, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5402,18 +5464,18 @@ function MemberProfilePage() { readonly: false }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 235, + lineNumber: 271, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 234, + lineNumber: 270, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 229, + lineNumber: 265, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("section", { @@ -5425,14 +5487,14 @@ function MemberProfilePage() { className: "w-1 h-6 bg-secondary rounded-full" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 246, + lineNumber: 282, columnNumber: 17 }, this), "家族关系" ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 245, + lineNumber: 281, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5446,7 +5508,7 @@ function MemberProfilePage() { children: "父亲 (Father)" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 251, + lineNumber: 287, columnNumber: 19 }, this), member.fatherId ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$client$2f$app$2d$dir$2f$link$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { @@ -5455,27 +5517,27 @@ function MemberProfilePage() { children: getMember(member.fatherId)?.fullName || member.fatherId }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 255, + lineNumber: 291, columnNumber: 21 }, this) : member.spouseFatherName ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-lg font-serif font-bold text-foreground", children: member.spouseFatherName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 262, + lineNumber: 298, columnNumber: 21 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 266, + lineNumber: 302, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 250, + lineNumber: 286, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5486,7 +5548,7 @@ function MemberProfilePage() { children: "母亲 (Mother)" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 270, + lineNumber: 306, columnNumber: 19 }, this), member.motherId ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$client$2f$app$2d$dir$2f$link$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { @@ -5495,27 +5557,27 @@ function MemberProfilePage() { children: getMember(member.motherId)?.fullName || member.motherId }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 274, + lineNumber: 310, columnNumber: 21 }, this) : member.spouseMotherName ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-lg font-serif font-bold text-foreground", children: member.spouseMotherName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 281, + lineNumber: 317, columnNumber: 21 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 285, + lineNumber: 321, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 269, + lineNumber: 305, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5526,7 +5588,7 @@ function MemberProfilePage() { children: "配偶 (Spouse)" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 289, + lineNumber: 325, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5537,25 +5599,25 @@ function MemberProfilePage() { children: getMember(spouseId)?.fullName || spouseId }, spouseId, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 295, + lineNumber: 331, columnNumber: 25 }, this)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "无记录" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 304, + lineNumber: 340, columnNumber: 23 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 292, + lineNumber: 328, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 288, + lineNumber: 324, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5566,7 +5628,7 @@ function MemberProfilePage() { children: "子女 (Children)" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 309, + lineNumber: 345, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5577,43 +5639,43 @@ function MemberProfilePage() { children: getMember(childId)?.fullName || childId }, childId, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 315, + lineNumber: 351, columnNumber: 25 }, this)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "无记录" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 324, + lineNumber: 360, columnNumber: 23 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 312, + lineNumber: 348, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 308, + lineNumber: 344, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 249, + lineNumber: 285, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 244, + lineNumber: 280, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 195, + lineNumber: 231, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5627,7 +5689,7 @@ function MemberProfilePage() { children: "详细信息" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 335, + lineNumber: 371, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dl", { @@ -5640,7 +5702,7 @@ function MemberProfilePage() { children: "出生日期" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 338, + lineNumber: 374, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5648,13 +5710,13 @@ function MemberProfilePage() { children: member.birthDate || "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 339, + lineNumber: 375, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 337, + lineNumber: 373, columnNumber: 17 }, this), member.deathDate && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { @@ -5666,7 +5728,7 @@ function MemberProfilePage() { children: "逝世日期" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 344, + lineNumber: 380, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5674,13 +5736,13 @@ function MemberProfilePage() { children: member.deathDate }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 345, + lineNumber: 381, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 343, + lineNumber: 379, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5690,7 +5752,7 @@ function MemberProfilePage() { children: "谥号" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 348, + lineNumber: 384, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5698,13 +5760,13 @@ function MemberProfilePage() { children: member.posthumousName || "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 349, + lineNumber: 385, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 347, + lineNumber: 383, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5714,7 +5776,7 @@ function MemberProfilePage() { children: "墓地" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 352, + lineNumber: 388, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5722,13 +5784,13 @@ function MemberProfilePage() { children: member.burialPlace || "-" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 353, + lineNumber: 389, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 351, + lineNumber: 387, columnNumber: 21 }, this) ] @@ -5740,7 +5802,7 @@ function MemberProfilePage() { children: "字辈" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 359, + lineNumber: 395, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5748,25 +5810,25 @@ function MemberProfilePage() { children: member.generationName }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 360, + lineNumber: 396, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 358, + lineNumber: 394, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 336, + lineNumber: 372, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 334, + lineNumber: 370, columnNumber: 13 }, this), (member.phone || member.telephone || member.email || member.address) && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5777,7 +5839,7 @@ function MemberProfilePage() { children: "联系方式" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 369, + lineNumber: 405, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dl", { @@ -5790,7 +5852,7 @@ function MemberProfilePage() { children: "手机号" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 373, + lineNumber: 409, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5801,18 +5863,18 @@ function MemberProfilePage() { children: member.phone }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 375, + lineNumber: 411, columnNumber: 25 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 374, + lineNumber: 410, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 372, + lineNumber: 408, columnNumber: 21 }, this), member.telephone && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5822,7 +5884,7 @@ function MemberProfilePage() { children: "固定电话" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 383, + lineNumber: 419, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5833,18 +5895,18 @@ function MemberProfilePage() { children: member.telephone }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 385, + lineNumber: 421, columnNumber: 25 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 384, + lineNumber: 420, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 382, + lineNumber: 418, columnNumber: 21 }, this), member.email && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5854,7 +5916,7 @@ function MemberProfilePage() { children: "邮箱" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 393, + lineNumber: 429, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5865,18 +5927,18 @@ function MemberProfilePage() { children: member.email }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 395, + lineNumber: 431, columnNumber: 25 }, this) }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 394, + lineNumber: 430, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 392, + lineNumber: 428, columnNumber: 21 }, this), member.address && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { @@ -5886,7 +5948,7 @@ function MemberProfilePage() { children: "现居地址" }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 403, + lineNumber: 439, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("dd", { @@ -5894,49 +5956,49 @@ function MemberProfilePage() { children: member.address }, void 0, false, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 404, + lineNumber: 440, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 402, + lineNumber: 438, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 370, + lineNumber: 406, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 368, + lineNumber: 404, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 333, + lineNumber: 369, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 193, + lineNumber: 229, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 116, + lineNumber: 142, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx", - lineNumber: 114, + lineNumber: 140, columnNumber: 5 }, this); } diff --git a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_fa7c1a71._.js.map b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_fa7c1a71._.js.map index dfc2c889..029a6b5c 100644 --- a/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_fa7c1a71._.js.map +++ b/.next/dev/static/chunks/Documents_go-new_chinese-family-tree_fa7c1a71._.js.map @@ -13,5 +13,5 @@ {"offset": {"line": 2218, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/photo-gallery.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { db } from \"@/lib/db\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { X, Upload, Image as ImageIcon, Plus, ZoomIn } from \"lucide-react\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport imageCompression from \"browser-image-compression\"\n\ninterface PhotoGalleryProps {\n photoIds?: string[]\n onChange: (photoIds: string[]) => void\n readonly?: boolean\n}\n\nexport function PhotoGallery({ photoIds = [], onChange, readonly = false }: PhotoGalleryProps) {\n const { showAlert, showConfirm } = useDialog()\n const [photos, setPhotos] = useState<{ id: string; url: string }[]>([])\n const [selectedPhoto, setSelectedPhoto] = useState(null)\n const [isUploading, setIsUploading] = useState(false)\n\n // 加载照片\n useEffect(() => {\n const loadPhotos = async () => {\n const loadedPhotos = await Promise.all(\n photoIds.map(async (id) => {\n try {\n const image = await db.images.get(id)\n if (image) {\n const url = URL.createObjectURL(image.blob)\n return { id, url }\n }\n } catch (error) {\n console.error('加载照片失败:', error)\n }\n return null\n })\n )\n setPhotos(loadedPhotos.filter(Boolean) as { id: string; url: string }[])\n }\n\n if (photoIds.length > 0) {\n loadPhotos()\n }\n\n // 清理 URL\n return () => {\n photos.forEach(photo => URL.revokeObjectURL(photo.url))\n }\n }, [photoIds])\n\n const handleUpload = async (e: React.ChangeEvent) => {\n const files = e.target.files\n if (!files || files.length === 0) return\n\n setIsUploading(true)\n try {\n const newPhotoIds: string[] = []\n\n for (const file of Array.from(files)) {\n if (!file.type.startsWith('image/')) continue\n\n // 压缩图片\n const options = {\n maxSizeMB: 2,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n }\n \n const compressedFile = await imageCompression(file, options)\n \n // 保存到数据库\n const imageId = uuidv4()\n await db.images.add({\n id: imageId,\n blob: compressedFile,\n mimeType: compressedFile.type,\n createdAt: new Date().toISOString(),\n })\n\n newPhotoIds.push(imageId)\n }\n\n // 更新照片列表\n onChange([...photoIds, ...newPhotoIds])\n } catch (error) {\n console.error('上传照片失败:', error)\n await showAlert('上传照片失败', '错误')\n } finally {\n setIsUploading(false)\n e.target.value = ''\n }\n }\n\n const handleDelete = async (photoId: string) => {\n const confirmed = await showConfirm('确定要删除这张照片吗?', '删除照片')\n if (confirmed) {\n onChange(photoIds.filter(id => id !== photoId))\n }\n }\n\n return (\n
\n
\n

照片墙 ({photos.length})

\n {!readonly && (\n \n )}\n
\n\n {photos.length > 0 ? (\n
\n {photos.map((photo) => (\n
\n setSelectedPhoto(photo.url)}\n />\n {!readonly && (\n handleDelete(photo.id)}\n >\n \n \n )}\n setSelectedPhoto(photo.url)}\n >\n \n \n
\n ))}\n
\n ) : (\n
\n 暂无照片\n
\n )}\n\n {/* 照片预览对话框 */}\n setSelectedPhoto(null)}>\n \n \n 照片预览\n \n {selectedPhoto && (\n \n )}\n \n \n
\n )\n}\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 2535, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/story-manager.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Label } from \"@/components/ui/label\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from \"@/components/ui/dialog\"\nimport { Plus, Edit, Trash, BookOpen, Calendar } from \"lucide-react\"\nimport type { FamilyStory } from \"@/types/family\"\nimport { v4 as uuidv4 } from \"uuid\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\n\ninterface StoryManagerProps {\n stories?: FamilyStory[]\n onChange: (stories: FamilyStory[]) => void\n readonly?: boolean\n}\n\nexport function StoryManager({ stories = [], onChange, readonly = false }: StoryManagerProps) {\n const { showAlert, showConfirm } = useDialog()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const [editingStory, setEditingStory] = useState(null)\n const [formData, setFormData] = useState>({\n title: \"\",\n content: \"\",\n date: \"\",\n })\n\n const handleAdd = () => {\n setEditingStory(null)\n setFormData({ title: \"\", content: \"\", date: \"\" })\n setIsDialogOpen(true)\n }\n\n const handleEdit = (story: FamilyStory) => {\n setEditingStory(story)\n setFormData(story)\n setIsDialogOpen(true)\n }\n\n const handleDelete = async (storyId: string) => {\n const confirmed = await showConfirm(\"确定要删除这个故事吗?\", \"删除故事\")\n if (confirmed) {\n onChange(stories.filter(s => s.id !== storyId))\n }\n }\n\n const handleSave = async () => {\n if (!formData.title || !formData.content) {\n await showAlert(\"请填写标题和内容\", \"提示\")\n return\n }\n\n const now = new Date().toISOString()\n \n if (editingStory) {\n // 更新现有故事\n onChange(\n stories.map(s =>\n s.id === editingStory.id\n ? { ...s, ...formData, updatedAt: now }\n : s\n )\n )\n } else {\n // 添加新故事\n const newStory: FamilyStory = {\n id: uuidv4(),\n title: formData.title!,\n content: formData.content!,\n date: formData.date,\n imageIds: formData.imageIds || [],\n createdAt: now,\n updatedAt: now,\n }\n onChange([...stories, newStory])\n }\n\n setIsDialogOpen(false)\n setFormData({ title: \"\", content: \"\", date: \"\" })\n }\n\n return (\n
\n
\n

\n \n 家族故事 ({stories.length})\n

\n {!readonly && (\n \n \n 添加故事\n \n )}\n
\n\n {stories.length > 0 ? (\n
\n {stories\n .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())\n .map((story) => (\n \n \n
\n
\n {story.title}\n {story.date && (\n
\n \n {story.date}\n
\n )}\n
\n {!readonly && (\n
\n handleEdit(story)}\n >\n \n \n handleDelete(story.id)}\n >\n \n \n
\n )}\n
\n
\n \n

\n {story.content}\n

\n
\n 创建于 {new Date(story.createdAt).toLocaleDateString('zh-CN')}\n
\n
\n
\n ))}\n
\n ) : (\n
\n 暂无家族故事\n
\n )}\n\n {/* 添加/编辑故事对话框 */}\n \n \n \n {editingStory ? \"编辑故事\" : \"添加故事\"}\n \n
\n
\n \n setFormData({ ...formData, title: e.target.value })}\n />\n
\n
\n \n setFormData({ ...formData, date: e.target.value })}\n />\n
\n
\n \n setFormData({ ...formData, content: e.target.value })}\n />\n
\n
\n \n \n \n \n
\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 3006, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/components/members/member-form.tsx"],"sourcesContent":["\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { CalendarIcon, User, Scroll, Users, Images, BookOpen } from \"lucide-react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { ImageUpload } from \"@/components/ui/image-upload\"\nimport { PhotoGallery } from \"./photo-gallery\"\nimport { StoryManager } from \"./story-manager\"\n\ninterface MemberFormProps {\n initialData?: Partial\n existingMembers?: FamilyMember[]\n onSubmit: (data: FamilyMember) => void\n onCancel: () => void\n}\n\nexport function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }: MemberFormProps) {\n // 计算最大世系\n const maxGeneration = existingMembers.length > 0 \n ? Math.max(...existingMembers.map(m => m.generation || 1))\n : 1\n \n // 获取始祖的姓氏(第1世成员)\n const ancestorSurname = existingMembers.find(m => m.generation === 1)?.surname || \"\"\n \n // Initialize state with default values or initialData\n const [formData, setFormData] = useState>(() => {\n const defaults = {\n id: crypto.randomUUID(),\n surname: ancestorSurname,\n givenName: \"\",\n fullName: \"\",\n gender: \"MALE\" as \"MALE\" | \"FEMALE\",\n generation: maxGeneration,\n spouseIds: [],\n childrenIds: [],\n tags: [],\n }\n \n if (!initialData) return defaults\n \n return {\n ...defaults,\n ...initialData,\n gender: (initialData.gender || \"MALE\").toUpperCase() as \"MALE\" | \"FEMALE\",\n spouseIds: initialData.spouseIds || [],\n childrenIds: initialData.childrenIds || [],\n tags: initialData.tags || [],\n fatherId: initialData.fatherId || undefined,\n motherId: initialData.motherId || undefined,\n }\n })\n\n const [errors, setErrors] = useState([])\n\n const handleChange = (field: keyof FamilyMember, value: any) => {\n setFormData((prev) => {\n const newData = { ...prev, [field]: value }\n \n // Auto-update full name if surname or given name changes\n if (field === \"surname\" || field === \"givenName\") {\n newData.fullName = (newData.surname || \"\") + (newData.givenName || \"\")\n }\n \n // 选择父亲时自动带出母亲\n if (field === \"fatherId\" && value) {\n const father = existingMembers.find(m => m.id === value)\n if (father && father.spouseIds && father.spouseIds.length > 0) {\n // 找到父亲的配偶(母亲)\n const motherId = father.spouseIds[0]\n newData.motherId = motherId\n }\n }\n \n // 选择母亲时自动带出父亲\n if (field === \"motherId\" && value) {\n const mother = existingMembers.find(m => m.id === value)\n if (mother && mother.spouseIds && mother.spouseIds.length > 0) {\n // 找到母亲的配偶(父亲)\n const fatherId = mother.spouseIds[0]\n newData.fatherId = fatherId\n }\n }\n \n return newData\n })\n // Clear errors when user makes changes\n if (errors.length > 0) setErrors([])\n }\n\n const handleSpouseAdd = (spouseId: string) => {\n if (!spouseId || spouseId === \"none\") return\n \n setFormData((prev) => {\n const currentSpouses = prev.spouseIds || []\n // 避免重复添加\n if (currentSpouses.includes(spouseId)) return prev\n \n return {\n ...prev,\n spouseIds: [...currentSpouses, spouseId]\n }\n })\n }\n\n const handleSpouseRemove = (spouseId: string) => {\n setFormData((prev) => ({\n ...prev,\n spouseIds: (prev.spouseIds || []).filter(id => id !== spouseId)\n }))\n }\n\n const handleChildAdd = (childId: string) => {\n if (!childId || childId === \"none\") return\n \n setFormData((prev) => {\n const currentChildren = prev.childrenIds || []\n // 避免重复添加\n if (currentChildren.includes(childId)) return prev\n \n return {\n ...prev,\n childrenIds: [...currentChildren, childId]\n }\n })\n }\n\n const handleChildRemove = (childId: string) => {\n setFormData((prev) => ({\n ...prev,\n childrenIds: (prev.childrenIds || []).filter(id => id !== childId)\n }))\n }\n\n const validate = (): boolean => {\n const newErrors: string[] = []\n\n // 1. Date Validation\n if (formData.birthDate && formData.deathDate) {\n if (new Date(formData.birthDate) > new Date(formData.deathDate)) {\n newErrors.push(\"出生日期不能晚于逝世日期\")\n }\n }\n\n // 2. Parent Age Validation\n const birthYear = formData.birthDate ? new Date(formData.birthDate).getFullYear() : null\n\n if (birthYear) {\n if (formData.fatherId) {\n const father = existingMembers.find((m) => m.id === formData.fatherId)\n if (father?.birthDate) {\n const fatherBirthYear = new Date(father.birthDate).getFullYear()\n if (birthYear - fatherBirthYear < 15) {\n newErrors.push(`与父亲的年龄差过小 (${birthYear - fatherBirthYear}岁),请确认`)\n }\n if (birthYear < fatherBirthYear) {\n newErrors.push(\"出生日期不能早于父亲\")\n }\n }\n }\n\n if (formData.motherId) {\n const mother = existingMembers.find((m) => m.id === formData.motherId)\n if (mother?.birthDate) {\n const motherBirthYear = new Date(mother.birthDate).getFullYear()\n if (birthYear - motherBirthYear < 15) {\n newErrors.push(`与母亲的年龄差过小 (${birthYear - motherBirthYear}岁),请确认`)\n }\n if (birthYear < motherBirthYear) {\n newErrors.push(\"出生日期不能早于母亲\")\n }\n }\n }\n }\n\n // 3. Generation Validation\n if (formData.fatherId) {\n const father = existingMembers.find((m) => m.id === formData.fatherId)\n if (father && formData.generation !== father.generation + 1) {\n newErrors.push(`世系错误:父亲是第 ${father.generation} 世,子女应为第 ${father.generation + 1} 世`)\n }\n }\n\n // 4. Circular Reference Detection (循环引用检测)\n if (formData.fatherId || formData.motherId) {\n const visited = new Set()\n const checkCircular = (memberId: string): boolean => {\n if (memberId === formData.id) return true\n if (visited.has(memberId)) return false\n visited.add(memberId)\n\n const member = existingMembers.find((m) => m.id === memberId)\n if (!member) return false\n\n if (member.fatherId && checkCircular(member.fatherId)) return true\n if (member.motherId && checkCircular(member.motherId)) return true\n\n return false\n }\n\n if (formData.fatherId && checkCircular(formData.fatherId)) {\n newErrors.push(\"检测到循环引用:不能将自己的后代设置为父亲\")\n }\n if (formData.motherId && checkCircular(formData.motherId)) {\n newErrors.push(\"检测到循环引用:不能将自己的后代设置为母亲\")\n }\n }\n\n // 5. Self-Reference Detection (自我引用检测)\n if (formData.fatherId === formData.id) {\n newErrors.push(\"不能将自己设置为自己的父亲\")\n }\n if (formData.motherId === formData.id) {\n newErrors.push(\"不能将自己设置为自己的母亲\")\n }\n if (formData.spouseIds?.includes(formData.id || \"\")) {\n newErrors.push(\"不能将自己设置为自己的配偶\")\n }\n\n setErrors(newErrors)\n return newErrors.length === 0\n }\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n if (validate()) {\n onSubmit(formData as FamilyMember)\n }\n }\n\n const potentialRelatives = existingMembers.filter((m) => m.id !== formData.id)\n\n return (\n
\n {errors.length > 0 && (\n
\n

请检查以下问题:

\n
    \n {errors.map((err, index) => (\n
  • {err}
  • \n ))}\n
\n
\n )}\n\n
\n {/* 基本信息和家庭关系 - 两列布局 */}\n
\n {/* 左列:基本信息 */}\n \n \n \n \n 基本信息 (Identity)\n \n \n \n
\n handleChange(\"avatarImageId\", imageId)}\n />\n
\n\n
\n
\n \n handleChange(\"surname\", e.target.value)}\n />\n
\n
\n \n handleChange(\"givenName\", e.target.value)}\n />\n
\n
\n\n
\n
\n \n \n
\n
\n \n handleChange(\"generation\", Number.parseInt(e.target.value))}\n />\n
\n
\n
\n
\n\n {/* 右列:家庭关系 */}\n \n \n \n \n 家庭关系 (Relationships)\n \n \n \n
\n \n
\n handleChange(\"fatherId\", val === \"none\" ? undefined : val)}\n >\n \n \n \n \n 无 (None)\n {potentialRelatives\n .filter((m) => m.gender === \"MALE\" && m.generation === (formData.generation || 1) - 1)\n .map((m) => (\n \n {m.fullName} ({m.generation}世)\n \n ))}\n \n \n {!formData.fatherId && (\n handleChange(\"spouseFatherName\", e.target.value)}\n className=\"flex-1\"\n />\n )}\n
\n
\n\n
\n \n
\n handleChange(\"motherId\", val === \"none\" ? undefined : val)}\n >\n \n \n \n \n 无 (None)\n {potentialRelatives\n .filter((m) => m.gender === \"FEMALE\" && m.generation === (formData.generation || 1) - 1)\n .map((m) => (\n \n {m.fullName} ({m.generation}世)\n \n ))}\n \n \n {!formData.motherId && (\n handleChange(\"spouseMotherName\", e.target.value)}\n className=\"flex-1\"\n />\n )}\n
\n
\n\n
\n \n \n \n {/* 已选配偶列表 */}\n {formData.spouseIds && formData.spouseIds.length > 0 && (\n
\n {formData.spouseIds.map((spouseId, index) => {\n const spouse = existingMembers.find(m => m.id === spouseId)\n if (!spouse) return null\n \n return (\n
\n \n {index + 1}. {spouse.fullName} (第{spouse.generation}世)\n \n handleSpouseRemove(spouseId)}\n className=\"h-6 w-6 p-0 hover:bg-destructive hover:text-destructive-foreground\"\n >\n ×\n \n
\n )\n })}\n
\n )}\n
\n\n
\n \n \n \n {/* 已选子女列表 */}\n {formData.childrenIds && formData.childrenIds.length > 0 && (\n
\n {formData.childrenIds.map((childId, index) => {\n const child = existingMembers.find(m => m.id === childId)\n if (!child) return null\n \n return (\n
\n \n {index + 1}. {child.fullName} (第{child.generation}世)\n \n handleChildRemove(childId)}\n className=\"h-6 w-6 p-0 hover:bg-destructive hover:text-destructive-foreground\"\n >\n ×\n \n
\n )\n })}\n
\n )}\n
\n
\n
\n
\n\n {/* Traditional Names */}\n \n \n \n \n 传统称谓 (Traditional Names)\n \n \n \n
\n
\n \n handleChange(\"courtesyName\", e.target.value)}\n placeholder=\"e.g. 伯虎\"\n />\n
\n
\n \n handleChange(\"artName\", e.target.value)}\n placeholder=\"e.g. 六如居士\"\n />\n
\n
\n
\n
\n \n handleChange(\"generationName\", e.target.value)}\n />\n
\n
\n \n handleChange(\"posthumousName\", e.target.value)}\n />\n
\n
\n
\n
\n\n {/* Dates & Places */}\n \n \n \n \n 生平与地点 (Life & Places)\n \n \n \n
\n
\n \n handleChange(\"birthDate\", e.target.value)}\n />\n
\n
\n \n handleChange(\"deathDate\", e.target.value)}\n />\n
\n
\n
\n \n handleChange(\"ancestralHome\", e.target.value)}\n placeholder=\"e.g. 福建省泉州市\"\n />\n
\n
\n \n handleChange(\"burialPlace\", e.target.value)}\n />\n
\n
\n
\n\n {/* Contact Information */}\n \n \n \n \n 联系方式 (Contact Information)\n \n 在世成员的联系方式\n \n \n
\n \n handleChange(\"phone\", e.target.value)}\n placeholder=\"e.g. 13800138000\"\n />\n
\n
\n \n handleChange(\"telephone\", e.target.value)}\n placeholder=\"e.g. 0592-1234567\"\n />\n
\n
\n \n handleChange(\"email\", e.target.value)}\n placeholder=\"e.g. example@email.com\"\n />\n
\n
\n \n handleChange(\"address\", e.target.value)}\n placeholder=\"e.g. 福建省厦门市思明区XX路XX号\"\n />\n
\n
\n
\n\n {/* Biography */}\n \n \n \n \n 生平事迹 (Biography)\n \n \n \n handleChange(\"bio\", e.target.value)}\n />\n \n \n\n {/* Tags */}\n \n \n \n \n 标签 (Tags)\n \n 添加标签以便分类和搜索(按回车添加)\n \n \n
\n
\n {\n if (e.key === 'Enter') {\n e.preventDefault()\n const input = e.currentTarget\n const value = input.value.trim()\n if (value && !(formData.tags || []).includes(value)) {\n handleChange('tags', [...(formData.tags || []), value])\n input.value = ''\n }\n }\n }}\n />\n
\n {formData.tags && formData.tags.length > 0 && (\n
\n {formData.tags.map((tag, index) => (\n \n {tag}\n {\n const newTags = formData.tags?.filter((_, i) => i !== index) || []\n handleChange('tags', newTags)\n }}\n className=\"ml-1 hover:text-destructive\"\n >\n ×\n \n \n ))}\n
\n )}\n
\n
\n
\n\n {/* Photo Gallery */}\n \n \n \n \n 照片墙 (Photo Gallery)\n \n 上传多张照片记录珍贵时刻\n \n \n handleChange(\"photoIds\", photoIds)}\n />\n \n \n\n {/* Family Stories */}\n \n \n \n \n 家族故事 (Family Stories)\n \n 记录与此成员相关的家族故事\n \n \n handleChange(\"stories\", stories)}\n />\n \n \n\n
\n\n
\n \n \n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 4787, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/%5Bid%5D/page.tsx"],"sourcesContent":["\"use client\"\n\nimport Link from \"next/link\"\n\nimport { useParams, useRouter } from \"next/navigation\"\nimport { useFamily } from \"@/context/family-context\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { MemberForm } from \"@/components/members/member-form\"\nimport { Button } from \"@/components/ui/button\"\nimport { ArrowLeft, Edit, Trash, Share2, Printer, CircleUser, CircleUserRound, Images, BookOpen, UserPlus } from \"lucide-react\"\nimport { useState, useEffect } from \"react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { db } from \"@/lib/db\"\nimport { PhotoGallery } from \"@/components/members/photo-gallery\"\nimport { StoryManager } from \"@/components/members/story-manager\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\n\nexport default function MemberProfilePage() {\n const { id } = useParams()\n const { getMember, updateMember, deleteMember, treeData } = useFamily()\n const { showConfirm } = useDialog()\n const router = useRouter()\n const [isEditing, setIsEditing] = useState(false)\n const [avatarBlobUrl, setAvatarBlobUrl] = useState(undefined)\n\n const member = getMember(id as string)\n const allMembers = Object.values(treeData.members)\n\n // Load avatar blob if exists\n useEffect(() => {\n if (member?.avatarImageId) {\n db.images.get(member.avatarImageId).then((image) => {\n if (image) {\n const url = URL.createObjectURL(image.blob)\n setAvatarBlobUrl(url)\n return () => URL.revokeObjectURL(url)\n }\n })\n } else {\n setAvatarBlobUrl(undefined)\n }\n }, [member?.avatarImageId])\n\n if (!member) {\n return (\n
\n \n
\n

Member not found

\n \n
\n
\n )\n }\n\n const handleSave = (updatedMember: FamilyMember) => {\n updateMember(updatedMember.id, updatedMember)\n setIsEditing(false)\n }\n\n const handleDelete = async () => {\n const confirmed = await showConfirm(\"确定要删除这位成员吗?这将同时删除其关联关系。\", \"删除成员\", \"destructive\")\n if (confirmed) {\n deleteMember(member.id)\n router.push(\"/members\")\n }\n }\n\n const handleQuickAddChild = () => {\n // 跳转到新增成员页面,并预填父母信息\n const params = new URLSearchParams()\n if (member.gender === 'MALE') {\n params.set('fatherId', member.id)\n } else {\n params.set('motherId', member.id)\n }\n params.set('generation', (member.generation + 1).toString())\n router.push(`/members/new?${params.toString()}`)\n }\n\n const handleQuickAddSpouse = () => {\n // 跳转到新增成员页面,并预填配偶信息\n const params = new URLSearchParams()\n params.set('spouseId', member.id)\n params.set('generation', member.generation.toString())\n // 配偶性别与当前成员相反\n params.set('gender', member.gender === 'MALE' ? 'FEMALE' : 'MALE')\n router.push(`/members/new?${params.toString()}`)\n }\n\n if (isEditing) {\n return (\n
\n \n
\n
\n \n

编辑成员: {member.fullName}

\n
\n setIsEditing(false)} \n />\n
\n
\n )\n }\n\n return (\n
\n \n
\n {/* Header Section */}\n
\n
\n
\n {avatarBlobUrl ? (\n \n ) : (\n member.gender === 'FEMALE' ? (\n \n ) : (\n \n )\n )}\n
\n
\n
\n

{member.fullName}

\n \n {member.generation}世\n \n
\n
\n {member.courtesyName && (\n

\n 字:{member.courtesyName}\n

\n )}\n {member.artName && (\n

\n 号:{member.artName}\n

\n )}\n {member.ancestralHome &&

籍贯:{member.ancestralHome}

}\n
\n {member.tags && member.tags.length > 0 && (\n
\n {member.tags.map((tag) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n
\n\n
\n \n \n \n \n \n \n
\n
\n\n {/* Content Grid */}\n
\n {/* Main Biography */}\n
\n
\n

\n \n 生平事迹\n

\n
\n {member.bio ? (\n

{member.bio}

\n ) : (\n

暂无生平记录...

\n )}\n
\n
\n\n {/* Photo Gallery */}\n {member.photoIds && member.photoIds.length > 0 && (\n
\n

\n \n 照片墙\n

\n
\n updateMember(member.id, { photoIds })}\n readonly={false}\n />\n
\n
\n )}\n\n {/* Family Stories */}\n {member.stories && member.stories.length > 0 && (\n
\n

\n \n 家族故事\n

\n
\n updateMember(member.id, { stories })}\n readonly={false}\n />\n
\n
\n )}\n\n
\n

\n \n 家族关系\n

\n
\n
\n

\n 父亲 (Father)\n

\n {member.fatherId ? (\n \n {getMember(member.fatherId)?.fullName || member.fatherId}\n \n ) : member.spouseFatherName ? (\n \n {member.spouseFatherName}\n \n ) : (\n -\n )}\n
\n
\n

\n 母亲 (Mother)\n

\n {member.motherId ? (\n \n {getMember(member.motherId)?.fullName || member.motherId}\n \n ) : member.spouseMotherName ? (\n \n {member.spouseMotherName}\n \n ) : (\n -\n )}\n
\n
\n

\n 配偶 (Spouse)\n

\n
\n {member.spouseIds?.length > 0 ? (\n member.spouseIds.map((spouseId) => (\n \n {getMember(spouseId)?.fullName || spouseId}\n \n ))\n ) : (\n 无记录\n )}\n
\n
\n
\n

\n 子女 (Children)\n

\n
\n {member.childrenIds?.length > 0 ? (\n member.childrenIds.map((childId) => (\n \n {getMember(childId)?.fullName || childId}\n \n ))\n ) : (\n 无记录\n )}\n
\n
\n
\n
\n
\n\n {/* Sidebar Info */}\n
\n
\n

详细信息

\n
\n
\n
出生日期
\n
{member.birthDate || \"-\"}
\n
\n {member.deathDate && (\n <>\n
\n
逝世日期
\n
{member.deathDate}
\n
\n
\n
谥号
\n
{member.posthumousName || \"-\"}
\n
\n
\n
墓地
\n
{member.burialPlace || \"-\"}
\n
\n \n )}\n {member.generationName && (\n
\n
字辈
\n
{member.generationName}
\n
\n )}\n
\n
\n \n {/* 联系方式 */}\n {(member.phone || member.telephone || member.email || member.address) && (\n
\n

联系方式

\n
\n {member.phone && (\n
\n
手机号
\n
\n \n {member.phone}\n \n
\n
\n )}\n {member.telephone && (\n
\n
固定电话
\n
\n \n {member.telephone}\n \n
\n
\n )}\n {member.email && (\n
\n
邮箱
\n
\n \n {member.email}\n \n
\n
\n )}\n {member.address && (\n
\n
现居地址
\n
{member.address}
\n
\n )}\n
\n
\n )}\n
\n
\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 4787, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/members/%5Bid%5D/page.tsx"],"sourcesContent":["\"use client\"\n\nimport Link from \"next/link\"\n\nimport { useParams, useRouter } from \"next/navigation\"\nimport { useFamily } from \"@/context/family-context\"\nimport { SiteHeader } from \"@/components/site-header\"\nimport { MemberForm } from \"@/components/members/member-form\"\nimport { Button } from \"@/components/ui/button\"\nimport { ArrowLeft, Edit, Trash, Share2, Printer, CircleUser, CircleUserRound, Images, BookOpen, UserPlus } from \"lucide-react\"\nimport { useState, useEffect } from \"react\"\nimport type { FamilyMember } from \"@/types/family\"\nimport { db } from \"@/lib/db\"\nimport { PhotoGallery } from \"@/components/members/photo-gallery\"\nimport { StoryManager } from \"@/components/members/story-manager\"\nimport { useDialog } from \"@/components/ui/alert-dialog-custom\"\n\nexport default function MemberProfilePage() {\n const { id } = useParams()\n const { getMember, updateMember, deleteMember, treeData } = useFamily()\n const { showConfirm } = useDialog()\n const router = useRouter()\n const [isEditing, setIsEditing] = useState(false)\n const [avatarBlobUrl, setAvatarBlobUrl] = useState(undefined)\n\n const member = getMember(id as string)\n const allMembers = Object.values(treeData.members)\n\n // Load avatar blob if exists\n useEffect(() => {\n if (member?.avatarImageId) {\n db.images.get(member.avatarImageId).then((image) => {\n if (image) {\n const url = URL.createObjectURL(image.blob)\n setAvatarBlobUrl(url)\n return () => URL.revokeObjectURL(url)\n }\n })\n } else {\n setAvatarBlobUrl(undefined)\n }\n }, [member?.avatarImageId])\n\n if (!member) {\n return (\n
\n \n
\n

Member not found

\n \n
\n
\n )\n }\n\n const handleSave = (updatedMember: FamilyMember) => {\n updateMember(updatedMember.id, updatedMember)\n setIsEditing(false)\n }\n\n const handleDelete = async () => {\n const confirmed = await showConfirm(\"确定要删除这位成员吗?这将同时删除其关联关系。\", \"删除成员\", \"destructive\")\n if (confirmed) {\n deleteMember(member.id)\n router.push(\"/members\")\n }\n }\n\n const handleQuickAddChild = () => {\n // 跳转到新增成员页面,并预填父母信息\n const params = new URLSearchParams()\n if (member.gender === 'MALE') {\n params.set('fatherId', member.id)\n } else {\n params.set('motherId', member.id)\n }\n params.set('generation', (member.generation + 1).toString())\n router.push(`/members/new?${params.toString()}`)\n }\n\n const handleQuickAddSpouse = () => {\n // 跳转到新增成员页面,并预填配偶信息\n const params = new URLSearchParams()\n params.set('spouseId', member.id)\n params.set('generation', member.generation.toString())\n // 配偶性别与当前成员相反\n params.set('gender', member.gender === 'MALE' ? 'FEMALE' : 'MALE')\n router.push(`/members/new?${params.toString()}`)\n }\n\n const handleQuickAddFather = () => {\n // 跳转到新增成员页面,并预填父亲信息\n const params = new URLSearchParams()\n params.set('childId', member.id)\n params.set('generation', (member.generation - 1).toString())\n params.set('gender', 'MALE')\n // 如果已有母亲,将母亲设置为配偶\n if (member.motherId) {\n params.set('spouseId', member.motherId)\n }\n router.push(`/members/new?${params.toString()}`)\n }\n\n const handleQuickAddMother = () => {\n // 跳转到新增成员页面,并预填母亲信息\n const params = new URLSearchParams()\n params.set('childId', member.id)\n params.set('generation', (member.generation - 1).toString())\n params.set('gender', 'FEMALE')\n // 如果已有父亲,将父亲设置为配偶\n if (member.fatherId) {\n params.set('spouseId', member.fatherId)\n }\n router.push(`/members/new?${params.toString()}`)\n }\n\n if (isEditing) {\n return (\n
\n \n
\n
\n \n

编辑成员: {member.fullName}

\n
\n setIsEditing(false)} \n />\n
\n
\n )\n }\n\n return (\n
\n \n
\n {/* Header Section */}\n
\n
\n
\n {avatarBlobUrl ? (\n \n ) : (\n member.gender === 'FEMALE' ? (\n \n ) : (\n \n )\n )}\n
\n
\n
\n

{member.fullName}

\n \n {member.generation}世\n \n
\n
\n {member.courtesyName && (\n

\n 字:{member.courtesyName}\n

\n )}\n {member.artName && (\n

\n 号:{member.artName}\n

\n )}\n {member.ancestralHome &&

籍贯:{member.ancestralHome}

}\n
\n {member.tags && member.tags.length > 0 && (\n
\n {member.tags.map((tag) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n
\n\n
\n {!member.fatherId && (\n \n )}\n {!member.motherId && (\n \n )}\n \n \n \n \n \n \n
\n
\n\n {/* Content Grid */}\n
\n {/* Main Biography */}\n
\n
\n

\n \n 生平事迹\n

\n
\n {member.bio ? (\n

{member.bio}

\n ) : (\n

暂无生平记录...

\n )}\n
\n
\n\n {/* Photo Gallery */}\n {member.photoIds && member.photoIds.length > 0 && (\n
\n

\n \n 照片墙\n

\n
\n updateMember(member.id, { photoIds })}\n readonly={false}\n />\n
\n
\n )}\n\n {/* Family Stories */}\n {member.stories && member.stories.length > 0 && (\n
\n

\n \n 家族故事\n

\n
\n updateMember(member.id, { stories })}\n readonly={false}\n />\n
\n
\n )}\n\n
\n

\n \n 家族关系\n

\n
\n
\n

\n 父亲 (Father)\n

\n {member.fatherId ? (\n \n {getMember(member.fatherId)?.fullName || member.fatherId}\n \n ) : member.spouseFatherName ? (\n \n {member.spouseFatherName}\n \n ) : (\n -\n )}\n
\n
\n

\n 母亲 (Mother)\n

\n {member.motherId ? (\n \n {getMember(member.motherId)?.fullName || member.motherId}\n \n ) : member.spouseMotherName ? (\n \n {member.spouseMotherName}\n \n ) : (\n -\n )}\n
\n
\n

\n 配偶 (Spouse)\n

\n
\n {member.spouseIds?.length > 0 ? (\n member.spouseIds.map((spouseId) => (\n \n {getMember(spouseId)?.fullName || spouseId}\n \n ))\n ) : (\n 无记录\n )}\n
\n
\n
\n

\n 子女 (Children)\n

\n
\n {member.childrenIds?.length > 0 ? (\n member.childrenIds.map((childId) => (\n \n {getMember(childId)?.fullName || childId}\n \n ))\n ) : (\n 无记录\n )}\n
\n
\n
\n
\n
\n\n {/* Sidebar Info */}\n
\n
\n

详细信息

\n
\n
\n
出生日期
\n
{member.birthDate || \"-\"}
\n
\n {member.deathDate && (\n <>\n
\n
逝世日期
\n
{member.deathDate}
\n
\n
\n
谥号
\n
{member.posthumousName || \"-\"}
\n
\n
\n
墓地
\n
{member.burialPlace || \"-\"}
\n
\n \n )}\n {member.generationName && (\n
\n
字辈
\n
{member.generationName}
\n
\n )}\n
\n
\n \n {/* 联系方式 */}\n {(member.phone || member.telephone || member.email || member.address) && (\n
\n

联系方式

\n
\n {member.phone && (\n
\n
手机号
\n
\n \n {member.phone}\n \n
\n
\n )}\n {member.telephone && (\n
\n
固定电话
\n
\n \n {member.telephone}\n \n
\n
\n )}\n {member.email && (\n
\n
邮箱
\n
\n \n {member.email}\n \n
\n
\n )}\n {member.address && (\n
\n
现居地址
\n
{member.address}
\n
\n )}\n
\n
\n )}\n
\n
\n
\n
\n )\n}\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/[root-of-the-server]__6d150df4._.css b/.next/dev/static/chunks/[root-of-the-server]__6d150df4._.css index b26d7244..faf547de 100644 --- a/.next/dev/static/chunks/[root-of-the-server]__6d150df4._.css +++ b/.next/dev/static/chunks/[root-of-the-server]__6d150df4._.css @@ -729,6 +729,10 @@ top: 100%; } + .-right-0\.5 { + right: calc(var(--spacing) * -.5); + } + .-right-1 { right: calc(var(--spacing) * -1); } @@ -757,6 +761,10 @@ right: calc(var(--spacing) * 4); } + .-bottom-0\.5 { + bottom: calc(var(--spacing) * -.5); + } + .-bottom-1 { bottom: calc(var(--spacing) * -1); } @@ -1847,6 +1855,10 @@ gap: calc(var(--spacing) * 4); } + .gap-5 { + gap: calc(var(--spacing) * 5); + } + .gap-6 { gap: calc(var(--spacing) * 6); } diff --git a/.next/dev/static/chunks/[root-of-the-server]__6d150df4._.css.map b/.next/dev/static/chunks/[root-of-the-server]__6d150df4._.css.map index 2d6d36c8..dc645ef5 100644 --- a/.next/dev/static/chunks/[root-of-the-server]__6d150df4._.css.map +++ b/.next/dev/static/chunks/[root-of-the-server]__6d150df4._.css.map @@ -4,5 +4,5 @@ "sections": [ {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["turbopack:///[next]/internal/font/google/geist_a7695b8e.module.css"],"sourcesContent":["/* cyrillic */\n@font-face {\n font-family: 'Geist';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/geist/v4/gyByhwUxId8gMEwYGFWNOITddY4.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/geist/v4/gyByhwUxId8gMEwSGFWNOITddY4.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/geist/v4/gyByhwUxId8gMEwcGFWNOITd.woff2%22,%22preload%22:true,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: 'Geist Fallback';\n src: local(\"Arial\");\n ascent-override: 95.94%;\ndescent-override: 28.16%;\nline-gap-override: 0.00%;\nsize-adjust: 104.76%;\n\n}\n.className {\n font-family: 'Geist', 'Geist Fallback';\n font-style: normal;\n\n}\n"],"names":[],"mappings":"AACA;;;;;;;;;AASA;;;;;;;;;AASA;;;;;;;;;AAQA;;;;;;;;;AASA","ignoreList":[0]}}, {"offset": {"line": 43, "column": 0}, "map": {"version":3,"sources":["turbopack:///[next]/internal/font/google/geist_mono_354fc78.module.css"],"sourcesContent":["/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/geistmono/v4/or3nQ6H-1_WfwkMZI_qYFrMdmhHkjkotbA.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/geistmono/v4/or3nQ6H-1_WfwkMZI_qYFrkdmhHkjkotbA.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/geistmono/v4/or3nQ6H-1_WfwkMZI_qYFrcdmhHkjko.woff2%22,%22preload%22:true,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: 'Geist Mono Fallback';\n src: local(\"Arial\");\n ascent-override: 74.67%;\ndescent-override: 21.92%;\nline-gap-override: 0.00%;\nsize-adjust: 134.59%;\n\n}\n.className {\n font-family: 'Geist Mono', 'Geist Mono Fallback';\n font-style: normal;\n\n}\n"],"names":[],"mappings":"AACA;;;;;;;;;AASA;;;;;;;;;AASA;;;;;;;;;AAQA;;;;;;;;;AASA","ignoreList":[0]}}, - {"offset": {"line": 85, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/globals.css"],"sourcesContent":["/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-orange-50: oklch(98% 0.016 73.684);\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-700: oklch(55.3% 0.195 38.402);\n --color-amber-700: oklch(55.5% 0.163 48.998);\n --color-yellow-50: oklch(98.7% 0.026 102.212);\n --color-yellow-200: oklch(94.5% 0.129 101.54);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-800: oklch(47.6% 0.114 61.907);\n --color-yellow-900: oklch(42.1% 0.095 57.708);\n --color-yellow-950: oklch(28.6% 0.066 53.813);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-100: oklch(93.2% 0.032 255.585);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-blue-950: oklch(28.2% 0.091 267.935);\n --color-purple-50: oklch(97.7% 0.014 308.299);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-500: oklch(62.7% 0.265 303.9);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-pink-50: oklch(97.1% 0.014 343.198);\n --color-pink-100: oklch(94.8% 0.028 342.258);\n --color-pink-200: oklch(89.9% 0.061 343.231);\n --color-pink-400: oklch(71.8% 0.202 349.761);\n --color-pink-700: oklch(52.5% 0.223 3.958);\n --color-pink-800: oklch(45.9% 0.187 3.815);\n --color-pink-950: oklch(28.4% 0.109 3.907);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-neutral-100: oklch(97% 0 0);\n --color-neutral-400: oklch(70.8% 0 0);\n --color-neutral-500: oklch(55.6% 0 0);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-6xl: 72rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --radius-xs: 0.125rem;\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: \"Geist\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n --default-mono-font-family: \"Geist Mono\", monospace;\n --color-border: var(--border);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .\\@container\\/card-header {\n container-type: inline-size;\n container-name: card-header;\n }\n .\\@container\\/field-group {\n container-type: inline-size;\n container-name: field-group;\n }\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .invisible {\n visibility: hidden;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n .-top-1 {\n top: calc(var(--spacing) * -1);\n }\n .-top-3 {\n top: calc(var(--spacing) * -3);\n }\n .-top-12 {\n top: calc(var(--spacing) * -12);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1 {\n top: calc(var(--spacing) * 1);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-2\\.5 {\n top: calc(var(--spacing) * 2.5);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-20 {\n top: calc(var(--spacing) * 20);\n }\n .top-\\[1px\\] {\n top: 1px;\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .top-\\[60\\%\\] {\n top: 60%;\n }\n .top-full {\n top: 100%;\n }\n .-right-1 {\n right: calc(var(--spacing) * -1);\n }\n .-right-12 {\n right: calc(var(--spacing) * -12);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1 {\n right: calc(var(--spacing) * 1);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .-bottom-1 {\n bottom: calc(var(--spacing) * -1);\n }\n .-bottom-12 {\n bottom: calc(var(--spacing) * -12);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .-left-12 {\n left: calc(var(--spacing) * -12);\n }\n .-left-16 {\n left: calc(var(--spacing) * -16);\n }\n .-left-\\[9px\\] {\n left: calc(9px * -1);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-2\\.5 {\n left: calc(var(--spacing) * 2.5);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .isolate {\n isolation: isolate;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-30 {\n z-index: 30;\n }\n .z-50 {\n z-index: 50;\n }\n .z-\\[1\\] {\n z-index: 1;\n }\n .z-\\[100\\] {\n z-index: 100;\n }\n .order-first {\n order: -9999;\n }\n .order-last {\n order: 9999;\n }\n .col-span-full {\n grid-column: 1 / -1;\n }\n .col-start-2 {\n grid-column-start: 2;\n }\n .row-span-2 {\n grid-row: span 2 / span 2;\n }\n .row-start-1 {\n grid-row-start: 1;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .\\!m-0 {\n margin: calc(var(--spacing) * 0) !important;\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-3\\.5 {\n margin-inline: calc(var(--spacing) * 3.5);\n }\n .mx-4 {\n margin-inline: calc(var(--spacing) * 4);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .-my-2 {\n margin-block: calc(var(--spacing) * -2);\n }\n .my-0 {\n margin-block: calc(var(--spacing) * 0);\n }\n .my-0\\.5 {\n margin-block: calc(var(--spacing) * 0.5);\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n .mt-0 {\n margin-top: calc(var(--spacing) * 0);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-auto {\n margin-top: auto;\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n .mr-8 {\n margin-right: calc(var(--spacing) * 8);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .-ml-4 {\n margin-left: calc(var(--spacing) * -4);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-6 {\n margin-left: calc(var(--spacing) * 6);\n }\n .ml-auto {\n margin-left: auto;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .table-caption {\n display: table-caption;\n }\n .table-cell {\n display: table-cell;\n }\n .table-row {\n display: table-row;\n }\n .field-sizing-content {\n field-sizing: content;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .size-\\(--cell-size\\) {\n width: var(--cell-size);\n height: var(--cell-size);\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n height: calc(var(--spacing) * 2.5);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-6 {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n .size-7 {\n width: calc(var(--spacing) * 7);\n height: calc(var(--spacing) * 7);\n }\n .size-8 {\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-10 {\n width: calc(var(--spacing) * 10);\n height: calc(var(--spacing) * 10);\n }\n .size-auto {\n width: auto;\n height: auto;\n }\n .size-full {\n width: 100%;\n height: 100%;\n }\n .h-\\(--cell-size\\) {\n height: var(--cell-size);\n }\n .h-1 {\n height: calc(var(--spacing) * 1);\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-2\\.5 {\n height: calc(var(--spacing) * 2.5);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-\\[1\\.15rem\\] {\n height: 1.15rem;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-\\[600px\\] {\n height: 600px;\n }\n .h-\\[calc\\(100\\%-1px\\)\\] {\n height: calc(100% - 1px);\n }\n .h-\\[var\\(--radix-navigation-menu-viewport-height\\)\\] {\n height: var(--radix-navigation-menu-viewport-height);\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .h-svh {\n height: 100svh;\n }\n .max-h-\\(--radix-context-menu-content-available-height\\) {\n max-height: var(--radix-context-menu-content-available-height);\n }\n .max-h-\\(--radix-dropdown-menu-content-available-height\\) {\n max-height: var(--radix-dropdown-menu-content-available-height);\n }\n .max-h-\\(--radix-select-content-available-height\\) {\n max-height: var(--radix-select-content-available-height);\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[60vh\\] {\n max-height: 60vh;\n }\n .max-h-\\[70vh\\] {\n max-height: 70vh;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .max-h-screen {\n max-height: 100vh;\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-4 {\n min-height: calc(var(--spacing) * 4);\n }\n .min-h-16 {\n min-height: calc(var(--spacing) * 16);\n }\n .min-h-\\[200px\\] {\n min-height: 200px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .min-h-svh {\n min-height: 100svh;\n }\n .w-\\(--cell-size\\) {\n width: var(--cell-size);\n }\n .w-\\(--sidebar-width\\) {\n width: var(--sidebar-width);\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\/4 {\n width: calc(3/4 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-7 {\n width: calc(var(--spacing) * 7);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-\\[100px\\] {\n width: 100px;\n }\n .w-\\[200px\\] {\n width: 200px;\n }\n .w-\\[var\\(--radix-dropdown-menu-trigger-width\\)\\] {\n width: var(--radix-dropdown-menu-trigger-width);\n }\n .w-auto {\n width: auto;\n }\n .w-fit {\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-px {\n width: 1px;\n }\n .max-w-\\(--skeleton-width\\) {\n max-width: var(--skeleton-width);\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-3xl {\n max-width: var(--container-3xl);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-max {\n max-width: max-content;\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .max-w-none {\n max-width: none;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .min-w-\\(--cell-size\\) {\n min-width: var(--cell-size);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-5 {\n min-width: calc(var(--spacing) * 5);\n }\n .min-w-8 {\n min-width: calc(var(--spacing) * 8);\n }\n .min-w-9 {\n min-width: calc(var(--spacing) * 9);\n }\n .min-w-10 {\n min-width: calc(var(--spacing) * 10);\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[12rem\\] {\n min-width: 12rem;\n }\n .min-w-\\[200px\\] {\n min-width: 200px;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .min-w-fit {\n min-width: fit-content;\n }\n .min-w-full {\n min-width: 100%;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .grow {\n flex-grow: 1;\n }\n .grow-0 {\n flex-grow: 0;\n }\n .basis-full {\n flex-basis: 100%;\n }\n .caption-bottom {\n caption-side: bottom;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .origin-\\(--radix-context-menu-content-transform-origin\\) {\n transform-origin: var(--radix-context-menu-content-transform-origin);\n }\n .origin-\\(--radix-dropdown-menu-content-transform-origin\\) {\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n }\n .origin-\\(--radix-hover-card-content-transform-origin\\) {\n transform-origin: var(--radix-hover-card-content-transform-origin);\n }\n .origin-\\(--radix-menubar-content-transform-origin\\) {\n transform-origin: var(--radix-menubar-content-transform-origin);\n }\n .origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n .origin-\\(--radix-select-content-transform-origin\\) {\n transform-origin: var(--radix-select-content-transform-origin);\n }\n .origin-\\(--radix-tooltip-content-transform-origin\\) {\n transform-origin: var(--radix-tooltip-content-transform-origin);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-px {\n --tw-translate-x: -1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-px {\n --tw-translate-x: 1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0\\.5 {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[2px\\] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[calc\\(-50\\%_-_2px\\)\\] {\n --tw-translate-y: calc(-50% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-45 {\n rotate: 45deg;\n }\n .rotate-90 {\n rotate: 90deg;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-caret-blink {\n animation: caret-blink 1.25s ease-out infinite;\n }\n .animate-in {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-move {\n cursor: move;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-text {\n cursor: text;\n }\n .touch-none {\n touch-action: none;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .scroll-my-1 {\n scroll-margin-block: calc(var(--spacing) * 1);\n }\n .scroll-py-1 {\n scroll-padding-block: calc(var(--spacing) * 1);\n }\n .list-inside {\n list-style-position: inside;\n }\n .list-disc {\n list-style-type: disc;\n }\n .list-none {\n list-style-type: none;\n }\n .auto-rows-min {\n grid-auto-rows: min-content;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-\\[0_1fr\\] {\n grid-template-columns: 0 1fr;\n }\n .grid-rows-\\[auto_auto\\] {\n grid-template-rows: auto auto;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-baseline {\n align-items: baseline;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .justify-items-start {\n justify-items: start;\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-7 {\n gap: calc(var(--spacing) * 7);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .space-y-0\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-4 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .gap-y-0\\.5 {\n row-gap: calc(var(--spacing) * 0.5);\n }\n .self-start {\n align-self: flex-start;\n }\n .self-stretch {\n align-self: stretch;\n }\n .justify-self-end {\n justify-self: flex-end;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-\\[2px\\] {\n border-radius: 2px;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\] {\n border-radius: calc(var(--radius) - 5px);\n }\n .rounded-\\[inherit\\] {\n border-radius: inherit;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius);\n }\n .rounded-md {\n border-radius: calc(var(--radius) - 2px);\n }\n .rounded-none {\n border-radius: 0;\n }\n .rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n }\n .rounded-xl {\n border-radius: calc(var(--radius) + 4px);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .rounded-l-md {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n .rounded-tl-sm {\n border-top-left-radius: calc(var(--radius) - 4px);\n }\n .rounded-r-md {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-\\[1\\.5px\\] {\n border-style: var(--tw-border-style);\n border-width: 1.5px;\n }\n .border-y {\n border-block-style: var(--tw-border-style);\n border-block-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-\\(--color-border\\) {\n border-color: var(--color-border);\n }\n .border-background {\n border-color: var(--background);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-200\\/50 {\n border-color: color-mix(in srgb, oklch(88.2% 0.059 254.128) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-blue-200) 50%, transparent);\n }\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-border {\n border-color: var(--border);\n }\n .border-border\\/40 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 40%, transparent);\n }\n }\n .border-border\\/50 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n .border-border\\/60 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 60%, transparent);\n }\n }\n .border-destructive {\n border-color: var(--destructive);\n }\n .border-destructive\\/20 {\n border-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-input {\n border-color: var(--input);\n }\n .border-muted-foreground\\/50 {\n border-color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--muted-foreground) 50%, transparent);\n }\n }\n .border-orange-200 {\n border-color: var(--color-orange-200);\n }\n .border-pink-200\\/50 {\n border-color: color-mix(in srgb, oklch(89.9% 0.061 343.231) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-pink-200) 50%, transparent);\n }\n }\n .border-primary {\n border-color: var(--primary);\n }\n .border-primary\\/20 {\n border-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n .border-purple-200 {\n border-color: var(--color-purple-200);\n }\n .border-red-500 {\n border-color: var(--color-red-500);\n }\n .border-sidebar-border {\n border-color: var(--sidebar-border);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-yellow-400 {\n border-color: var(--color-yellow-400);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .border-l-transparent {\n border-left-color: transparent;\n }\n .bg-\\(--color-bg\\) {\n background-color: var(--color-bg);\n }\n .bg-accent {\n background-color: var(--accent);\n }\n .bg-background {\n background-color: var(--background);\n }\n .bg-background\\/50 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 50%, transparent);\n }\n }\n .bg-background\\/60 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 60%, transparent);\n }\n }\n .bg-background\\/80 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 80%, transparent);\n }\n }\n .bg-background\\/90 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 90%, transparent);\n }\n }\n .bg-background\\/95 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 95%, transparent);\n }\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-50\\/50 {\n background-color: color-mix(in srgb, oklch(97% 0.014 254.604) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-50) 50%, transparent);\n }\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-border {\n background-color: var(--border);\n }\n .bg-card {\n background-color: var(--card);\n }\n .bg-card\\/50 {\n background-color: var(--card);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--card) 50%, transparent);\n }\n }\n .bg-destructive {\n background-color: var(--destructive);\n }\n .bg-destructive\\/10 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n .bg-destructive\\/15 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 15%, transparent);\n }\n }\n .bg-foreground {\n background-color: var(--foreground);\n }\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-gray-500 {\n background-color: var(--color-gray-500);\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-input {\n background-color: var(--input);\n }\n .bg-muted {\n background-color: var(--muted);\n }\n .bg-muted\\/30 {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\n }\n }\n .bg-muted\\/50 {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n .bg-neutral-100 {\n background-color: var(--color-neutral-100);\n }\n .bg-neutral-400 {\n background-color: var(--color-neutral-400);\n }\n .bg-orange-50 {\n background-color: var(--color-orange-50);\n }\n .bg-orange-500 {\n background-color: var(--color-orange-500);\n }\n .bg-pink-50\\/50 {\n background-color: color-mix(in srgb, oklch(97.1% 0.014 343.198) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-pink-50) 50%, transparent);\n }\n }\n .bg-pink-100 {\n background-color: var(--color-pink-100);\n }\n .bg-popover {\n background-color: var(--popover);\n }\n .bg-primary {\n background-color: var(--primary);\n }\n .bg-primary\\/5 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n }\n .bg-primary\\/10 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n }\n }\n .bg-primary\\/20 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n .bg-purple-50 {\n background-color: var(--color-purple-50);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-purple-500 {\n background-color: var(--color-purple-500);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-500 {\n background-color: var(--color-red-500);\n }\n .bg-secondary {\n background-color: var(--secondary);\n }\n .bg-sidebar {\n background-color: var(--sidebar);\n }\n .bg-sidebar-border {\n background-color: var(--sidebar-border);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n .bg-gradient-to-br {\n --tw-gradient-position: to bottom right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-\\[url\\(\\'https\\:\\/\\/www\\.transparenttextures\\.com\\/patterns\\/rice-paper\\.png\\'\\)\\] {\n background-image: url('https://www.transparenttextures.com/patterns/rice-paper.png');\n }\n .from-card {\n --tw-gradient-from: var(--card);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-primary\\/5 {\n --tw-gradient-from: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-primary\\/50 {\n --tw-gradient-from: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--primary) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-background {\n --tw-gradient-via: var(--background);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-primary {\n --tw-gradient-via: var(--primary);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-card\\/50 {\n --tw-gradient-to: var(--card);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--card) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-primary\\/50 {\n --tw-gradient-to: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--primary) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-secondary\\/5 {\n --tw-gradient-to: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--secondary) 5%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-repeat {\n background-repeat: repeat;\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-foreground {\n fill: var(--foreground);\n }\n .fill-primary {\n fill: var(--primary);\n }\n .object-contain {\n object-fit: contain;\n }\n .object-cover {\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .p-\\[3px\\] {\n padding: 3px;\n }\n .p-px {\n padding: 1px;\n }\n .px-\\(--cell-size\\) {\n padding-inline: var(--cell-size);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .pt-0 {\n padding-top: calc(var(--spacing) * 0);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-20 {\n padding-top: calc(var(--spacing) * 20);\n }\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-2\\.5 {\n padding-right: calc(var(--spacing) * 2.5);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-20 {\n padding-bottom: calc(var(--spacing) * 20);\n }\n .pl-1 {\n padding-left: calc(var(--spacing) * 1);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .align-middle {\n vertical-align: middle;\n }\n .font-mono {\n font-family: \"Geist Mono\", monospace;\n }\n .font-sans {\n font-family: \"Geist\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n }\n .font-serif {\n font-family: \"Songti SC\", \"STSong\", \"SimSun\", \"Times New Roman\", serif;\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-sm\\/relaxed {\n font-size: var(--text-sm);\n line-height: var(--leading-relaxed);\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .leading-normal {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-balance {\n text-wrap: balance;\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .break-all {\n word-break: break-all;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre-line {\n white-space: pre-line;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-accent-foreground {\n color: var(--accent-foreground);\n }\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n .text-background {\n color: var(--background);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-card-foreground {\n color: var(--card-foreground);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-foreground {\n color: var(--foreground);\n }\n .text-foreground\\/50 {\n color: var(--foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--foreground) 50%, transparent);\n }\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-muted-foreground\\/60 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 60%, transparent);\n }\n }\n .text-muted-foreground\\/70 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 70%, transparent);\n }\n }\n .text-muted-foreground\\/80 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 80%, transparent);\n }\n }\n .text-neutral-500 {\n color: var(--color-neutral-500);\n }\n .text-orange-700 {\n color: var(--color-orange-700);\n }\n .text-pink-400 {\n color: var(--color-pink-400);\n }\n .text-pink-700 {\n color: var(--color-pink-700);\n }\n .text-popover-foreground {\n color: var(--popover-foreground);\n }\n .text-primary {\n color: var(--primary);\n }\n .text-primary-foreground {\n color: var(--primary-foreground);\n }\n .text-primary\\/70 {\n color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--primary) 70%, transparent);\n }\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-secondary-foreground {\n color: var(--secondary-foreground);\n }\n .text-sidebar-foreground {\n color: var(--sidebar-foreground);\n }\n .text-sidebar-foreground\\/70 {\n color: var(--sidebar-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--sidebar-foreground) 70%, transparent);\n }\n }\n .text-white {\n color: var(--color-white);\n }\n .text-yellow-800 {\n color: var(--color-yellow-800);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .italic {\n font-style: italic;\n }\n .tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .underline {\n text-decoration-line: underline;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-90 {\n opacity: 90%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-border\\)\\)\\] {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-none {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-0 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-4 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-background {\n --tw-ring-color: var(--background);\n }\n .ring-blue-200 {\n --tw-ring-color: var(--color-blue-200);\n }\n .ring-ring\\/50 {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n .ring-sidebar-ring {\n --tw-ring-color: var(--sidebar-ring);\n }\n .ring-yellow-200 {\n --tw-ring-color: var(--color-yellow-200);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--background);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .backdrop-blur {\n --tw-backdrop-blur: blur(8px);\n -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,);\n 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,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[left\\,right\\,width\\] {\n transition-property: left,right,width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[margin\\,opacity\\] {\n transition-property: margin,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\,height\\,padding\\] {\n transition-property: width,height,padding;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\] {\n transition-property: width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-1000 {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .ease-linear {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n .fade-in-0 {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n .slide-in-from-bottom-5 {\n --tw-enter-translate-y: calc(5*var(--spacing));\n --tw-enter-translate-y: calc(.05*100%);\n }\n .zoom-in-95 {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n .\\[--cell-size\\:--spacing\\(8\\)\\] {\n --cell-size: calc(var(--spacing) * 8);\n }\n .slide-in-from-top-2 {\n --tw-enter-translate-y: calc(2*var(--spacing)*-1);\n }\n .group-last\\:hidden {\n &:is(:where(.group):last-child *) {\n display: none;\n }\n }\n .group-focus-within\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):focus-within *) {\n opacity: 100%;\n }\n }\n .group-hover\\:scale-110 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .group-hover\\:bg-primary\\/20 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-hover\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-has-data-\\[sidebar\\=menu-action\\]\\/menu-item\\:pr-8 {\n &:is(:where(.group\\/menu-item):has(*[data-sidebar=\"menu-action\"]) *) {\n padding-right: calc(var(--spacing) * 8);\n }\n }\n .group-has-\\[\\[data-orientation\\=horizontal\\]\\]\\/field\\:text-balance {\n &:is(:where(.group\\/field):has(*:is([data-orientation=horizontal])) *) {\n text-wrap: balance;\n }\n }\n .group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:translate-y-0\\.5 {\n &:is(:where(.group\\/item):has(*:is([data-slot=item-description])) *) {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:self-start {\n &:is(:where(.group\\/item):has(*:is([data-slot=item-description])) *) {\n align-self: flex-start;\n }\n }\n .group-has-\\[\\>input\\]\\/input-group\\:pt-2\\.5 {\n &:is(:where(.group\\/input-group):has(>input) *) {\n padding-top: calc(var(--spacing) * 2.5);\n }\n }\n .group-has-\\[\\>input\\]\\/input-group\\:pb-2\\.5 {\n &:is(:where(.group\\/input-group):has(>input) *) {\n padding-bottom: calc(var(--spacing) * 2.5);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:-mt-8 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n margin-top: calc(var(--spacing) * -8);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n display: none;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:size-8\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--spacing) * 8) !important;\n height: calc(var(--spacing) * 8) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\(--sidebar-width-icon\\) {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: var(--sidebar-width-icon);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)));\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\+2px\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:overflow-hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-0\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 0) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-2\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 2) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:opacity-0 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n opacity: 0%;\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n right: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n left: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:w-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n width: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[disabled\\=true\\]\\:pointer-events-none {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n pointer-events: none;\n }\n }\n .group-data-\\[disabled\\=true\\]\\:opacity-50 {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[disabled\\=true\\]\\/field\\:opacity-50 {\n &:is(:where(.group\\/field)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50 {\n &:is(:where(.group\\/input-group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:relative {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n position: relative;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:z-10 {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n z-index: 10;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:border-ring {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n border-color: var(--ring);\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:ring-\\[3px\\] {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:ring-ring\\/50 {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .group-data-\\[side\\=left\\]\\:-right-4 {\n &:is(:where(.group)[data-side=\"left\"] *) {\n right: calc(var(--spacing) * -4);\n }\n }\n .group-data-\\[side\\=left\\]\\:border-r {\n &:is(:where(.group)[data-side=\"left\"] *) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .group-data-\\[side\\=right\\]\\:left-0 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n left: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[side\\=right\\]\\:rotate-180 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[side\\=right\\]\\:border-l {\n &:is(:where(.group)[data-side=\"right\"] *) {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .group-data-\\[state\\=open\\]\\:rotate-180 {\n &:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:rounded-lg {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-radius: var(--radius);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border-sidebar-border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-color: var(--sidebar-border);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:shadow-sm {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[variant\\=outline\\]\\/field-group\\:-mb-2 {\n &:is(:where(.group\\/field-group)[data-variant=\"outline\"] *) {\n margin-bottom: calc(var(--spacing) * -2);\n }\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:block {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"bottom\"] *) {\n display: block;\n }\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:text-center {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"bottom\"] *) {\n text-align: center;\n }\n }\n .group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:text-center {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"top\"] *) {\n text-align: center;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:top-full {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n top: 100%;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:mt-1\\.5 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n margin-top: calc(var(--spacing) * 1.5);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:overflow-hidden {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:rounded-md {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:border {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:bg-popover {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n background-color: var(--popover);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:text-popover-foreground {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n color: var(--popover-foreground);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:shadow {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:duration-200 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n }\n .group-\\[\\.destructive\\]\\:border-muted\\/40 {\n &:is(:where(.group):is(.destructive) *) {\n border-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--muted) 40%, transparent);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:text-red-300 {\n &:is(:where(.group):is(.destructive) *) {\n color: var(--color-red-300);\n }\n }\n .peer-hover\\/menu-button\\:text-sidebar-accent-foreground {\n &:is(:where(.peer\\/menu-button):hover ~ *) {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-50 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n }\n .peer-data-\\[active\\=true\\]\\/menu-button\\:text-sidebar-accent-foreground {\n &:is(:where(.peer\\/menu-button)[data-active=\"true\"] ~ *) {\n color: var(--sidebar-accent-foreground);\n }\n }\n .peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"default\"] ~ *) {\n top: calc(var(--spacing) * 1.5);\n }\n }\n .peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"lg\"] ~ *) {\n top: calc(var(--spacing) * 2.5);\n }\n }\n .peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1 {\n &:is(:where(.peer\\/menu-button)[data-size=\"sm\"] ~ *) {\n top: calc(var(--spacing) * 1);\n }\n }\n .selection\\:bg-primary {\n & *::selection {\n background-color: var(--primary);\n }\n &::selection {\n background-color: var(--primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::selection {\n color: var(--primary-foreground);\n }\n &::selection {\n color: var(--primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .file\\:text-foreground {\n &::file-selector-button {\n color: var(--foreground);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .after\\:absolute {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .after\\:-inset-2 {\n &::after {\n content: var(--tw-content);\n inset: calc(var(--spacing) * -2);\n }\n }\n .after\\:inset-y-0 {\n &::after {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-1\\/2 {\n &::after {\n content: var(--tw-content);\n left: calc(1/2 * 100%);\n }\n }\n .after\\:w-1 {\n &::after {\n content: var(--tw-content);\n width: calc(var(--spacing) * 1);\n }\n }\n .after\\:w-\\[2px\\] {\n &::after {\n content: var(--tw-content);\n width: 2px;\n }\n }\n .after\\:-translate-x-1\\/2 {\n &::after {\n content: var(--tw-content);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:after\\:left-full {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n &::after {\n content: var(--tw-content);\n left: 100%;\n }\n }\n }\n .first\\:rounded-l-md {\n &:first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .first\\:border-l {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .last\\:mt-0 {\n &:last-child {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .last\\:rounded-r-md {\n &:last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .last\\:border-0 {\n &:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .last\\:border-b-0 {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:border-blue-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-400);\n }\n }\n }\n .hover\\:border-primary {\n &:hover {\n @media (hover: hover) {\n border-color: var(--primary);\n }\n }\n }\n .hover\\:border-primary\\/30 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--primary) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n .hover\\:bg-accent\\/5 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 5%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-background {\n &:hover {\n @media (hover: hover) {\n background-color: var(--background);\n }\n }\n }\n .hover\\:bg-destructive {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n }\n }\n }\n .hover\\:bg-muted\\/30 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-secondary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-sidebar-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--sidebar-accent);\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n .hover\\:text-destructive {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive);\n }\n }\n }\n .hover\\:text-destructive-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive-foreground);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--foreground);\n }\n }\n }\n .hover\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--muted-foreground);\n }\n }\n }\n .hover\\:text-primary {\n &:hover {\n @media (hover: hover) {\n color: var(--primary);\n }\n }\n }\n .hover\\:text-sidebar-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-90 {\n &:hover {\n @media (hover: hover) {\n opacity: 90%;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .hover\\:shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-accent\\)\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-lg {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:ring-4 {\n &:hover {\n @media (hover: hover) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:group-data-\\[collapsible\\=offcanvas\\]\\:bg-sidebar {\n &:hover {\n @media (hover: hover) {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n background-color: var(--sidebar);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:border-destructive\\/30 {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--destructive) 30%, transparent);\n }\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:bg-destructive {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive-foreground);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:text-red-50 {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-50);\n }\n }\n }\n }\n .hover\\:after\\:bg-sidebar-border {\n &:hover {\n @media (hover: hover) {\n &::after {\n content: var(--tw-content);\n background-color: var(--sidebar-border);\n }\n }\n }\n }\n .focus\\:z-10 {\n &:focus {\n z-index: 10;\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--accent);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--accent-foreground);\n }\n }\n .focus\\:opacity-100 {\n &:focus {\n opacity: 100%;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-destructive {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-color: var(--destructive);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-red-400 {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-color: var(--color-red-400);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600 {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-offset-color: var(--color-red-600);\n }\n }\n }\n .focus-visible\\:z-10 {\n &:focus-visible {\n z-index: 10;\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--ring);\n }\n }\n .focus-visible\\:ring-0 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-1 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-4 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-primary {\n &:focus-visible {\n --tw-ring-color: var(--primary);\n }\n }\n .focus-visible\\:ring-ring {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .focus-visible\\:ring-offset-1 {\n &:focus-visible {\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-visible\\:outline-hidden {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus-visible\\:outline-1 {\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n }\n .focus-visible\\:outline-ring {\n &:focus-visible {\n outline-color: var(--ring);\n }\n }\n .active\\:bg-sidebar-accent {\n &:active {\n background-color: var(--sidebar-accent);\n }\n }\n .active\\:text-sidebar-accent-foreground {\n &:active {\n color: var(--sidebar-accent-foreground);\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .in-data-\\[side\\=left\\]\\:cursor-w-resize {\n :where(*[data-side=\"left\"]) & {\n cursor: w-resize;\n }\n }\n .in-data-\\[side\\=right\\]\\:cursor-e-resize {\n :where(*[data-side=\"right\"]) & {\n cursor: e-resize;\n }\n }\n .has-focus\\:border-ring {\n &:has(*:focus) {\n border-color: var(--ring);\n }\n }\n .has-focus\\:ring-\\[3px\\] {\n &:has(*:focus) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .has-focus\\:ring-ring\\/50 {\n &:has(*:focus) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .has-disabled\\:opacity-50 {\n &:has(*:disabled) {\n opacity: 50%;\n }\n }\n .has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\] {\n &:has(*[data-slot=\"card-action\"]) {\n grid-template-columns: 1fr auto;\n }\n }\n .has-data-\\[state\\=checked\\]\\:border-primary {\n &:has(*[data-state=\"checked\"]) {\n border-color: var(--primary);\n }\n }\n .has-data-\\[state\\=checked\\]\\:bg-primary\\/5 {\n &:has(*[data-state=\"checked\"]) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n }\n }\n .has-data-\\[variant\\=inset\\]\\:bg-sidebar {\n &:has(*[data-variant=\"inset\"]) {\n background-color: var(--sidebar);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n border-color: var(--ring);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-\\[3px\\] {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50 {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive {\n &:has(*:is([data-slot][aria-invalid=true])) {\n border-color: var(--destructive);\n }\n }\n .has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20 {\n &:has(*:is([data-slot][aria-invalid=true])) {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto {\n &:has(>[data-align=block-end]) {\n height: auto;\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col {\n &:has(>[data-align=block-end]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto {\n &:has(>[data-align=block-start]) {\n height: auto;\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col {\n &:has(>[data-align=block-start]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2 {\n &:has(>[data-slot=button-group]) {\n gap: calc(var(--spacing) * 2);\n }\n }\n .has-\\[\\>\\[data-slot\\=checkbox-group\\]\\]\\:gap-3 {\n &:has(>[data-slot=checkbox-group]) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start {\n &:has(>[data-slot=field-content]) {\n align-items: flex-start;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:w-full {\n &:has(>[data-slot=field]) {\n width: 100%;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:flex-col {\n &:has(>[data-slot=field]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:rounded-md {\n &:has(>[data-slot=field]) {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:border {\n &:has(>[data-slot=field]) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .has-\\[\\>\\[data-slot\\=radio-group\\]\\]\\:gap-3 {\n &:has(>[data-slot=radio-group]) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>button\\]\\:mr-\\[-0\\.4rem\\] {\n &:has(>button) {\n margin-right: -0.4rem;\n }\n }\n .has-\\[\\>button\\]\\:ml-\\[-0\\.45rem\\] {\n &:has(>button) {\n margin-left: -0.45rem;\n }\n }\n .has-\\[\\>kbd\\]\\:mr-\\[-0\\.35rem\\] {\n &:has(>kbd) {\n margin-right: -0.35rem;\n }\n }\n .has-\\[\\>kbd\\]\\:ml-\\[-0\\.35rem\\] {\n &:has(>kbd) {\n margin-left: -0.35rem;\n }\n }\n .has-\\[\\>svg\\]\\:grid-cols-\\[calc\\(var\\(--spacing\\)\\*4\\)_1fr\\] {\n &:has(>svg) {\n grid-template-columns: calc(var(--spacing) * 4) 1fr;\n }\n }\n .has-\\[\\>svg\\]\\:gap-x-3 {\n &:has(>svg) {\n column-gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:p-0 {\n &:has(>svg) {\n padding: calc(var(--spacing) * 0);\n }\n }\n .has-\\[\\>svg\\]\\:px-2 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .has-\\[\\>textarea\\]\\:h-auto {\n &:has(>textarea) {\n height: auto;\n }\n }\n .aria-disabled\\:pointer-events-none {\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .aria-disabled\\:opacity-50 {\n &[aria-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .aria-selected\\:text-muted-foreground {\n &[aria-selected=\"true\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:z-10 {\n &[data-active=\"true\"] {\n z-index: 10;\n }\n }\n .data-\\[active\\=true\\]\\:border-ring {\n &[data-active=\"true\"] {\n border-color: var(--ring);\n }\n }\n .data-\\[active\\=true\\]\\:bg-accent\\/50 {\n &[data-active=\"true\"] {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:bg-sidebar-accent {\n &[data-active=\"true\"] {\n background-color: var(--sidebar-accent);\n }\n }\n .data-\\[active\\=true\\]\\:font-medium {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .data-\\[active\\=true\\]\\:font-semibold {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .data-\\[active\\=true\\]\\:text-accent-foreground {\n &[data-active=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:text-foreground {\n &[data-active=\"true\"] {\n color: var(--foreground);\n }\n }\n .data-\\[active\\=true\\]\\:text-sidebar-accent-foreground {\n &[data-active=\"true\"] {\n color: var(--sidebar-accent-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:ring-\\[3px\\] {\n &[data-active=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[active\\=true\\]\\:ring-ring\\/50 {\n &[data-active=\"true\"] {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:hover\\:bg-accent {\n &[data-active=\"true\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .data-\\[active\\=true\\]\\:focus\\:bg-accent {\n &[data-active=\"true\"] {\n &:focus {\n background-color: var(--accent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:aria-invalid\\:border-destructive {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n }\n .data-\\[active\\=true\\]\\:aria-invalid\\:ring-destructive\\/20 {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive {\n &[data-error=\"true\"] {\n color: var(--destructive);\n }\n }\n .data-\\[inset\\]\\:pl-8 {\n &[data-inset] {\n padding-left: calc(var(--spacing) * 8);\n }\n }\n .data-\\[invalid\\=true\\]\\:text-destructive {\n &[data-invalid=\"true\"] {\n color: var(--destructive);\n }\n }\n .data-\\[motion\\=from-end\\]\\:slide-in-from-right-52 {\n &[data-motion=\"from-end\"] {\n --tw-enter-translate-x: calc(52*var(--spacing));\n }\n }\n .data-\\[motion\\=from-start\\]\\:slide-in-from-left-52 {\n &[data-motion=\"from-start\"] {\n --tw-enter-translate-x: calc(52*var(--spacing)*-1);\n }\n }\n .data-\\[motion\\=to-end\\]\\:slide-out-to-right-52 {\n &[data-motion=\"to-end\"] {\n --tw-exit-translate-x: calc(52*var(--spacing));\n }\n }\n .data-\\[motion\\=to-start\\]\\:slide-out-to-left-52 {\n &[data-motion=\"to-start\"] {\n --tw-exit-translate-x: calc(52*var(--spacing)*-1);\n }\n }\n .data-\\[motion\\^\\=from-\\]\\:animate-in {\n &[data-motion^=\"from-\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[motion\\^\\=from-\\]\\:fade-in {\n &[data-motion^=\"from-\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[motion\\^\\=to-\\]\\:animate-out {\n &[data-motion^=\"to-\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[motion\\^\\=to-\\]\\:fade-out {\n &[data-motion^=\"to-\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-1\\.5 {\n &[data-orientation=\"horizontal\"] {\n height: calc(var(--spacing) * 1.5);\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-full {\n &[data-orientation=\"horizontal\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-px {\n &[data-orientation=\"horizontal\"] {\n height: 1px;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:w-full {\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-auto {\n &[data-orientation=\"vertical\"] {\n height: auto;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-full {\n &[data-orientation=\"vertical\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:min-h-44 {\n &[data-orientation=\"vertical\"] {\n min-height: calc(var(--spacing) * 44);\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-1\\.5 {\n &[data-orientation=\"vertical\"] {\n width: calc(var(--spacing) * 1.5);\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-auto {\n &[data-orientation=\"vertical\"] {\n width: auto;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-full {\n &[data-orientation=\"vertical\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-px {\n &[data-orientation=\"vertical\"] {\n width: 1px;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:flex-col {\n &[data-orientation=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:h-px {\n &[data-panel-group-direction=\"vertical\"] {\n height: 1px;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:w-full {\n &[data-panel-group-direction=\"vertical\"] {\n width: 100%;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:flex-col {\n &[data-panel-group-direction=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:left-0 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:h-1 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n height: calc(var(--spacing) * 1);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:w-full {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n width: 100%;\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:translate-x-0 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:-translate-y-1\\/2 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[range-end\\=true\\]\\:rounded-md {\n &[data-range-end=\"true\"] {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-end\\=true\\]\\:rounded-r-md {\n &[data-range-end=\"true\"] {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-end\\=true\\]\\:bg-primary {\n &[data-range-end=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[range-end\\=true\\]\\:text-primary-foreground {\n &[data-range-end=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[range-middle\\=true\\]\\:rounded-none {\n &[data-range-middle=\"true\"] {\n border-radius: 0;\n }\n }\n .data-\\[range-middle\\=true\\]\\:bg-accent {\n &[data-range-middle=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[range-middle\\=true\\]\\:text-accent-foreground {\n &[data-range-middle=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[range-start\\=true\\]\\:rounded-md {\n &[data-range-start=\"true\"] {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-start\\=true\\]\\:rounded-l-md {\n &[data-range-start=\"true\"] {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-start\\=true\\]\\:bg-primary {\n &[data-range-start=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[range-start\\=true\\]\\:text-primary-foreground {\n &[data-range-start=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[selected-single\\=true\\]\\:bg-primary {\n &[data-selected-single=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[selected-single\\=true\\]\\:text-primary-foreground {\n &[data-selected-single=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:rounded-none {\n &[data-selected=\"true\"] {\n border-radius: 0;\n }\n }\n .data-\\[selected\\=true\\]\\:bg-accent {\n &[data-selected=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[selected\\=true\\]\\:text-accent-foreground {\n &[data-selected=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: calc(2*var(--spacing)*-1);\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:slide-in-from-right-2 {\n &[data-side=\"left\"] {\n --tw-enter-translate-x: calc(2*var(--spacing));\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: calc(2*var(--spacing)*-1);\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2 {\n &[data-side=\"top\"] {\n --tw-enter-translate-y: calc(2*var(--spacing));\n }\n }\n .data-\\[size\\=default\\]\\:h-9 {\n &[data-size=\"default\"] {\n height: calc(var(--spacing) * 9);\n }\n }\n .data-\\[size\\=sm\\]\\:h-8 {\n &[data-size=\"sm\"] {\n height: calc(var(--spacing) * 8);\n }\n }\n .\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90 {\n :is(& > *) {\n &[data-slot=\"alert-description\"] {\n color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .data-\\[slot\\=checkbox-group\\]\\:gap-3 {\n &[data-slot=\"checkbox-group\"] {\n gap: calc(var(--spacing) * 3);\n }\n }\n .\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 {\n :is(& *) {\n &[data-slot=\"command-input-wrapper\"] {\n height: calc(var(--spacing) * 12);\n }\n }\n }\n .\\*\\*\\:data-\\[slot\\=navigation-menu-link\\]\\:focus\\:ring-0 {\n :is(& *) {\n &[data-slot=\"navigation-menu-link\"] {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n }\n .\\*\\*\\:data-\\[slot\\=navigation-menu-link\\]\\:focus\\:outline-none {\n :is(& *) {\n &[data-slot=\"navigation-menu-link\"] {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:flex {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n display: flex;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:items-center {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n align-items: center;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:gap-2 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n .data-\\[state\\=active\\]\\:bg-background {\n &[data-state=\"active\"] {\n background-color: var(--background);\n }\n }\n .data-\\[state\\=active\\]\\:shadow-sm {\n &[data-state=\"active\"] {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\] {\n &[data-state=\"checked\"] {\n --tw-translate-x: calc(100% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[state\\=closed\\]\\:animate-accordion-up {\n &[data-state=\"closed\"] {\n animation: accordion-up 0.2s ease-out;\n }\n }\n .data-\\[state\\=closed\\]\\:animate-out {\n &[data-state=\"closed\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=closed\\]\\:duration-300 {\n &[data-state=\"closed\"] {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-0 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(0/100);\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-80 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(80/100);\n --tw-exit-opacity: .8;\n }\n }\n .data-\\[state\\=closed\\]\\:zoom-out-95 {\n &[data-state=\"closed\"] {\n --tw-exit-scale: calc(95*1%);\n --tw-exit-scale: .95;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-bottom {\n &[data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-left {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-right {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-right-full {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: calc(1*100%);\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-top {\n &[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:animate-out {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:fade-out-0 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(0/100);\n --tw-exit-opacity: 0;\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:zoom-out-95 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n --tw-exit-scale: calc(95*1%);\n --tw-exit-scale: .95;\n }\n }\n }\n .data-\\[state\\=hidden\\]\\:animate-out {\n &[data-state=\"hidden\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=hidden\\]\\:fade-out {\n &[data-state=\"hidden\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=on\\]\\:bg-accent {\n &[data-state=\"on\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=on\\]\\:text-accent-foreground {\n &[data-state=\"on\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:animate-accordion-down {\n &[data-state=\"open\"] {\n animation: accordion-down 0.2s ease-out;\n }\n }\n .data-\\[state\\=open\\]\\:animate-in {\n &[data-state=\"open\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent\\/50 {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n .data-\\[state\\=open\\]\\:bg-secondary {\n &[data-state=\"open\"] {\n background-color: var(--secondary);\n }\n }\n .data-\\[state\\=open\\]\\:text-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:opacity-100 {\n &[data-state=\"open\"] {\n opacity: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:duration-500 {\n &[data-state=\"open\"] {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n }\n .data-\\[state\\=open\\]\\:fade-in-0 {\n &[data-state=\"open\"] {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-90 {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(90*1%);\n --tw-enter-scale: .9;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-95 {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-bottom {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-left {\n &[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-right {\n &[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-top {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-top-full {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: calc(1*-100%);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:animate-in {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:fade-in-0 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:zoom-in-95 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:bg-accent {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:bg-sidebar-accent {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--sidebar-accent);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:text-sidebar-accent-foreground {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:focus\\:bg-accent {\n &[data-state=\"open\"] {\n &:focus {\n background-color: var(--accent);\n }\n }\n }\n .data-\\[state\\=selected\\]\\:bg-muted {\n &[data-state=\"selected\"] {\n background-color: var(--muted);\n }\n }\n .data-\\[state\\=unchecked\\]\\:translate-x-0 {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=unchecked\\]\\:bg-input {\n &[data-state=\"unchecked\"] {\n background-color: var(--input);\n }\n }\n .data-\\[state\\=visible\\]\\:animate-in {\n &[data-state=\"visible\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=visible\\]\\:fade-in {\n &[data-state=\"visible\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[swipe\\=cancel\\]\\:translate-x-0 {\n &[data-swipe=\"cancel\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\] {\n &[data-swipe=\"end\"] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=end\\]\\:animate-out {\n &[data-swipe=\"end\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\] {\n &[data-swipe=\"move\"] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=move\\]\\:transition-none {\n &[data-swipe=\"move\"] {\n transition-property: none;\n }\n }\n .data-\\[variant\\=destructive\\]\\:text-destructive {\n &[data-variant=\"destructive\"] {\n color: var(--destructive);\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10 {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:text-destructive {\n &[data-variant=\"destructive\"] {\n &:focus {\n color: var(--destructive);\n }\n }\n }\n .data-\\[variant\\=label\\]\\:text-sm {\n &[data-variant=\"label\"] {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .data-\\[variant\\=legend\\]\\:text-base {\n &[data-variant=\"legend\"] {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .data-\\[variant\\=outline\\]\\:border-l-0 {\n &[data-variant=\"outline\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .data-\\[variant\\=outline\\]\\:shadow-xs {\n &[data-variant=\"outline\"] {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[variant\\=outline\\]\\:first\\:border-l {\n &[data-variant=\"outline\"] {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:bottom-0 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:mt-24 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n margin-top: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=\"bottom\"] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:rounded-t-lg {\n &[data-vaul-drawer-direction=\"bottom\"] {\n border-top-left-radius: var(--radius);\n border-top-right-radius: var(--radius);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:border-t {\n &[data-vaul-drawer-direction=\"bottom\"] {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=\"left\"] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:left-0 {\n &[data-vaul-drawer-direction=\"left\"] {\n left: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=\"left\"] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:border-r {\n &[data-vaul-drawer-direction=\"left\"] {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=\"right\"] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:right-0 {\n &[data-vaul-drawer-direction=\"right\"] {\n right: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=\"right\"] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:border-l {\n &[data-vaul-drawer-direction=\"right\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=\"top\"] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:top-0 {\n &[data-vaul-drawer-direction=\"top\"] {\n top: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:mb-24 {\n &[data-vaul-drawer-direction=\"top\"] {\n margin-bottom: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=\"top\"] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:rounded-b-lg {\n &[data-vaul-drawer-direction=\"top\"] {\n border-bottom-right-radius: var(--radius);\n border-bottom-left-radius: var(--radius);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:border-b {\n &[data-vaul-drawer-direction=\"top\"] {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .nth-last-2\\:-mt-1 {\n &:nth-last-child(2) {\n margin-top: calc(var(--spacing) * -1);\n }\n }\n .supports-\\[backdrop-filter\\]\\:bg-background\\/60 {\n @supports (backdrop-filter: var(--tw)) {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 60%, transparent);\n }\n }\n }\n .sm\\:top-auto {\n @media (width >= 40rem) {\n top: auto;\n }\n }\n .sm\\:right-0 {\n @media (width >= 40rem) {\n right: calc(var(--spacing) * 0);\n }\n }\n .sm\\:bottom-0 {\n @media (width >= 40rem) {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .sm\\:col-span-2 {\n @media (width >= 40rem) {\n grid-column: span 2 / span 2;\n }\n }\n .sm\\:block {\n @media (width >= 40rem) {\n display: block;\n }\n }\n .sm\\:flex {\n @media (width >= 40rem) {\n display: flex;\n }\n }\n .sm\\:max-w-\\[600px\\] {\n @media (width >= 40rem) {\n max-width: 600px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:max-w-sm {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n .sm\\:grid-cols-2 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .sm\\:flex-col {\n @media (width >= 40rem) {\n flex-direction: column;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:gap-2\\.5 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:pr-2\\.5 {\n @media (width >= 40rem) {\n padding-right: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:pl-2\\.5 {\n @media (width >= 40rem) {\n padding-left: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full {\n &[data-state=\"open\"] {\n @media (width >= 40rem) {\n --tw-enter-translate-y: calc(1*100%);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=\"left\"] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=\"right\"] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .md\\:absolute {\n @media (width >= 48rem) {\n position: absolute;\n }\n }\n .md\\:-left-24 {\n @media (width >= 48rem) {\n left: calc(var(--spacing) * -24);\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:ml-12 {\n @media (width >= 48rem) {\n margin-left: calc(var(--spacing) * 12);\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:w-20 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 20);\n }\n }\n .md\\:w-80 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 80);\n }\n }\n .md\\:w-\\[var\\(--radix-navigation-menu-viewport-width\\)\\] {\n @media (width >= 48rem) {\n width: var(--radix-navigation-menu-viewport-width);\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:max-w-\\[420px\\] {\n @media (width >= 48rem) {\n max-width: 420px;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:gap-1\\.5 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 1.5);\n }\n }\n .md\\:p-12 {\n @media (width >= 48rem) {\n padding: calc(var(--spacing) * 12);\n }\n }\n .md\\:px-6 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n .md\\:pl-12 {\n @media (width >= 48rem) {\n padding-left: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-left {\n @media (width >= 48rem) {\n text-align: left;\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:opacity-0 {\n @media (width >= 48rem) {\n opacity: 0%;\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:m-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin: calc(var(--spacing) * 2);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:ml-0 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin-left: calc(var(--spacing) * 0);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n border-radius: calc(var(--radius) + 4px);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:shadow-sm {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:peer-data-\\[state\\=collapsed\\]\\:ml-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n &:is(:where(.peer)[data-state=\"collapsed\"] ~ *) {\n margin-left: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .md\\:after\\:hidden {\n @media (width >= 48rem) {\n &::after {\n content: var(--tw-content);\n display: none;\n }\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:grid-cols-2 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-4 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .xl\\:grid-cols-4 {\n @media (width >= 80rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .\\@md\\/field-group\\:flex-row {\n @container field-group (width >= 28rem) {\n flex-direction: row;\n }\n }\n .\\@md\\/field-group\\:items-center {\n @container field-group (width >= 28rem) {\n align-items: center;\n }\n }\n .\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start {\n @container field-group (width >= 28rem) {\n &:has(>[data-slot=field-content]) {\n align-items: flex-start;\n }\n }\n }\n .dark\\:border-blue-800 {\n &:is(.dark *) {\n border-color: var(--color-blue-800);\n }\n }\n .dark\\:border-blue-800\\/30 {\n &:is(.dark *) {\n border-color: color-mix(in srgb, oklch(42.4% 0.199 265.638) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-blue-800) 30%, transparent);\n }\n }\n }\n .dark\\:border-input {\n &:is(.dark *) {\n border-color: var(--input);\n }\n }\n .dark\\:border-pink-800\\/30 {\n &:is(.dark *) {\n border-color: color-mix(in srgb, oklch(45.9% 0.187 3.815) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-pink-800) 30%, transparent);\n }\n }\n }\n .dark\\:bg-blue-900\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-900) 20%, transparent);\n }\n }\n }\n .dark\\:bg-blue-950 {\n &:is(.dark *) {\n background-color: var(--color-blue-950);\n }\n }\n .dark\\:bg-blue-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-destructive\\/60 {\n &:is(.dark *) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 60%, transparent);\n }\n }\n }\n .dark\\:bg-input\\/30 {\n &:is(.dark *) {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\n }\n }\n }\n .dark\\:bg-pink-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(28.4% 0.109 3.907) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-pink-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-transparent {\n &:is(.dark *) {\n background-color: transparent;\n }\n }\n .dark\\:bg-yellow-900\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent);\n }\n }\n }\n .dark\\:bg-yellow-950 {\n &:is(.dark *) {\n background-color: var(--color-yellow-950);\n }\n }\n .dark\\:text-blue-200 {\n &:is(.dark *) {\n color: var(--color-blue-200);\n }\n }\n .dark\\:text-muted-foreground {\n &:is(.dark *) {\n color: var(--muted-foreground);\n }\n }\n .dark\\:text-yellow-200 {\n &:is(.dark *) {\n color: var(--color-yellow-200);\n }\n }\n .dark\\:ring-blue-800 {\n &:is(.dark *) {\n --tw-ring-color: var(--color-blue-800);\n }\n }\n .dark\\:ring-yellow-800 {\n &:is(.dark *) {\n --tw-ring-color: var(--color-yellow-800);\n }\n }\n .dark\\:hover\\:bg-accent\\/50 {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-input\\/50 {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:text-accent-foreground {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:has-data-\\[state\\=checked\\]\\:bg-primary\\/10 {\n &:is(.dark *) {\n &:has(*[data-state=\"checked\"]) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n }\n }\n }\n }\n .dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:has(*:is([data-slot][aria-invalid=true])) {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[active\\=true\\]\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:border-input {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n border-color: var(--input);\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:bg-input\\/30 {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:text-foreground {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n color: var(--foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary {\n &:is(.dark *) {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary-foreground {\n &:is(.dark *) {\n &[data-state=\"checked\"] {\n background-color: var(--primary-foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-foreground {\n &:is(.dark *) {\n &[data-state=\"unchecked\"] {\n background-color: var(--foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-input\\/80 {\n &:is(.dark *) {\n &[data-state=\"unchecked\"] {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 80%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20 {\n &:is(.dark *) {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n }\n .\\[\\&_\\.recharts-cartesian-axis-tick_text\\]\\:fill-muted-foreground {\n & .recharts-cartesian-axis-tick text {\n fill: var(--muted-foreground);\n }\n }\n .\\[\\&_\\.recharts-cartesian-grid_line\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border\\/50 {\n & .recharts-cartesian-grid line[stroke='#ccc'] {\n stroke: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n stroke: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n }\n .\\[\\&_\\.recharts-curve\\.recharts-tooltip-cursor\\]\\:stroke-border {\n & .recharts-curve.recharts-tooltip-cursor {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-dot\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent {\n & .recharts-dot[stroke='#fff'] {\n stroke: transparent;\n }\n }\n .\\[\\&_\\.recharts-layer\\]\\:outline-hidden {\n & .recharts-layer {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\.recharts-polar-grid_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border {\n & .recharts-polar-grid [stroke='#ccc'] {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-radial-bar-background-sector\\]\\:fill-muted {\n & .recharts-radial-bar-background-sector {\n fill: var(--muted);\n }\n }\n .\\[\\&_\\.recharts-rectangle\\.recharts-tooltip-cursor\\]\\:fill-muted {\n & .recharts-rectangle.recharts-tooltip-cursor {\n fill: var(--muted);\n }\n }\n .\\[\\&_\\.recharts-reference-line_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border {\n & .recharts-reference-line [stroke='#ccc'] {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-sector\\]\\:outline-hidden {\n & .recharts-sector {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\.recharts-sector\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent {\n & .recharts-sector[stroke='#fff'] {\n stroke: transparent;\n }\n }\n .\\[\\&_\\.recharts-surface\\]\\:outline-hidden {\n & .recharts-surface {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 {\n & [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 {\n & [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs {\n & [cmdk-group-heading] {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium {\n & [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground {\n & [cmdk-group-heading] {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\]\\:px-2 {\n & [cmdk-group] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 {\n & [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 {\n & [cmdk-input-wrapper] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 {\n & [cmdk-input-wrapper] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input\\]\\]\\:h-12 {\n & [cmdk-input] {\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:px-2 {\n & [cmdk-item] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:py-3 {\n & [cmdk-item] {\n padding-block: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 {\n & [cmdk-item] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 {\n & [cmdk-item] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_img\\]\\:size-full {\n & img {\n width: 100%;\n height: 100%;\n }\n }\n .\\[\\&_img\\]\\:object-cover {\n & img {\n object-fit: cover;\n }\n }\n .\\[\\&_p\\]\\:leading-relaxed {\n & p {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-6 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground {\n & svg:not([class*='text-']) {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_tr\\]\\:border-b {\n & tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .\\[\\&_tr\\:last-child\\]\\:border-0 {\n & tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .\\[\\&\\+\\[data-slot\\=item-content\\]\\]\\:flex-none {\n &+[data-slot=item-content] {\n flex: none;\n }\n }\n .\\[\\&\\:first-child\\[data-selected\\=true\\]_button\\]\\:rounded-l-md {\n &:first-child[data-selected=true] button {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0 {\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n }\n .\\[\\.border-b\\]\\:pb-3 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n .\\[\\.border-b\\]\\:pb-6 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 6);\n }\n }\n .\\[\\.border-t\\]\\:pt-3 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 3);\n }\n }\n .\\[\\.border-t\\]\\:pt-6 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 6);\n }\n }\n .rtl\\:\\*\\*\\:\\[\\.rdp-button\\\\_next\\>svg\\]\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n :is(& *) {\n &:is(.rdp-button_next>svg) {\n rotate: 180deg;\n }\n }\n }\n }\n .rtl\\:\\*\\*\\:\\[\\.rdp-button\\\\_previous\\>svg\\]\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n :is(& *) {\n &:is(.rdp-button_previous>svg) {\n rotate: 180deg;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:flex {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n display: flex;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:items-center {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n align-items: center;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:gap-2 {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive {\n &[data-variant=\"destructive\"] {\n :is(& > *) {\n &:is(svg) {\n color: var(--destructive) !important;\n }\n }\n }\n }\n .\\[\\&\\:last-child\\[data-selected\\=true\\]_button\\]\\:rounded-r-md {\n &:last-child[data-selected=true] button {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .\\[\\&\\>\\*\\]\\:w-full {\n &>* {\n width: 100%;\n }\n }\n .\\[\\&\\>\\*\\]\\:focus-visible\\:relative {\n &>* {\n &:focus-visible {\n position: relative;\n }\n }\n }\n .\\[\\&\\>\\*\\]\\:focus-visible\\:z-10 {\n &>* {\n &:focus-visible {\n z-index: 10;\n }\n }\n }\n .\\[\\&\\>\\*\\]\\:data-\\[slot\\=field\\]\\:p-4 {\n &>* {\n &[data-slot=\"field\"] {\n padding: calc(var(--spacing) * 4);\n }\n }\n }\n .\\@md\\/field-group\\:\\[\\&\\>\\*\\]\\:w-auto {\n @container field-group (width >= 28rem) {\n &>* {\n width: auto;\n }\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none {\n &>*:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-l-none {\n &>*:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0 {\n &>*:not(:first-child) {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-l-0 {\n &>*:not(:first-child) {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-r-none {\n &>*:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none {\n &>*:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n .\\[\\&\\>\\.sr-only\\]\\:w-auto {\n &>.sr-only {\n width: auto;\n }\n }\n .\\[\\&\\>\\[data-slot\\=field-group\\]\\]\\:gap-4 {\n &>[data-slot=field-group] {\n gap: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto {\n &>[data-slot=field-label] {\n flex: auto;\n }\n }\n .\\@md\\/field-group\\:\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto {\n @container field-group (width >= 28rem) {\n &>[data-slot=field-label] {\n flex: auto;\n }\n }\n }\n .has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-r-md {\n &:has(*:is(select[aria-hidden=true]:last-child)) {\n &>[data-slot=select-trigger]:last-of-type {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n }\n .\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=\\'w-\\'\\]\\)\\]\\:w-fit {\n &>[data-slot=select-trigger]:not([class*='w-']) {\n width: fit-content;\n }\n }\n .\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] {\n &>[role=checkbox] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px {\n &:has(>[data-slot=field-content]) {\n &>[role=checkbox],[role=radio] {\n margin-top: 1px;\n }\n }\n }\n .\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px {\n @container field-group (width >= 28rem) {\n &:has(>[data-slot=field-content]) {\n &>[role=checkbox],[role=radio] {\n margin-top: 1px;\n }\n }\n }\n }\n .\\[\\&\\>a\\]\\:underline {\n &>a {\n text-decoration-line: underline;\n }\n }\n .\\[\\&\\>a\\]\\:underline-offset-4 {\n &>a {\n text-underline-offset: 4px;\n }\n }\n .\\[\\&\\>a\\:hover\\]\\:text-primary {\n &>a:hover {\n color: var(--primary);\n }\n }\n .\\[\\&\\>button\\]\\:hidden {\n &>button {\n display: none;\n }\n }\n .\\[\\&\\>input\\]\\:flex-1 {\n &>input {\n flex: 1;\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3 {\n &:has(>[data-align=block-end]) {\n &>input {\n padding-top: calc(var(--spacing) * 3);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3 {\n &:has(>[data-align=block-start]) {\n &>input {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pr-2 {\n &:has(>[data-align=inline-end]) {\n &>input {\n padding-right: calc(var(--spacing) * 2);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:pl-2 {\n &:has(>[data-align=inline-start]) {\n &>input {\n padding-left: calc(var(--spacing) * 2);\n }\n }\n }\n .\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\] {\n &>kbd {\n border-radius: calc(var(--radius) - 5px);\n }\n }\n .\\[\\&\\>span\\]\\:text-xs {\n &>span {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&\\>span\\]\\:opacity-70 {\n &>span {\n opacity: 70%;\n }\n }\n .\\[\\&\\>span\\:last-child\\]\\:truncate {\n &>span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n .\\[\\&\\>svg\\]\\:pointer-events-none {\n &>svg {\n pointer-events: none;\n }\n }\n .\\[\\&\\>svg\\]\\:size-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:size-3\\.5 {\n &>svg {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\]\\:size-4 {\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>svg\\]\\:h-2\\.5 {\n &>svg {\n height: calc(var(--spacing) * 2.5);\n }\n }\n .\\[\\&\\>svg\\]\\:h-3 {\n &>svg {\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:w-2\\.5 {\n &>svg {\n width: calc(var(--spacing) * 2.5);\n }\n }\n .\\[\\&\\>svg\\]\\:w-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:shrink-0 {\n &>svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&\\>svg\\]\\:translate-y-0\\.5 {\n &>svg {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .\\[\\&\\>svg\\]\\:text-current {\n &>svg {\n color: currentcolor;\n }\n }\n .\\[\\&\\>svg\\]\\:text-muted-foreground {\n &>svg {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&\\>svg\\]\\:text-sidebar-accent-foreground {\n &>svg {\n color: var(--sidebar-accent-foreground);\n }\n }\n .\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3\\.5 {\n &>svg:not([class*='size-']) {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n &>svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>tr\\]\\:last\\:border-b-0 {\n &>tr {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n .\\[\\&\\[data-panel-group-direction\\=vertical\\]\\>div\\]\\:rotate-90 {\n &[data-panel-group-direction=vertical]>div {\n rotate: 90deg;\n }\n }\n .\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180 {\n &[data-state=open]>svg {\n rotate: 180deg;\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-right-2 {\n [data-side=left][data-collapsible=offcanvas] & {\n right: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize {\n [data-side=left][data-state=collapsed] & {\n cursor: e-resize;\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-left-2 {\n [data-side=right][data-collapsible=offcanvas] & {\n left: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize {\n [data-side=right][data-state=collapsed] & {\n cursor: w-resize;\n }\n }\n .\\[\\[data-slot\\=card-content\\]_\\&\\]\\:bg-transparent {\n [data-slot=card-content] & {\n background-color: transparent;\n }\n }\n .\\[\\[data-slot\\=popover-content\\]_\\&\\]\\:bg-transparent {\n [data-slot=popover-content] & {\n background-color: transparent;\n }\n }\n .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-background\\/20 {\n [data-slot=tooltip-content] & {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 20%, transparent);\n }\n }\n }\n .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:text-background {\n [data-slot=tooltip-content] & {\n color: var(--background);\n }\n }\n .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-background\\/10 {\n &:is(.dark *) {\n [data-slot=tooltip-content] & {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 10%, transparent);\n }\n }\n }\n }\n .\\[\\[data-variant\\=legend\\]\\+\\&\\]\\:-mt-1\\.5 {\n [data-variant=legend]+& {\n margin-top: calc(var(--spacing) * -1.5);\n }\n }\n .\\[a\\&\\]\\:transition-colors {\n a& {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent\\/50 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-destructive\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-primary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-secondary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:text-accent-foreground {\n a& {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n }\n}\n@property --tw-animation-delay {\n syntax: \"*\";\n inherits: false;\n initial-value: 0s;\n}\n@property --tw-animation-direction {\n syntax: \"*\";\n inherits: false;\n initial-value: normal;\n}\n@property --tw-animation-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-animation-fill-mode {\n syntax: \"*\";\n inherits: false;\n initial-value: forwards;\n}\n@property --tw-animation-iteration-count {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n:root {\n --background: oklch(0.97 0.01 90);\n --foreground: oklch(0.2 0.02 265);\n --card: oklch(0.98 0.005 90);\n --card-foreground: oklch(0.2 0.02 265);\n --popover: oklch(0.98 0.005 90);\n --popover-foreground: oklch(0.2 0.02 265);\n --primary: oklch(0.45 0.15 25);\n --primary-foreground: oklch(0.98 0.01 90);\n --secondary: oklch(0.85 0.05 85);\n --secondary-foreground: oklch(0.3 0.05 50);\n --muted: oklch(0.92 0.01 90);\n --muted-foreground: oklch(0.45 0.02 265);\n --accent: oklch(0.94 0.02 85);\n --accent-foreground: oklch(0.3 0.05 50);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.98 0 0);\n --border: oklch(0.88 0.01 90);\n --input: oklch(0.88 0.01 90);\n --ring: oklch(0.45 0.15 25);\n --radius: 0.5rem;\n --sidebar: oklch(0.96 0.01 90);\n --sidebar-foreground: oklch(0.25 0.02 265);\n --sidebar-primary: oklch(0.45 0.15 25);\n --sidebar-primary-foreground: oklch(0.98 0.01 90);\n --sidebar-accent: oklch(0.93 0.01 90);\n --sidebar-accent-foreground: oklch(0.25 0.02 265);\n --sidebar-border: oklch(0.88 0.01 90);\n --sidebar-ring: oklch(0.45 0.15 25);\n --chart-1: oklch(0.45 0.15 25);\n --chart-2: oklch(0.65 0.12 50);\n --chart-3: oklch(0.35 0.08 200);\n --chart-4: oklch(0.55 0.05 265);\n --chart-5: oklch(0.75 0.1 85);\n}\n.dark {\n --background: oklch(0.12 0.01 265);\n --foreground: oklch(0.95 0.01 90);\n --card: oklch(0.15 0.01 265);\n --card-foreground: oklch(0.95 0.01 90);\n --popover: oklch(0.15 0.01 265);\n --popover-foreground: oklch(0.95 0.01 90);\n --primary: oklch(0.6 0.15 25);\n --primary-foreground: oklch(0.98 0.01 90);\n --secondary: oklch(0.3 0.05 50);\n --secondary-foreground: oklch(0.9 0.05 85);\n --muted: oklch(0.2 0.01 265);\n --muted-foreground: oklch(0.65 0.01 265);\n --accent: oklch(0.2 0.02 265);\n --accent-foreground: oklch(0.95 0.01 90);\n --destructive: oklch(0.396 0.141 25.723);\n --destructive-foreground: oklch(0.98 0 0);\n --border: oklch(0.25 0.01 265);\n --input: oklch(0.25 0.01 265);\n --ring: oklch(0.6 0.15 25);\n --sidebar: oklch(0.14 0.01 265);\n --sidebar-foreground: oklch(0.95 0.01 90);\n --sidebar-primary: oklch(0.6 0.15 25);\n --sidebar-primary-foreground: oklch(0.98 0.01 90);\n --sidebar-accent: oklch(0.2 0.01 265);\n --sidebar-accent-foreground: oklch(0.95 0.01 90);\n --sidebar-border: oklch(0.25 0.01 265);\n --sidebar-ring: oklch(0.6 0.15 25);\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n body {\n background-color: var(--background);\n color: var(--foreground);\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-family: \"Songti SC\", \"STSong\", \"SimSun\", \"Times New Roman\", serif;\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity,1);\n transform: translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity,1);\n transform: translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))));\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))));\n }\n to {\n height: 0;\n }\n}\n@keyframes caret-blink {\n 0%,70%,100% {\n opacity: 1;\n }\n 20%,50% {\n opacity: 0;\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-content: \"\";\n --tw-animation-delay: 0s;\n --tw-animation-direction: normal;\n --tw-animation-duration: initial;\n --tw-animation-fill-mode: forwards;\n --tw-animation-iteration-count: 1;\n --tw-enter-opacity: 1;\n --tw-enter-rotate: 0;\n --tw-enter-scale: 1;\n --tw-enter-translate-x: 0;\n --tw-enter-translate-y: 0;\n --tw-exit-opacity: 1;\n --tw-exit-rotate: 0;\n --tw-exit-scale: 1;\n --tw-exit-translate-x: 0;\n --tw-exit-translate-y: 0;\n }\n }\n}\n"],"names":[],"mappings":"AACA;EA62ME;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA72MJ;EAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAFF;EA6GE;;;;;;;EAAA;;;;;;;EAMA;;;;;;;;;;EASA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;;;EAKA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;;;;;EAAA;;;;;;;;;;;EAUA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;IACE;;;;IAEE;MAAgD;;;;;;EAKpD;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAyxLA;;;;;EAGE;IAAgD;;;;;EAIlD;;;;;EAIA;;;;;;;AAhiMF;;AAAA;EAiQE;;;;EAIA;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;;;;;;EAWA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAI3B;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;EAMA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAIE;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAMF;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;;EAKA;;;;;;EAKA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAG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"}}] + {"offset": {"line": 85, "column": 0}, "map": {"version":3,"sources":["file:///Users/freedak/Documents/go-new/chinese-family-tree/app/globals.css"],"sourcesContent":["/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-orange-50: oklch(98% 0.016 73.684);\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-700: oklch(55.3% 0.195 38.402);\n --color-amber-700: oklch(55.5% 0.163 48.998);\n --color-yellow-50: oklch(98.7% 0.026 102.212);\n --color-yellow-200: oklch(94.5% 0.129 101.54);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-800: oklch(47.6% 0.114 61.907);\n --color-yellow-900: oklch(42.1% 0.095 57.708);\n --color-yellow-950: oklch(28.6% 0.066 53.813);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-100: oklch(93.2% 0.032 255.585);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-blue-950: oklch(28.2% 0.091 267.935);\n --color-purple-50: oklch(97.7% 0.014 308.299);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-500: oklch(62.7% 0.265 303.9);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-pink-50: oklch(97.1% 0.014 343.198);\n --color-pink-100: oklch(94.8% 0.028 342.258);\n --color-pink-200: oklch(89.9% 0.061 343.231);\n --color-pink-400: oklch(71.8% 0.202 349.761);\n --color-pink-700: oklch(52.5% 0.223 3.958);\n --color-pink-800: oklch(45.9% 0.187 3.815);\n --color-pink-950: oklch(28.4% 0.109 3.907);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-500: oklch(55.1% 0.027 264.364);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-neutral-100: oklch(97% 0 0);\n --color-neutral-400: oklch(70.8% 0 0);\n --color-neutral-500: oklch(55.6% 0 0);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-6xl: 72rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --radius-xs: 0.125rem;\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: \"Geist\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n --default-mono-font-family: \"Geist Mono\", monospace;\n --color-border: var(--border);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .\\@container\\/card-header {\n container-type: inline-size;\n container-name: card-header;\n }\n .\\@container\\/field-group {\n container-type: inline-size;\n container-name: field-group;\n }\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .invisible {\n visibility: hidden;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .inset-x-0 {\n inset-inline: calc(var(--spacing) * 0);\n }\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n .-top-1 {\n top: calc(var(--spacing) * -1);\n }\n .-top-3 {\n top: calc(var(--spacing) * -3);\n }\n .-top-12 {\n top: calc(var(--spacing) * -12);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1 {\n top: calc(var(--spacing) * 1);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-2\\.5 {\n top: calc(var(--spacing) * 2.5);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-20 {\n top: calc(var(--spacing) * 20);\n }\n .top-\\[1px\\] {\n top: 1px;\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .top-\\[60\\%\\] {\n top: 60%;\n }\n .top-full {\n top: 100%;\n }\n .-right-0\\.5 {\n right: calc(var(--spacing) * -0.5);\n }\n .-right-1 {\n right: calc(var(--spacing) * -1);\n }\n .-right-12 {\n right: calc(var(--spacing) * -12);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1 {\n right: calc(var(--spacing) * 1);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .-bottom-0\\.5 {\n bottom: calc(var(--spacing) * -0.5);\n }\n .-bottom-1 {\n bottom: calc(var(--spacing) * -1);\n }\n .-bottom-12 {\n bottom: calc(var(--spacing) * -12);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .-left-12 {\n left: calc(var(--spacing) * -12);\n }\n .-left-16 {\n left: calc(var(--spacing) * -16);\n }\n .-left-\\[9px\\] {\n left: calc(9px * -1);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-2\\.5 {\n left: calc(var(--spacing) * 2.5);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .isolate {\n isolation: isolate;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-30 {\n z-index: 30;\n }\n .z-50 {\n z-index: 50;\n }\n .z-\\[1\\] {\n z-index: 1;\n }\n .z-\\[100\\] {\n z-index: 100;\n }\n .order-first {\n order: -9999;\n }\n .order-last {\n order: 9999;\n }\n .col-span-full {\n grid-column: 1 / -1;\n }\n .col-start-2 {\n grid-column-start: 2;\n }\n .row-span-2 {\n grid-row: span 2 / span 2;\n }\n .row-start-1 {\n grid-row-start: 1;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .\\!m-0 {\n margin: calc(var(--spacing) * 0) !important;\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-3\\.5 {\n margin-inline: calc(var(--spacing) * 3.5);\n }\n .mx-4 {\n margin-inline: calc(var(--spacing) * 4);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .-my-2 {\n margin-block: calc(var(--spacing) * -2);\n }\n .my-0 {\n margin-block: calc(var(--spacing) * 0);\n }\n .my-0\\.5 {\n margin-block: calc(var(--spacing) * 0.5);\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n .mt-0 {\n margin-top: calc(var(--spacing) * 0);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-auto {\n margin-top: auto;\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n .mr-8 {\n margin-right: calc(var(--spacing) * 8);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .-ml-4 {\n margin-left: calc(var(--spacing) * -4);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-6 {\n margin-left: calc(var(--spacing) * 6);\n }\n .ml-auto {\n margin-left: auto;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .table-caption {\n display: table-caption;\n }\n .table-cell {\n display: table-cell;\n }\n .table-row {\n display: table-row;\n }\n .field-sizing-content {\n field-sizing: content;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .size-\\(--cell-size\\) {\n width: var(--cell-size);\n height: var(--cell-size);\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n height: calc(var(--spacing) * 2.5);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-6 {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n .size-7 {\n width: calc(var(--spacing) * 7);\n height: calc(var(--spacing) * 7);\n }\n .size-8 {\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-10 {\n width: calc(var(--spacing) * 10);\n height: calc(var(--spacing) * 10);\n }\n .size-auto {\n width: auto;\n height: auto;\n }\n .size-full {\n width: 100%;\n height: 100%;\n }\n .h-\\(--cell-size\\) {\n height: var(--cell-size);\n }\n .h-1 {\n height: calc(var(--spacing) * 1);\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-2\\.5 {\n height: calc(var(--spacing) * 2.5);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-\\[1\\.15rem\\] {\n height: 1.15rem;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-\\[600px\\] {\n height: 600px;\n }\n .h-\\[calc\\(100\\%-1px\\)\\] {\n height: calc(100% - 1px);\n }\n .h-\\[var\\(--radix-navigation-menu-viewport-height\\)\\] {\n height: var(--radix-navigation-menu-viewport-height);\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .h-svh {\n height: 100svh;\n }\n .max-h-\\(--radix-context-menu-content-available-height\\) {\n max-height: var(--radix-context-menu-content-available-height);\n }\n .max-h-\\(--radix-dropdown-menu-content-available-height\\) {\n max-height: var(--radix-dropdown-menu-content-available-height);\n }\n .max-h-\\(--radix-select-content-available-height\\) {\n max-height: var(--radix-select-content-available-height);\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[60vh\\] {\n max-height: 60vh;\n }\n .max-h-\\[70vh\\] {\n max-height: 70vh;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .max-h-screen {\n max-height: 100vh;\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-4 {\n min-height: calc(var(--spacing) * 4);\n }\n .min-h-16 {\n min-height: calc(var(--spacing) * 16);\n }\n .min-h-\\[200px\\] {\n min-height: 200px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .min-h-svh {\n min-height: 100svh;\n }\n .w-\\(--cell-size\\) {\n width: var(--cell-size);\n }\n .w-\\(--sidebar-width\\) {\n width: var(--sidebar-width);\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\/4 {\n width: calc(3/4 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-7 {\n width: calc(var(--spacing) * 7);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-\\[100px\\] {\n width: 100px;\n }\n .w-\\[200px\\] {\n width: 200px;\n }\n .w-\\[var\\(--radix-dropdown-menu-trigger-width\\)\\] {\n width: var(--radix-dropdown-menu-trigger-width);\n }\n .w-auto {\n width: auto;\n }\n .w-fit {\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-px {\n width: 1px;\n }\n .max-w-\\(--skeleton-width\\) {\n max-width: var(--skeleton-width);\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-3xl {\n max-width: var(--container-3xl);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-max {\n max-width: max-content;\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .max-w-none {\n max-width: none;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .min-w-\\(--cell-size\\) {\n min-width: var(--cell-size);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-5 {\n min-width: calc(var(--spacing) * 5);\n }\n .min-w-8 {\n min-width: calc(var(--spacing) * 8);\n }\n .min-w-9 {\n min-width: calc(var(--spacing) * 9);\n }\n .min-w-10 {\n min-width: calc(var(--spacing) * 10);\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[12rem\\] {\n min-width: 12rem;\n }\n .min-w-\\[200px\\] {\n min-width: 200px;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .min-w-fit {\n min-width: fit-content;\n }\n .min-w-full {\n min-width: 100%;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .grow {\n flex-grow: 1;\n }\n .grow-0 {\n flex-grow: 0;\n }\n .basis-full {\n flex-basis: 100%;\n }\n .caption-bottom {\n caption-side: bottom;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .origin-\\(--radix-context-menu-content-transform-origin\\) {\n transform-origin: var(--radix-context-menu-content-transform-origin);\n }\n .origin-\\(--radix-dropdown-menu-content-transform-origin\\) {\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n }\n .origin-\\(--radix-hover-card-content-transform-origin\\) {\n transform-origin: var(--radix-hover-card-content-transform-origin);\n }\n .origin-\\(--radix-menubar-content-transform-origin\\) {\n transform-origin: var(--radix-menubar-content-transform-origin);\n }\n .origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n .origin-\\(--radix-select-content-transform-origin\\) {\n transform-origin: var(--radix-select-content-transform-origin);\n }\n .origin-\\(--radix-tooltip-content-transform-origin\\) {\n transform-origin: var(--radix-tooltip-content-transform-origin);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-px {\n --tw-translate-x: -1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-px {\n --tw-translate-x: 1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0\\.5 {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[2px\\] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[calc\\(-50\\%_-_2px\\)\\] {\n --tw-translate-y: calc(-50% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-45 {\n rotate: 45deg;\n }\n .rotate-90 {\n rotate: 90deg;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-caret-blink {\n animation: caret-blink 1.25s ease-out infinite;\n }\n .animate-in {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-move {\n cursor: move;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-text {\n cursor: text;\n }\n .touch-none {\n touch-action: none;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .scroll-my-1 {\n scroll-margin-block: calc(var(--spacing) * 1);\n }\n .scroll-py-1 {\n scroll-padding-block: calc(var(--spacing) * 1);\n }\n .list-inside {\n list-style-position: inside;\n }\n .list-disc {\n list-style-type: disc;\n }\n .list-none {\n list-style-type: none;\n }\n .auto-rows-min {\n grid-auto-rows: min-content;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-\\[0_1fr\\] {\n grid-template-columns: 0 1fr;\n }\n .grid-rows-\\[auto_auto\\] {\n grid-template-rows: auto auto;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-baseline {\n align-items: baseline;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .justify-items-start {\n justify-items: start;\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-7 {\n gap: calc(var(--spacing) * 7);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .space-y-0\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-4 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .gap-y-0\\.5 {\n row-gap: calc(var(--spacing) * 0.5);\n }\n .self-start {\n align-self: flex-start;\n }\n .self-stretch {\n align-self: stretch;\n }\n .justify-self-end {\n justify-self: flex-end;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-\\[2px\\] {\n border-radius: 2px;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\] {\n border-radius: calc(var(--radius) - 5px);\n }\n .rounded-\\[inherit\\] {\n border-radius: inherit;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius);\n }\n .rounded-md {\n border-radius: calc(var(--radius) - 2px);\n }\n .rounded-none {\n border-radius: 0;\n }\n .rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n }\n .rounded-xl {\n border-radius: calc(var(--radius) + 4px);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .rounded-l-md {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n .rounded-tl-sm {\n border-top-left-radius: calc(var(--radius) - 4px);\n }\n .rounded-r-md {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-\\[1\\.5px\\] {\n border-style: var(--tw-border-style);\n border-width: 1.5px;\n }\n .border-y {\n border-block-style: var(--tw-border-style);\n border-block-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-\\(--color-border\\) {\n border-color: var(--color-border);\n }\n .border-background {\n border-color: var(--background);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-200\\/50 {\n border-color: color-mix(in srgb, oklch(88.2% 0.059 254.128) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-blue-200) 50%, transparent);\n }\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-border {\n border-color: var(--border);\n }\n .border-border\\/40 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 40%, transparent);\n }\n }\n .border-border\\/50 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n .border-border\\/60 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 60%, transparent);\n }\n }\n .border-destructive {\n border-color: var(--destructive);\n }\n .border-destructive\\/20 {\n border-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-input {\n border-color: var(--input);\n }\n .border-muted-foreground\\/50 {\n border-color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--muted-foreground) 50%, transparent);\n }\n }\n .border-orange-200 {\n border-color: var(--color-orange-200);\n }\n .border-pink-200\\/50 {\n border-color: color-mix(in srgb, oklch(89.9% 0.061 343.231) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-pink-200) 50%, transparent);\n }\n }\n .border-primary {\n border-color: var(--primary);\n }\n .border-primary\\/20 {\n border-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n .border-purple-200 {\n border-color: var(--color-purple-200);\n }\n .border-red-500 {\n border-color: var(--color-red-500);\n }\n .border-sidebar-border {\n border-color: var(--sidebar-border);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-yellow-400 {\n border-color: var(--color-yellow-400);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .border-l-transparent {\n border-left-color: transparent;\n }\n .bg-\\(--color-bg\\) {\n background-color: var(--color-bg);\n }\n .bg-accent {\n background-color: var(--accent);\n }\n .bg-background {\n background-color: var(--background);\n }\n .bg-background\\/50 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 50%, transparent);\n }\n }\n .bg-background\\/60 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 60%, transparent);\n }\n }\n .bg-background\\/80 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 80%, transparent);\n }\n }\n .bg-background\\/90 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 90%, transparent);\n }\n }\n .bg-background\\/95 {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 95%, transparent);\n }\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-50\\/50 {\n background-color: color-mix(in srgb, oklch(97% 0.014 254.604) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-50) 50%, transparent);\n }\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-border {\n background-color: var(--border);\n }\n .bg-card {\n background-color: var(--card);\n }\n .bg-card\\/50 {\n background-color: var(--card);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--card) 50%, transparent);\n }\n }\n .bg-destructive {\n background-color: var(--destructive);\n }\n .bg-destructive\\/10 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n .bg-destructive\\/15 {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 15%, transparent);\n }\n }\n .bg-foreground {\n background-color: var(--foreground);\n }\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-gray-500 {\n background-color: var(--color-gray-500);\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-input {\n background-color: var(--input);\n }\n .bg-muted {\n background-color: var(--muted);\n }\n .bg-muted\\/30 {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\n }\n }\n .bg-muted\\/50 {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n .bg-neutral-100 {\n background-color: var(--color-neutral-100);\n }\n .bg-neutral-400 {\n background-color: var(--color-neutral-400);\n }\n .bg-orange-50 {\n background-color: var(--color-orange-50);\n }\n .bg-orange-500 {\n background-color: var(--color-orange-500);\n }\n .bg-pink-50\\/50 {\n background-color: color-mix(in srgb, oklch(97.1% 0.014 343.198) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-pink-50) 50%, transparent);\n }\n }\n .bg-pink-100 {\n background-color: var(--color-pink-100);\n }\n .bg-popover {\n background-color: var(--popover);\n }\n .bg-primary {\n background-color: var(--primary);\n }\n .bg-primary\\/5 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n }\n .bg-primary\\/10 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n }\n }\n .bg-primary\\/20 {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n .bg-purple-50 {\n background-color: var(--color-purple-50);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-purple-500 {\n background-color: var(--color-purple-500);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-500 {\n background-color: var(--color-red-500);\n }\n .bg-secondary {\n background-color: var(--secondary);\n }\n .bg-sidebar {\n background-color: var(--sidebar);\n }\n .bg-sidebar-border {\n background-color: var(--sidebar-border);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n .bg-gradient-to-br {\n --tw-gradient-position: to bottom right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-\\[url\\(\\'https\\:\\/\\/www\\.transparenttextures\\.com\\/patterns\\/rice-paper\\.png\\'\\)\\] {\n background-image: url('https://www.transparenttextures.com/patterns/rice-paper.png');\n }\n .from-card {\n --tw-gradient-from: var(--card);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-primary\\/5 {\n --tw-gradient-from: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-primary\\/50 {\n --tw-gradient-from: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--primary) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-background {\n --tw-gradient-via: var(--background);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-primary {\n --tw-gradient-via: var(--primary);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-card\\/50 {\n --tw-gradient-to: var(--card);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--card) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-primary\\/50 {\n --tw-gradient-to: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--primary) 50%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-secondary\\/5 {\n --tw-gradient-to: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--secondary) 5%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-repeat {\n background-repeat: repeat;\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-foreground {\n fill: var(--foreground);\n }\n .fill-primary {\n fill: var(--primary);\n }\n .object-contain {\n object-fit: contain;\n }\n .object-cover {\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .p-\\[3px\\] {\n padding: 3px;\n }\n .p-px {\n padding: 1px;\n }\n .px-\\(--cell-size\\) {\n padding-inline: var(--cell-size);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .pt-0 {\n padding-top: calc(var(--spacing) * 0);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-20 {\n padding-top: calc(var(--spacing) * 20);\n }\n .pr-1 {\n padding-right: calc(var(--spacing) * 1);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-2\\.5 {\n padding-right: calc(var(--spacing) * 2.5);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-20 {\n padding-bottom: calc(var(--spacing) * 20);\n }\n .pl-1 {\n padding-left: calc(var(--spacing) * 1);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .align-middle {\n vertical-align: middle;\n }\n .font-mono {\n font-family: \"Geist Mono\", monospace;\n }\n .font-sans {\n font-family: \"Geist\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n }\n .font-serif {\n font-family: \"Songti SC\", \"STSong\", \"SimSun\", \"Times New Roman\", serif;\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-sm\\/relaxed {\n font-size: var(--text-sm);\n line-height: var(--leading-relaxed);\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .leading-normal {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-balance {\n text-wrap: balance;\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .break-all {\n word-break: break-all;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre-line {\n white-space: pre-line;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-accent-foreground {\n color: var(--accent-foreground);\n }\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n .text-background {\n color: var(--background);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-card-foreground {\n color: var(--card-foreground);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-foreground {\n color: var(--foreground);\n }\n .text-foreground\\/50 {\n color: var(--foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--foreground) 50%, transparent);\n }\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-muted-foreground\\/60 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 60%, transparent);\n }\n }\n .text-muted-foreground\\/70 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 70%, transparent);\n }\n }\n .text-muted-foreground\\/80 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 80%, transparent);\n }\n }\n .text-neutral-500 {\n color: var(--color-neutral-500);\n }\n .text-orange-700 {\n color: var(--color-orange-700);\n }\n .text-pink-400 {\n color: var(--color-pink-400);\n }\n .text-pink-700 {\n color: var(--color-pink-700);\n }\n .text-popover-foreground {\n color: var(--popover-foreground);\n }\n .text-primary {\n color: var(--primary);\n }\n .text-primary-foreground {\n color: var(--primary-foreground);\n }\n .text-primary\\/70 {\n color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--primary) 70%, transparent);\n }\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-secondary-foreground {\n color: var(--secondary-foreground);\n }\n .text-sidebar-foreground {\n color: var(--sidebar-foreground);\n }\n .text-sidebar-foreground\\/70 {\n color: var(--sidebar-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--sidebar-foreground) 70%, transparent);\n }\n }\n .text-white {\n color: var(--color-white);\n }\n .text-yellow-800 {\n color: var(--color-yellow-800);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .italic {\n font-style: italic;\n }\n .tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .underline {\n text-decoration-line: underline;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-90 {\n opacity: 90%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-border\\)\\)\\] {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-none {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-0 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-4 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-background {\n --tw-ring-color: var(--background);\n }\n .ring-blue-200 {\n --tw-ring-color: var(--color-blue-200);\n }\n .ring-ring\\/50 {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n .ring-sidebar-ring {\n --tw-ring-color: var(--sidebar-ring);\n }\n .ring-yellow-200 {\n --tw-ring-color: var(--color-yellow-200);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--background);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .backdrop-blur {\n --tw-backdrop-blur: blur(8px);\n -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,);\n 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,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[left\\,right\\,width\\] {\n transition-property: left,right,width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[margin\\,opacity\\] {\n transition-property: margin,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\,height\\,padding\\] {\n transition-property: width,height,padding;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[width\\] {\n transition-property: width;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-1000 {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .ease-linear {\n --tw-ease: linear;\n transition-timing-function: linear;\n }\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n .fade-in-0 {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n .slide-in-from-bottom-5 {\n --tw-enter-translate-y: calc(5*var(--spacing));\n --tw-enter-translate-y: calc(.05*100%);\n }\n .zoom-in-95 {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n .\\[--cell-size\\:--spacing\\(8\\)\\] {\n --cell-size: calc(var(--spacing) * 8);\n }\n .slide-in-from-top-2 {\n --tw-enter-translate-y: calc(2*var(--spacing)*-1);\n }\n .group-last\\:hidden {\n &:is(:where(.group):last-child *) {\n display: none;\n }\n }\n .group-focus-within\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):focus-within *) {\n opacity: 100%;\n }\n }\n .group-hover\\:scale-110 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .group-hover\\:bg-primary\\/20 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 20%, transparent);\n }\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-hover\\/menu-item\\:opacity-100 {\n &:is(:where(.group\\/menu-item):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .group-has-data-\\[sidebar\\=menu-action\\]\\/menu-item\\:pr-8 {\n &:is(:where(.group\\/menu-item):has(*[data-sidebar=\"menu-action\"]) *) {\n padding-right: calc(var(--spacing) * 8);\n }\n }\n .group-has-\\[\\[data-orientation\\=horizontal\\]\\]\\/field\\:text-balance {\n &:is(:where(.group\\/field):has(*:is([data-orientation=horizontal])) *) {\n text-wrap: balance;\n }\n }\n .group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:translate-y-0\\.5 {\n &:is(:where(.group\\/item):has(*:is([data-slot=item-description])) *) {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:self-start {\n &:is(:where(.group\\/item):has(*:is([data-slot=item-description])) *) {\n align-self: flex-start;\n }\n }\n .group-has-\\[\\>input\\]\\/input-group\\:pt-2\\.5 {\n &:is(:where(.group\\/input-group):has(>input) *) {\n padding-top: calc(var(--spacing) * 2.5);\n }\n }\n .group-has-\\[\\>input\\]\\/input-group\\:pb-2\\.5 {\n &:is(:where(.group\\/input-group):has(>input) *) {\n padding-bottom: calc(var(--spacing) * 2.5);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:-mt-8 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n margin-top: calc(var(--spacing) * -8);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n display: none;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:size-8\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--spacing) * 8) !important;\n height: calc(var(--spacing) * 8) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\(--sidebar-width-icon\\) {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: var(--sidebar-width-icon);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)));\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\+2px\\)\\] {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n width: calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px);\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:overflow-hidden {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-0\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 0) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:p-2\\! {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n padding: calc(var(--spacing) * 2) !important;\n }\n }\n .group-data-\\[collapsible\\=icon\\]\\:opacity-0 {\n &:is(:where(.group)[data-collapsible=\"icon\"] *) {\n opacity: 0%;\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n right: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\] {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n left: calc(var(--sidebar-width) * -1);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:w-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n width: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0 {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[disabled\\=true\\]\\:pointer-events-none {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n pointer-events: none;\n }\n }\n .group-data-\\[disabled\\=true\\]\\:opacity-50 {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[disabled\\=true\\]\\/field\\:opacity-50 {\n &:is(:where(.group\\/field)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50 {\n &:is(:where(.group\\/input-group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:relative {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n position: relative;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:z-10 {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n z-index: 10;\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:border-ring {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n border-color: var(--ring);\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:ring-\\[3px\\] {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[focused\\=true\\]\\/day\\:ring-ring\\/50 {\n &:is(:where(.group\\/day)[data-focused=\"true\"] *) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .group-data-\\[side\\=left\\]\\:-right-4 {\n &:is(:where(.group)[data-side=\"left\"] *) {\n right: calc(var(--spacing) * -4);\n }\n }\n .group-data-\\[side\\=left\\]\\:border-r {\n &:is(:where(.group)[data-side=\"left\"] *) {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .group-data-\\[side\\=right\\]\\:left-0 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n left: calc(var(--spacing) * 0);\n }\n }\n .group-data-\\[side\\=right\\]\\:rotate-180 {\n &:is(:where(.group)[data-side=\"right\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[side\\=right\\]\\:border-l {\n &:is(:where(.group)[data-side=\"right\"] *) {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .group-data-\\[state\\=open\\]\\:rotate-180 {\n &:is(:where(.group)[data-state=\"open\"] *) {\n rotate: 180deg;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:rounded-lg {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-radius: var(--radius);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[variant\\=floating\\]\\:border-sidebar-border {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n border-color: var(--sidebar-border);\n }\n }\n .group-data-\\[variant\\=floating\\]\\:shadow-sm {\n &:is(:where(.group)[data-variant=\"floating\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[variant\\=outline\\]\\/field-group\\:-mb-2 {\n &:is(:where(.group\\/field-group)[data-variant=\"outline\"] *) {\n margin-bottom: calc(var(--spacing) * -2);\n }\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:block {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"bottom\"] *) {\n display: block;\n }\n }\n .group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:text-center {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"bottom\"] *) {\n text-align: center;\n }\n }\n .group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:text-center {\n &:is(:where(.group\\/drawer-content)[data-vaul-drawer-direction=\"top\"] *) {\n text-align: center;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:top-full {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n top: 100%;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:mt-1\\.5 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n margin-top: calc(var(--spacing) * 1.5);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:overflow-hidden {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n overflow: hidden;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:rounded-md {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:border {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:bg-popover {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n background-color: var(--popover);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:text-popover-foreground {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n color: var(--popover-foreground);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:shadow {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:duration-200 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n }\n .group-\\[\\.destructive\\]\\:border-muted\\/40 {\n &:is(:where(.group):is(.destructive) *) {\n border-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--muted) 40%, transparent);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:text-red-300 {\n &:is(:where(.group):is(.destructive) *) {\n color: var(--color-red-300);\n }\n }\n .peer-hover\\/menu-button\\:text-sidebar-accent-foreground {\n &:is(:where(.peer\\/menu-button):hover ~ *) {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-50 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n }\n .peer-data-\\[active\\=true\\]\\/menu-button\\:text-sidebar-accent-foreground {\n &:is(:where(.peer\\/menu-button)[data-active=\"true\"] ~ *) {\n color: var(--sidebar-accent-foreground);\n }\n }\n .peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"default\"] ~ *) {\n top: calc(var(--spacing) * 1.5);\n }\n }\n .peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5 {\n &:is(:where(.peer\\/menu-button)[data-size=\"lg\"] ~ *) {\n top: calc(var(--spacing) * 2.5);\n }\n }\n .peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1 {\n &:is(:where(.peer\\/menu-button)[data-size=\"sm\"] ~ *) {\n top: calc(var(--spacing) * 1);\n }\n }\n .selection\\:bg-primary {\n & *::selection {\n background-color: var(--primary);\n }\n &::selection {\n background-color: var(--primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::selection {\n color: var(--primary-foreground);\n }\n &::selection {\n color: var(--primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .file\\:text-foreground {\n &::file-selector-button {\n color: var(--foreground);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .after\\:absolute {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .after\\:-inset-2 {\n &::after {\n content: var(--tw-content);\n inset: calc(var(--spacing) * -2);\n }\n }\n .after\\:inset-y-0 {\n &::after {\n content: var(--tw-content);\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-1\\/2 {\n &::after {\n content: var(--tw-content);\n left: calc(1/2 * 100%);\n }\n }\n .after\\:w-1 {\n &::after {\n content: var(--tw-content);\n width: calc(var(--spacing) * 1);\n }\n }\n .after\\:w-\\[2px\\] {\n &::after {\n content: var(--tw-content);\n width: 2px;\n }\n }\n .after\\:-translate-x-1\\/2 {\n &::after {\n content: var(--tw-content);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .group-data-\\[collapsible\\=offcanvas\\]\\:after\\:left-full {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n &::after {\n content: var(--tw-content);\n left: 100%;\n }\n }\n }\n .first\\:rounded-l-md {\n &:first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .first\\:border-l {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .last\\:mt-0 {\n &:last-child {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .last\\:rounded-r-md {\n &:last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .last\\:border-0 {\n &:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .last\\:border-b-0 {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:border-blue-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-400);\n }\n }\n }\n .hover\\:border-primary {\n &:hover {\n @media (hover: hover) {\n border-color: var(--primary);\n }\n }\n }\n .hover\\:border-primary\\/30 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--primary) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n .hover\\:bg-accent\\/5 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 5%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-background {\n &:hover {\n @media (hover: hover) {\n background-color: var(--background);\n }\n }\n }\n .hover\\:bg-destructive {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n }\n }\n }\n .hover\\:bg-muted\\/30 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 30%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-secondary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-sidebar-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--sidebar-accent);\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n .hover\\:text-destructive {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive);\n }\n }\n }\n .hover\\:text-destructive-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive-foreground);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--foreground);\n }\n }\n }\n .hover\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--muted-foreground);\n }\n }\n }\n .hover\\:text-primary {\n &:hover {\n @media (hover: hover) {\n color: var(--primary);\n }\n }\n }\n .hover\\:text-sidebar-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-90 {\n &:hover {\n @media (hover: hover) {\n opacity: 90%;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .hover\\:shadow-\\[0_0_0_1px_hsl\\(var\\(--sidebar-accent\\)\\)\\] {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-lg {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:ring-4 {\n &:hover {\n @media (hover: hover) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:group-data-\\[collapsible\\=offcanvas\\]\\:bg-sidebar {\n &:hover {\n @media (hover: hover) {\n &:is(:where(.group)[data-collapsible=\"offcanvas\"] *) {\n background-color: var(--sidebar);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:border-destructive\\/30 {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n border-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--destructive) 30%, transparent);\n }\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:bg-destructive {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n color: var(--destructive-foreground);\n }\n }\n }\n }\n .group-\\[\\.destructive\\]\\:hover\\:text-red-50 {\n &:is(:where(.group):is(.destructive) *) {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-50);\n }\n }\n }\n }\n .hover\\:after\\:bg-sidebar-border {\n &:hover {\n @media (hover: hover) {\n &::after {\n content: var(--tw-content);\n background-color: var(--sidebar-border);\n }\n }\n }\n }\n .focus\\:z-10 {\n &:focus {\n z-index: 10;\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--accent);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--accent-foreground);\n }\n }\n .focus\\:opacity-100 {\n &:focus {\n opacity: 100%;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-destructive {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-color: var(--destructive);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-red-400 {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-color: var(--color-red-400);\n }\n }\n }\n .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600 {\n &:is(:where(.group):is(.destructive) *) {\n &:focus {\n --tw-ring-offset-color: var(--color-red-600);\n }\n }\n }\n .focus-visible\\:z-10 {\n &:focus-visible {\n z-index: 10;\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--ring);\n }\n }\n .focus-visible\\:ring-0 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-1 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-4 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-primary {\n &:focus-visible {\n --tw-ring-color: var(--primary);\n }\n }\n .focus-visible\\:ring-ring {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .focus-visible\\:ring-offset-1 {\n &:focus-visible {\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus-visible\\:outline-hidden {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus-visible\\:outline-1 {\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n }\n .focus-visible\\:outline-ring {\n &:focus-visible {\n outline-color: var(--ring);\n }\n }\n .active\\:bg-sidebar-accent {\n &:active {\n background-color: var(--sidebar-accent);\n }\n }\n .active\\:text-sidebar-accent-foreground {\n &:active {\n color: var(--sidebar-accent-foreground);\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .in-data-\\[side\\=left\\]\\:cursor-w-resize {\n :where(*[data-side=\"left\"]) & {\n cursor: w-resize;\n }\n }\n .in-data-\\[side\\=right\\]\\:cursor-e-resize {\n :where(*[data-side=\"right\"]) & {\n cursor: e-resize;\n }\n }\n .has-focus\\:border-ring {\n &:has(*:focus) {\n border-color: var(--ring);\n }\n }\n .has-focus\\:ring-\\[3px\\] {\n &:has(*:focus) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .has-focus\\:ring-ring\\/50 {\n &:has(*:focus) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .has-disabled\\:opacity-50 {\n &:has(*:disabled) {\n opacity: 50%;\n }\n }\n .has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\] {\n &:has(*[data-slot=\"card-action\"]) {\n grid-template-columns: 1fr auto;\n }\n }\n .has-data-\\[state\\=checked\\]\\:border-primary {\n &:has(*[data-state=\"checked\"]) {\n border-color: var(--primary);\n }\n }\n .has-data-\\[state\\=checked\\]\\:bg-primary\\/5 {\n &:has(*[data-state=\"checked\"]) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 5%, transparent);\n }\n }\n }\n .has-data-\\[variant\\=inset\\]\\:bg-sidebar {\n &:has(*[data-variant=\"inset\"]) {\n background-color: var(--sidebar);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n border-color: var(--ring);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-\\[3px\\] {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50 {\n &:has(*:is([data-slot=input-group-control]:focus-visible)) {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive {\n &:has(*:is([data-slot][aria-invalid=true])) {\n border-color: var(--destructive);\n }\n }\n .has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20 {\n &:has(*:is([data-slot][aria-invalid=true])) {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto {\n &:has(>[data-align=block-end]) {\n height: auto;\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col {\n &:has(>[data-align=block-end]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto {\n &:has(>[data-align=block-start]) {\n height: auto;\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col {\n &:has(>[data-align=block-start]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2 {\n &:has(>[data-slot=button-group]) {\n gap: calc(var(--spacing) * 2);\n }\n }\n .has-\\[\\>\\[data-slot\\=checkbox-group\\]\\]\\:gap-3 {\n &:has(>[data-slot=checkbox-group]) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start {\n &:has(>[data-slot=field-content]) {\n align-items: flex-start;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:w-full {\n &:has(>[data-slot=field]) {\n width: 100%;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:flex-col {\n &:has(>[data-slot=field]) {\n flex-direction: column;\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:rounded-md {\n &:has(>[data-slot=field]) {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .has-\\[\\>\\[data-slot\\=field\\]\\]\\:border {\n &:has(>[data-slot=field]) {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .has-\\[\\>\\[data-slot\\=radio-group\\]\\]\\:gap-3 {\n &:has(>[data-slot=radio-group]) {\n gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>button\\]\\:mr-\\[-0\\.4rem\\] {\n &:has(>button) {\n margin-right: -0.4rem;\n }\n }\n .has-\\[\\>button\\]\\:ml-\\[-0\\.45rem\\] {\n &:has(>button) {\n margin-left: -0.45rem;\n }\n }\n .has-\\[\\>kbd\\]\\:mr-\\[-0\\.35rem\\] {\n &:has(>kbd) {\n margin-right: -0.35rem;\n }\n }\n .has-\\[\\>kbd\\]\\:ml-\\[-0\\.35rem\\] {\n &:has(>kbd) {\n margin-left: -0.35rem;\n }\n }\n .has-\\[\\>svg\\]\\:grid-cols-\\[calc\\(var\\(--spacing\\)\\*4\\)_1fr\\] {\n &:has(>svg) {\n grid-template-columns: calc(var(--spacing) * 4) 1fr;\n }\n }\n .has-\\[\\>svg\\]\\:gap-x-3 {\n &:has(>svg) {\n column-gap: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:p-0 {\n &:has(>svg) {\n padding: calc(var(--spacing) * 0);\n }\n }\n .has-\\[\\>svg\\]\\:px-2 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .has-\\[\\>textarea\\]\\:h-auto {\n &:has(>textarea) {\n height: auto;\n }\n }\n .aria-disabled\\:pointer-events-none {\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .aria-disabled\\:opacity-50 {\n &[aria-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .aria-selected\\:text-muted-foreground {\n &[aria-selected=\"true\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:z-10 {\n &[data-active=\"true\"] {\n z-index: 10;\n }\n }\n .data-\\[active\\=true\\]\\:border-ring {\n &[data-active=\"true\"] {\n border-color: var(--ring);\n }\n }\n .data-\\[active\\=true\\]\\:bg-accent\\/50 {\n &[data-active=\"true\"] {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:bg-sidebar-accent {\n &[data-active=\"true\"] {\n background-color: var(--sidebar-accent);\n }\n }\n .data-\\[active\\=true\\]\\:font-medium {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .data-\\[active\\=true\\]\\:font-semibold {\n &[data-active=\"true\"] {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n }\n .data-\\[active\\=true\\]\\:text-accent-foreground {\n &[data-active=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:text-foreground {\n &[data-active=\"true\"] {\n color: var(--foreground);\n }\n }\n .data-\\[active\\=true\\]\\:text-sidebar-accent-foreground {\n &[data-active=\"true\"] {\n color: var(--sidebar-accent-foreground);\n }\n }\n .data-\\[active\\=true\\]\\:ring-\\[3px\\] {\n &[data-active=\"true\"] {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[active\\=true\\]\\:ring-ring\\/50 {\n &[data-active=\"true\"] {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:hover\\:bg-accent {\n &[data-active=\"true\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .data-\\[active\\=true\\]\\:focus\\:bg-accent {\n &[data-active=\"true\"] {\n &:focus {\n background-color: var(--accent);\n }\n }\n }\n .data-\\[active\\=true\\]\\:aria-invalid\\:border-destructive {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n }\n .data-\\[active\\=true\\]\\:aria-invalid\\:ring-destructive\\/20 {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive {\n &[data-error=\"true\"] {\n color: var(--destructive);\n }\n }\n .data-\\[inset\\]\\:pl-8 {\n &[data-inset] {\n padding-left: calc(var(--spacing) * 8);\n }\n }\n .data-\\[invalid\\=true\\]\\:text-destructive {\n &[data-invalid=\"true\"] {\n color: var(--destructive);\n }\n }\n .data-\\[motion\\=from-end\\]\\:slide-in-from-right-52 {\n &[data-motion=\"from-end\"] {\n --tw-enter-translate-x: calc(52*var(--spacing));\n }\n }\n .data-\\[motion\\=from-start\\]\\:slide-in-from-left-52 {\n &[data-motion=\"from-start\"] {\n --tw-enter-translate-x: calc(52*var(--spacing)*-1);\n }\n }\n .data-\\[motion\\=to-end\\]\\:slide-out-to-right-52 {\n &[data-motion=\"to-end\"] {\n --tw-exit-translate-x: calc(52*var(--spacing));\n }\n }\n .data-\\[motion\\=to-start\\]\\:slide-out-to-left-52 {\n &[data-motion=\"to-start\"] {\n --tw-exit-translate-x: calc(52*var(--spacing)*-1);\n }\n }\n .data-\\[motion\\^\\=from-\\]\\:animate-in {\n &[data-motion^=\"from-\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[motion\\^\\=from-\\]\\:fade-in {\n &[data-motion^=\"from-\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[motion\\^\\=to-\\]\\:animate-out {\n &[data-motion^=\"to-\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[motion\\^\\=to-\\]\\:fade-out {\n &[data-motion^=\"to-\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-1\\.5 {\n &[data-orientation=\"horizontal\"] {\n height: calc(var(--spacing) * 1.5);\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-full {\n &[data-orientation=\"horizontal\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:h-px {\n &[data-orientation=\"horizontal\"] {\n height: 1px;\n }\n }\n .data-\\[orientation\\=horizontal\\]\\:w-full {\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-auto {\n &[data-orientation=\"vertical\"] {\n height: auto;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:h-full {\n &[data-orientation=\"vertical\"] {\n height: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:min-h-44 {\n &[data-orientation=\"vertical\"] {\n min-height: calc(var(--spacing) * 44);\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-1\\.5 {\n &[data-orientation=\"vertical\"] {\n width: calc(var(--spacing) * 1.5);\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-auto {\n &[data-orientation=\"vertical\"] {\n width: auto;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-full {\n &[data-orientation=\"vertical\"] {\n width: 100%;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:w-px {\n &[data-orientation=\"vertical\"] {\n width: 1px;\n }\n }\n .data-\\[orientation\\=vertical\\]\\:flex-col {\n &[data-orientation=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:h-px {\n &[data-panel-group-direction=\"vertical\"] {\n height: 1px;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:w-full {\n &[data-panel-group-direction=\"vertical\"] {\n width: 100%;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:flex-col {\n &[data-panel-group-direction=\"vertical\"] {\n flex-direction: column;\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:left-0 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:h-1 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n height: calc(var(--spacing) * 1);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:w-full {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n width: 100%;\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:translate-x-0 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[panel-group-direction\\=vertical\\]\\:after\\:-translate-y-1\\/2 {\n &[data-panel-group-direction=\"vertical\"] {\n &::after {\n content: var(--tw-content);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[range-end\\=true\\]\\:rounded-md {\n &[data-range-end=\"true\"] {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-end\\=true\\]\\:rounded-r-md {\n &[data-range-end=\"true\"] {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-end\\=true\\]\\:bg-primary {\n &[data-range-end=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[range-end\\=true\\]\\:text-primary-foreground {\n &[data-range-end=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[range-middle\\=true\\]\\:rounded-none {\n &[data-range-middle=\"true\"] {\n border-radius: 0;\n }\n }\n .data-\\[range-middle\\=true\\]\\:bg-accent {\n &[data-range-middle=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[range-middle\\=true\\]\\:text-accent-foreground {\n &[data-range-middle=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[range-start\\=true\\]\\:rounded-md {\n &[data-range-start=\"true\"] {\n border-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-start\\=true\\]\\:rounded-l-md {\n &[data-range-start=\"true\"] {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .data-\\[range-start\\=true\\]\\:bg-primary {\n &[data-range-start=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[range-start\\=true\\]\\:text-primary-foreground {\n &[data-range-start=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[selected-single\\=true\\]\\:bg-primary {\n &[data-selected-single=\"true\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[selected-single\\=true\\]\\:text-primary-foreground {\n &[data-selected-single=\"true\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:rounded-none {\n &[data-selected=\"true\"] {\n border-radius: 0;\n }\n }\n .data-\\[selected\\=true\\]\\:bg-accent {\n &[data-selected=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[selected\\=true\\]\\:text-accent-foreground {\n &[data-selected=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: calc(2*var(--spacing)*-1);\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:slide-in-from-right-2 {\n &[data-side=\"left\"] {\n --tw-enter-translate-x: calc(2*var(--spacing));\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: calc(2*var(--spacing)*-1);\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2 {\n &[data-side=\"top\"] {\n --tw-enter-translate-y: calc(2*var(--spacing));\n }\n }\n .data-\\[size\\=default\\]\\:h-9 {\n &[data-size=\"default\"] {\n height: calc(var(--spacing) * 9);\n }\n }\n .data-\\[size\\=sm\\]\\:h-8 {\n &[data-size=\"sm\"] {\n height: calc(var(--spacing) * 8);\n }\n }\n .\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90 {\n :is(& > *) {\n &[data-slot=\"alert-description\"] {\n color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .data-\\[slot\\=checkbox-group\\]\\:gap-3 {\n &[data-slot=\"checkbox-group\"] {\n gap: calc(var(--spacing) * 3);\n }\n }\n .\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 {\n :is(& *) {\n &[data-slot=\"command-input-wrapper\"] {\n height: calc(var(--spacing) * 12);\n }\n }\n }\n .\\*\\*\\:data-\\[slot\\=navigation-menu-link\\]\\:focus\\:ring-0 {\n :is(& *) {\n &[data-slot=\"navigation-menu-link\"] {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n }\n .\\*\\*\\:data-\\[slot\\=navigation-menu-link\\]\\:focus\\:outline-none {\n :is(& *) {\n &[data-slot=\"navigation-menu-link\"] {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:flex {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n display: flex;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:items-center {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n align-items: center;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:gap-2 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n .data-\\[state\\=active\\]\\:bg-background {\n &[data-state=\"active\"] {\n background-color: var(--background);\n }\n }\n .data-\\[state\\=active\\]\\:shadow-sm {\n &[data-state=\"active\"] {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\] {\n &[data-state=\"checked\"] {\n --tw-translate-x: calc(100% - 2px);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[state\\=closed\\]\\:animate-accordion-up {\n &[data-state=\"closed\"] {\n animation: accordion-up 0.2s ease-out;\n }\n }\n .data-\\[state\\=closed\\]\\:animate-out {\n &[data-state=\"closed\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=closed\\]\\:duration-300 {\n &[data-state=\"closed\"] {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-0 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(0/100);\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-80 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(80/100);\n --tw-exit-opacity: .8;\n }\n }\n .data-\\[state\\=closed\\]\\:zoom-out-95 {\n &[data-state=\"closed\"] {\n --tw-exit-scale: calc(95*1%);\n --tw-exit-scale: .95;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-bottom {\n &[data-state=\"closed\"] {\n --tw-exit-translate-y: 100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-left {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: -100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-right {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: 100%;\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-right-full {\n &[data-state=\"closed\"] {\n --tw-exit-translate-x: calc(1*100%);\n }\n }\n .data-\\[state\\=closed\\]\\:slide-out-to-top {\n &[data-state=\"closed\"] {\n --tw-exit-translate-y: -100%;\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:animate-out {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:fade-out-0 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: calc(0/100);\n --tw-exit-opacity: 0;\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=closed\\]\\:zoom-out-95 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"closed\"] {\n --tw-exit-scale: calc(95*1%);\n --tw-exit-scale: .95;\n }\n }\n }\n .data-\\[state\\=hidden\\]\\:animate-out {\n &[data-state=\"hidden\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=hidden\\]\\:fade-out {\n &[data-state=\"hidden\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=on\\]\\:bg-accent {\n &[data-state=\"on\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=on\\]\\:text-accent-foreground {\n &[data-state=\"on\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:animate-accordion-down {\n &[data-state=\"open\"] {\n animation: accordion-down 0.2s ease-out;\n }\n }\n .data-\\[state\\=open\\]\\:animate-in {\n &[data-state=\"open\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent\\/50 {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n .data-\\[state\\=open\\]\\:bg-secondary {\n &[data-state=\"open\"] {\n background-color: var(--secondary);\n }\n }\n .data-\\[state\\=open\\]\\:text-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:opacity-100 {\n &[data-state=\"open\"] {\n opacity: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:duration-500 {\n &[data-state=\"open\"] {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n }\n .data-\\[state\\=open\\]\\:fade-in-0 {\n &[data-state=\"open\"] {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-90 {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(90*1%);\n --tw-enter-scale: .9;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-95 {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-bottom {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-left {\n &[data-state=\"open\"] {\n --tw-enter-translate-x: -100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-right {\n &[data-state=\"open\"] {\n --tw-enter-translate-x: 100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-top {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: -100%;\n }\n }\n .data-\\[state\\=open\\]\\:slide-in-from-top-full {\n &[data-state=\"open\"] {\n --tw-enter-translate-y: calc(1*-100%);\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:animate-in {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:fade-in-0 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n --tw-enter-opacity: calc(0/100);\n --tw-enter-opacity: 0;\n }\n }\n }\n .group-data-\\[viewport\\=false\\]\\/navigation-menu\\:data-\\[state\\=open\\]\\:zoom-in-95 {\n &:is(:where(.group\\/navigation-menu)[data-viewport=\"false\"] *) {\n &[data-state=\"open\"] {\n --tw-enter-scale: calc(95*1%);\n --tw-enter-scale: .95;\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:bg-accent {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:bg-sidebar-accent {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--sidebar-accent);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:hover\\:text-sidebar-accent-foreground {\n &[data-state=\"open\"] {\n &:hover {\n @media (hover: hover) {\n color: var(--sidebar-accent-foreground);\n }\n }\n }\n }\n .data-\\[state\\=open\\]\\:focus\\:bg-accent {\n &[data-state=\"open\"] {\n &:focus {\n background-color: var(--accent);\n }\n }\n }\n .data-\\[state\\=selected\\]\\:bg-muted {\n &[data-state=\"selected\"] {\n background-color: var(--muted);\n }\n }\n .data-\\[state\\=unchecked\\]\\:translate-x-0 {\n &[data-state=\"unchecked\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[state\\=unchecked\\]\\:bg-input {\n &[data-state=\"unchecked\"] {\n background-color: var(--input);\n }\n }\n .data-\\[state\\=visible\\]\\:animate-in {\n &[data-state=\"visible\"] {\n animation: enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[state\\=visible\\]\\:fade-in {\n &[data-state=\"visible\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[swipe\\=cancel\\]\\:translate-x-0 {\n &[data-swipe=\"cancel\"] {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\] {\n &[data-swipe=\"end\"] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=end\\]\\:animate-out {\n &[data-swipe=\"end\"] {\n animation: exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,forwards);\n }\n }\n .data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\] {\n &[data-swipe=\"move\"] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[swipe\\=move\\]\\:transition-none {\n &[data-swipe=\"move\"] {\n transition-property: none;\n }\n }\n .data-\\[variant\\=destructive\\]\\:text-destructive {\n &[data-variant=\"destructive\"] {\n color: var(--destructive);\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10 {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:text-destructive {\n &[data-variant=\"destructive\"] {\n &:focus {\n color: var(--destructive);\n }\n }\n }\n .data-\\[variant\\=label\\]\\:text-sm {\n &[data-variant=\"label\"] {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .data-\\[variant\\=legend\\]\\:text-base {\n &[data-variant=\"legend\"] {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .data-\\[variant\\=outline\\]\\:border-l-0 {\n &[data-variant=\"outline\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .data-\\[variant\\=outline\\]\\:shadow-xs {\n &[data-variant=\"outline\"] {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .data-\\[variant\\=outline\\]\\:first\\:border-l {\n &[data-variant=\"outline\"] {\n &:first-child {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:bottom-0 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:mt-24 {\n &[data-vaul-drawer-direction=\"bottom\"] {\n margin-top: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=\"bottom\"] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:rounded-t-lg {\n &[data-vaul-drawer-direction=\"bottom\"] {\n border-top-left-radius: var(--radius);\n border-top-right-radius: var(--radius);\n }\n }\n .data-\\[vaul-drawer-direction\\=bottom\\]\\:border-t {\n &[data-vaul-drawer-direction=\"bottom\"] {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=\"left\"] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:left-0 {\n &[data-vaul-drawer-direction=\"left\"] {\n left: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=\"left\"] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:border-r {\n &[data-vaul-drawer-direction=\"left\"] {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:inset-y-0 {\n &[data-vaul-drawer-direction=\"right\"] {\n inset-block: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:right-0 {\n &[data-vaul-drawer-direction=\"right\"] {\n right: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:w-3\\/4 {\n &[data-vaul-drawer-direction=\"right\"] {\n width: calc(3/4 * 100%);\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:border-l {\n &[data-vaul-drawer-direction=\"right\"] {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:inset-x-0 {\n &[data-vaul-drawer-direction=\"top\"] {\n inset-inline: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:top-0 {\n &[data-vaul-drawer-direction=\"top\"] {\n top: calc(var(--spacing) * 0);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:mb-24 {\n &[data-vaul-drawer-direction=\"top\"] {\n margin-bottom: calc(var(--spacing) * 24);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:max-h-\\[80vh\\] {\n &[data-vaul-drawer-direction=\"top\"] {\n max-height: 80vh;\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:rounded-b-lg {\n &[data-vaul-drawer-direction=\"top\"] {\n border-bottom-right-radius: var(--radius);\n border-bottom-left-radius: var(--radius);\n }\n }\n .data-\\[vaul-drawer-direction\\=top\\]\\:border-b {\n &[data-vaul-drawer-direction=\"top\"] {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .nth-last-2\\:-mt-1 {\n &:nth-last-child(2) {\n margin-top: calc(var(--spacing) * -1);\n }\n }\n .supports-\\[backdrop-filter\\]\\:bg-background\\/60 {\n @supports (backdrop-filter: var(--tw)) {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 60%, transparent);\n }\n }\n }\n .sm\\:top-auto {\n @media (width >= 40rem) {\n top: auto;\n }\n }\n .sm\\:right-0 {\n @media (width >= 40rem) {\n right: calc(var(--spacing) * 0);\n }\n }\n .sm\\:bottom-0 {\n @media (width >= 40rem) {\n bottom: calc(var(--spacing) * 0);\n }\n }\n .sm\\:col-span-2 {\n @media (width >= 40rem) {\n grid-column: span 2 / span 2;\n }\n }\n .sm\\:block {\n @media (width >= 40rem) {\n display: block;\n }\n }\n .sm\\:flex {\n @media (width >= 40rem) {\n display: flex;\n }\n }\n .sm\\:max-w-\\[600px\\] {\n @media (width >= 40rem) {\n max-width: 600px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:max-w-sm {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n .sm\\:grid-cols-2 {\n @media (width >= 40rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .sm\\:flex-col {\n @media (width >= 40rem) {\n flex-direction: column;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:gap-2\\.5 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:pr-2\\.5 {\n @media (width >= 40rem) {\n padding-right: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:pl-2\\.5 {\n @media (width >= 40rem) {\n padding-left: calc(var(--spacing) * 2.5);\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full {\n &[data-state=\"open\"] {\n @media (width >= 40rem) {\n --tw-enter-translate-y: calc(1*100%);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=left\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=\"left\"] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .data-\\[vaul-drawer-direction\\=right\\]\\:sm\\:max-w-sm {\n &[data-vaul-drawer-direction=\"right\"] {\n @media (width >= 40rem) {\n max-width: var(--container-sm);\n }\n }\n }\n .md\\:absolute {\n @media (width >= 48rem) {\n position: absolute;\n }\n }\n .md\\:-left-24 {\n @media (width >= 48rem) {\n left: calc(var(--spacing) * -24);\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:ml-12 {\n @media (width >= 48rem) {\n margin-left: calc(var(--spacing) * 12);\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:w-20 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 20);\n }\n }\n .md\\:w-80 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 80);\n }\n }\n .md\\:w-\\[var\\(--radix-navigation-menu-viewport-width\\)\\] {\n @media (width >= 48rem) {\n width: var(--radix-navigation-menu-viewport-width);\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:max-w-\\[420px\\] {\n @media (width >= 48rem) {\n max-width: 420px;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:gap-1\\.5 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 1.5);\n }\n }\n .md\\:p-12 {\n @media (width >= 48rem) {\n padding: calc(var(--spacing) * 12);\n }\n }\n .md\\:px-6 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 6);\n }\n }\n .md\\:pl-12 {\n @media (width >= 48rem) {\n padding-left: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-left {\n @media (width >= 48rem) {\n text-align: left;\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:opacity-0 {\n @media (width >= 48rem) {\n opacity: 0%;\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:m-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin: calc(var(--spacing) * 2);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:ml-0 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n margin-left: calc(var(--spacing) * 0);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n border-radius: calc(var(--radius) + 4px);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:shadow-sm {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .md\\:peer-data-\\[variant\\=inset\\]\\:peer-data-\\[state\\=collapsed\\]\\:ml-2 {\n @media (width >= 48rem) {\n &:is(:where(.peer)[data-variant=\"inset\"] ~ *) {\n &:is(:where(.peer)[data-state=\"collapsed\"] ~ *) {\n margin-left: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .md\\:after\\:hidden {\n @media (width >= 48rem) {\n &::after {\n content: var(--tw-content);\n display: none;\n }\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:grid-cols-2 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .lg\\:grid-cols-4 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .xl\\:grid-cols-4 {\n @media (width >= 80rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .\\@md\\/field-group\\:flex-row {\n @container field-group (width >= 28rem) {\n flex-direction: row;\n }\n }\n .\\@md\\/field-group\\:items-center {\n @container field-group (width >= 28rem) {\n align-items: center;\n }\n }\n .\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start {\n @container field-group (width >= 28rem) {\n &:has(>[data-slot=field-content]) {\n align-items: flex-start;\n }\n }\n }\n .dark\\:border-blue-800 {\n &:is(.dark *) {\n border-color: var(--color-blue-800);\n }\n }\n .dark\\:border-blue-800\\/30 {\n &:is(.dark *) {\n border-color: color-mix(in srgb, oklch(42.4% 0.199 265.638) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-blue-800) 30%, transparent);\n }\n }\n }\n .dark\\:border-input {\n &:is(.dark *) {\n border-color: var(--input);\n }\n }\n .dark\\:border-pink-800\\/30 {\n &:is(.dark *) {\n border-color: color-mix(in srgb, oklch(45.9% 0.187 3.815) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-pink-800) 30%, transparent);\n }\n }\n }\n .dark\\:bg-blue-900\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-900) 20%, transparent);\n }\n }\n }\n .dark\\:bg-blue-950 {\n &:is(.dark *) {\n background-color: var(--color-blue-950);\n }\n }\n .dark\\:bg-blue-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-destructive\\/60 {\n &:is(.dark *) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 60%, transparent);\n }\n }\n }\n .dark\\:bg-input\\/30 {\n &:is(.dark *) {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\n }\n }\n }\n .dark\\:bg-pink-950\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(28.4% 0.109 3.907) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-pink-950) 20%, transparent);\n }\n }\n }\n .dark\\:bg-transparent {\n &:is(.dark *) {\n background-color: transparent;\n }\n }\n .dark\\:bg-yellow-900\\/20 {\n &:is(.dark *) {\n background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent);\n }\n }\n }\n .dark\\:bg-yellow-950 {\n &:is(.dark *) {\n background-color: var(--color-yellow-950);\n }\n }\n .dark\\:text-blue-200 {\n &:is(.dark *) {\n color: var(--color-blue-200);\n }\n }\n .dark\\:text-muted-foreground {\n &:is(.dark *) {\n color: var(--muted-foreground);\n }\n }\n .dark\\:text-yellow-200 {\n &:is(.dark *) {\n color: var(--color-yellow-200);\n }\n }\n .dark\\:ring-blue-800 {\n &:is(.dark *) {\n --tw-ring-color: var(--color-blue-800);\n }\n }\n .dark\\:ring-yellow-800 {\n &:is(.dark *) {\n --tw-ring-color: var(--color-yellow-800);\n }\n }\n .dark\\:hover\\:bg-accent\\/50 {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:bg-input\\/50 {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 50%, transparent);\n }\n }\n }\n }\n }\n .dark\\:hover\\:text-accent-foreground {\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:has-data-\\[state\\=checked\\]\\:bg-primary\\/10 {\n &:is(.dark *) {\n &:has(*[data-state=\"checked\"]) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 10%, transparent);\n }\n }\n }\n }\n .dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:has(*:is([data-slot][aria-invalid=true])) {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[active\\=true\\]\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[data-active=\"true\"] {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:border-input {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n border-color: var(--input);\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:bg-input\\/30 {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 30%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[state\\=active\\]\\:text-foreground {\n &:is(.dark *) {\n &[data-state=\"active\"] {\n color: var(--foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary {\n &:is(.dark *) {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n }\n .dark\\:data-\\[state\\=checked\\]\\:bg-primary-foreground {\n &:is(.dark *) {\n &[data-state=\"checked\"] {\n background-color: var(--primary-foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-foreground {\n &:is(.dark *) {\n &[data-state=\"unchecked\"] {\n background-color: var(--foreground);\n }\n }\n }\n .dark\\:data-\\[state\\=unchecked\\]\\:bg-input\\/80 {\n &:is(.dark *) {\n &[data-state=\"unchecked\"] {\n background-color: var(--input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--input) 80%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20 {\n &:is(.dark *) {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n }\n .\\[\\&_\\.recharts-cartesian-axis-tick_text\\]\\:fill-muted-foreground {\n & .recharts-cartesian-axis-tick text {\n fill: var(--muted-foreground);\n }\n }\n .\\[\\&_\\.recharts-cartesian-grid_line\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border\\/50 {\n & .recharts-cartesian-grid line[stroke='#ccc'] {\n stroke: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n stroke: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n }\n .\\[\\&_\\.recharts-curve\\.recharts-tooltip-cursor\\]\\:stroke-border {\n & .recharts-curve.recharts-tooltip-cursor {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-dot\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent {\n & .recharts-dot[stroke='#fff'] {\n stroke: transparent;\n }\n }\n .\\[\\&_\\.recharts-layer\\]\\:outline-hidden {\n & .recharts-layer {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\.recharts-polar-grid_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border {\n & .recharts-polar-grid [stroke='#ccc'] {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-radial-bar-background-sector\\]\\:fill-muted {\n & .recharts-radial-bar-background-sector {\n fill: var(--muted);\n }\n }\n .\\[\\&_\\.recharts-rectangle\\.recharts-tooltip-cursor\\]\\:fill-muted {\n & .recharts-rectangle.recharts-tooltip-cursor {\n fill: var(--muted);\n }\n }\n .\\[\\&_\\.recharts-reference-line_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border {\n & .recharts-reference-line [stroke='#ccc'] {\n stroke: var(--border);\n }\n }\n .\\[\\&_\\.recharts-sector\\]\\:outline-hidden {\n & .recharts-sector {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\.recharts-sector\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent {\n & .recharts-sector[stroke='#fff'] {\n stroke: transparent;\n }\n }\n .\\[\\&_\\.recharts-surface\\]\\:outline-hidden {\n & .recharts-surface {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 {\n & [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 {\n & [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs {\n & [cmdk-group-heading] {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium {\n & [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground {\n & [cmdk-group-heading] {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\]\\:px-2 {\n & [cmdk-group] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 {\n & [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 {\n & [cmdk-input-wrapper] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 {\n & [cmdk-input-wrapper] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input\\]\\]\\:h-12 {\n & [cmdk-input] {\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:px-2 {\n & [cmdk-item] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:py-3 {\n & [cmdk-item] {\n padding-block: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 {\n & [cmdk-item] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 {\n & [cmdk-item] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_img\\]\\:size-full {\n & img {\n width: 100%;\n height: 100%;\n }\n }\n .\\[\\&_img\\]\\:object-cover {\n & img {\n object-fit: cover;\n }\n }\n .\\[\\&_p\\]\\:leading-relaxed {\n & p {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-6 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 6);\n height: calc(var(--spacing) * 6);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground {\n & svg:not([class*='text-']) {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_tr\\]\\:border-b {\n & tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .\\[\\&_tr\\:last-child\\]\\:border-0 {\n & tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .\\[\\&\\+\\[data-slot\\=item-content\\]\\]\\:flex-none {\n &+[data-slot=item-content] {\n flex: none;\n }\n }\n .\\[\\&\\:first-child\\[data-selected\\=true\\]_button\\]\\:rounded-l-md {\n &:first-child[data-selected=true] button {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n }\n }\n .\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0 {\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n }\n .\\[\\.border-b\\]\\:pb-3 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n .\\[\\.border-b\\]\\:pb-6 {\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 6);\n }\n }\n .\\[\\.border-t\\]\\:pt-3 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 3);\n }\n }\n .\\[\\.border-t\\]\\:pt-6 {\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 6);\n }\n }\n .rtl\\:\\*\\*\\:\\[\\.rdp-button\\\\_next\\>svg\\]\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n :is(& *) {\n &:is(.rdp-button_next>svg) {\n rotate: 180deg;\n }\n }\n }\n }\n .rtl\\:\\*\\*\\:\\[\\.rdp-button\\\\_previous\\>svg\\]\\:rotate-180 {\n &:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *) {\n :is(& *) {\n &:is(.rdp-button_previous>svg) {\n rotate: 180deg;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:flex {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n display: flex;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:items-center {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n align-items: center;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:gap-2 {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive {\n &[data-variant=\"destructive\"] {\n :is(& > *) {\n &:is(svg) {\n color: var(--destructive) !important;\n }\n }\n }\n }\n .\\[\\&\\:last-child\\[data-selected\\=true\\]_button\\]\\:rounded-r-md {\n &:last-child[data-selected=true] button {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n .\\[\\&\\>\\*\\]\\:w-full {\n &>* {\n width: 100%;\n }\n }\n .\\[\\&\\>\\*\\]\\:focus-visible\\:relative {\n &>* {\n &:focus-visible {\n position: relative;\n }\n }\n }\n .\\[\\&\\>\\*\\]\\:focus-visible\\:z-10 {\n &>* {\n &:focus-visible {\n z-index: 10;\n }\n }\n }\n .\\[\\&\\>\\*\\]\\:data-\\[slot\\=field\\]\\:p-4 {\n &>* {\n &[data-slot=\"field\"] {\n padding: calc(var(--spacing) * 4);\n }\n }\n }\n .\\@md\\/field-group\\:\\[\\&\\>\\*\\]\\:w-auto {\n @container field-group (width >= 28rem) {\n &>* {\n width: auto;\n }\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none {\n &>*:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-l-none {\n &>*:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0 {\n &>*:not(:first-child) {\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-l-0 {\n &>*:not(:first-child) {\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-r-none {\n &>*:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n .\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none {\n &>*:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n .\\[\\&\\>\\.sr-only\\]\\:w-auto {\n &>.sr-only {\n width: auto;\n }\n }\n .\\[\\&\\>\\[data-slot\\=field-group\\]\\]\\:gap-4 {\n &>[data-slot=field-group] {\n gap: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto {\n &>[data-slot=field-label] {\n flex: auto;\n }\n }\n .\\@md\\/field-group\\:\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto {\n @container field-group (width >= 28rem) {\n &>[data-slot=field-label] {\n flex: auto;\n }\n }\n }\n .has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-r-md {\n &:has(*:is(select[aria-hidden=true]:last-child)) {\n &>[data-slot=select-trigger]:last-of-type {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n }\n }\n }\n .\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=\\'w-\\'\\]\\)\\]\\:w-fit {\n &>[data-slot=select-trigger]:not([class*='w-']) {\n width: fit-content;\n }\n }\n .\\[\\&\\>\\[role\\=checkbox\\]\\]\\:translate-y-\\[2px\\] {\n &>[role=checkbox] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px {\n &:has(>[data-slot=field-content]) {\n &>[role=checkbox],[role=radio] {\n margin-top: 1px;\n }\n }\n }\n .\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px {\n @container field-group (width >= 28rem) {\n &:has(>[data-slot=field-content]) {\n &>[role=checkbox],[role=radio] {\n margin-top: 1px;\n }\n }\n }\n }\n .\\[\\&\\>a\\]\\:underline {\n &>a {\n text-decoration-line: underline;\n }\n }\n .\\[\\&\\>a\\]\\:underline-offset-4 {\n &>a {\n text-underline-offset: 4px;\n }\n }\n .\\[\\&\\>a\\:hover\\]\\:text-primary {\n &>a:hover {\n color: var(--primary);\n }\n }\n .\\[\\&\\>button\\]\\:hidden {\n &>button {\n display: none;\n }\n }\n .\\[\\&\\>input\\]\\:flex-1 {\n &>input {\n flex: 1;\n }\n }\n .has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3 {\n &:has(>[data-align=block-end]) {\n &>input {\n padding-top: calc(var(--spacing) * 3);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3 {\n &:has(>[data-align=block-start]) {\n &>input {\n padding-bottom: calc(var(--spacing) * 3);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pr-2 {\n &:has(>[data-align=inline-end]) {\n &>input {\n padding-right: calc(var(--spacing) * 2);\n }\n }\n }\n .has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:pl-2 {\n &:has(>[data-align=inline-start]) {\n &>input {\n padding-left: calc(var(--spacing) * 2);\n }\n }\n }\n .\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\] {\n &>kbd {\n border-radius: calc(var(--radius) - 5px);\n }\n }\n .\\[\\&\\>span\\]\\:text-xs {\n &>span {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&\\>span\\]\\:opacity-70 {\n &>span {\n opacity: 70%;\n }\n }\n .\\[\\&\\>span\\:last-child\\]\\:truncate {\n &>span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n .\\[\\&\\>svg\\]\\:pointer-events-none {\n &>svg {\n pointer-events: none;\n }\n }\n .\\[\\&\\>svg\\]\\:size-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:size-3\\.5 {\n &>svg {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\]\\:size-4 {\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>svg\\]\\:h-2\\.5 {\n &>svg {\n height: calc(var(--spacing) * 2.5);\n }\n }\n .\\[\\&\\>svg\\]\\:h-3 {\n &>svg {\n height: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:w-2\\.5 {\n &>svg {\n width: calc(var(--spacing) * 2.5);\n }\n }\n .\\[\\&\\>svg\\]\\:w-3 {\n &>svg {\n width: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&\\>svg\\]\\:shrink-0 {\n &>svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&\\>svg\\]\\:translate-y-0\\.5 {\n &>svg {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .\\[\\&\\>svg\\]\\:text-current {\n &>svg {\n color: currentcolor;\n }\n }\n .\\[\\&\\>svg\\]\\:text-muted-foreground {\n &>svg {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&\\>svg\\]\\:text-sidebar-accent-foreground {\n &>svg {\n color: var(--sidebar-accent-foreground);\n }\n }\n .\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3\\.5 {\n &>svg:not([class*='size-']) {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n }\n .\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n &>svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\>tr\\]\\:last\\:border-b-0 {\n &>tr {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n .\\[\\&\\[data-panel-group-direction\\=vertical\\]\\>div\\]\\:rotate-90 {\n &[data-panel-group-direction=vertical]>div {\n rotate: 90deg;\n }\n }\n .\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180 {\n &[data-state=open]>svg {\n rotate: 180deg;\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-right-2 {\n [data-side=left][data-collapsible=offcanvas] & {\n right: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=left\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize {\n [data-side=left][data-state=collapsed] & {\n cursor: e-resize;\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-left-2 {\n [data-side=right][data-collapsible=offcanvas] & {\n left: calc(var(--spacing) * -2);\n }\n }\n .\\[\\[data-side\\=right\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize {\n [data-side=right][data-state=collapsed] & {\n cursor: w-resize;\n }\n }\n .\\[\\[data-slot\\=card-content\\]_\\&\\]\\:bg-transparent {\n [data-slot=card-content] & {\n background-color: transparent;\n }\n }\n .\\[\\[data-slot\\=popover-content\\]_\\&\\]\\:bg-transparent {\n [data-slot=popover-content] & {\n background-color: transparent;\n }\n }\n .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-background\\/20 {\n [data-slot=tooltip-content] & {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 20%, transparent);\n }\n }\n }\n .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:text-background {\n [data-slot=tooltip-content] & {\n color: var(--background);\n }\n }\n .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-background\\/10 {\n &:is(.dark *) {\n [data-slot=tooltip-content] & {\n background-color: var(--background);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--background) 10%, transparent);\n }\n }\n }\n }\n .\\[\\[data-variant\\=legend\\]\\+\\&\\]\\:-mt-1\\.5 {\n [data-variant=legend]+& {\n margin-top: calc(var(--spacing) * -1.5);\n }\n }\n .\\[a\\&\\]\\:transition-colors {\n a& {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-accent\\/50 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--accent) 50%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-destructive\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-primary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:bg-secondary\\/90 {\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 90%, transparent);\n }\n }\n }\n }\n }\n .\\[a\\&\\]\\:hover\\:text-accent-foreground {\n a& {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n }\n}\n@property --tw-animation-delay {\n syntax: \"*\";\n inherits: false;\n initial-value: 0s;\n}\n@property --tw-animation-direction {\n syntax: \"*\";\n inherits: false;\n initial-value: normal;\n}\n@property --tw-animation-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-animation-fill-mode {\n syntax: \"*\";\n inherits: false;\n initial-value: forwards;\n}\n@property --tw-animation-iteration-count {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n:root {\n --background: oklch(0.97 0.01 90);\n --foreground: oklch(0.2 0.02 265);\n --card: oklch(0.98 0.005 90);\n --card-foreground: oklch(0.2 0.02 265);\n --popover: oklch(0.98 0.005 90);\n --popover-foreground: oklch(0.2 0.02 265);\n --primary: oklch(0.45 0.15 25);\n --primary-foreground: oklch(0.98 0.01 90);\n --secondary: oklch(0.85 0.05 85);\n --secondary-foreground: oklch(0.3 0.05 50);\n --muted: oklch(0.92 0.01 90);\n --muted-foreground: oklch(0.45 0.02 265);\n --accent: oklch(0.94 0.02 85);\n --accent-foreground: oklch(0.3 0.05 50);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.98 0 0);\n --border: oklch(0.88 0.01 90);\n --input: oklch(0.88 0.01 90);\n --ring: oklch(0.45 0.15 25);\n --radius: 0.5rem;\n --sidebar: oklch(0.96 0.01 90);\n --sidebar-foreground: oklch(0.25 0.02 265);\n --sidebar-primary: oklch(0.45 0.15 25);\n --sidebar-primary-foreground: oklch(0.98 0.01 90);\n --sidebar-accent: oklch(0.93 0.01 90);\n --sidebar-accent-foreground: oklch(0.25 0.02 265);\n --sidebar-border: oklch(0.88 0.01 90);\n --sidebar-ring: oklch(0.45 0.15 25);\n --chart-1: oklch(0.45 0.15 25);\n --chart-2: oklch(0.65 0.12 50);\n --chart-3: oklch(0.35 0.08 200);\n --chart-4: oklch(0.55 0.05 265);\n --chart-5: oklch(0.75 0.1 85);\n}\n.dark {\n --background: oklch(0.12 0.01 265);\n --foreground: oklch(0.95 0.01 90);\n --card: oklch(0.15 0.01 265);\n --card-foreground: oklch(0.95 0.01 90);\n --popover: oklch(0.15 0.01 265);\n --popover-foreground: oklch(0.95 0.01 90);\n --primary: oklch(0.6 0.15 25);\n --primary-foreground: oklch(0.98 0.01 90);\n --secondary: oklch(0.3 0.05 50);\n --secondary-foreground: oklch(0.9 0.05 85);\n --muted: oklch(0.2 0.01 265);\n --muted-foreground: oklch(0.65 0.01 265);\n --accent: oklch(0.2 0.02 265);\n --accent-foreground: oklch(0.95 0.01 90);\n --destructive: oklch(0.396 0.141 25.723);\n --destructive-foreground: oklch(0.98 0 0);\n --border: oklch(0.25 0.01 265);\n --input: oklch(0.25 0.01 265);\n --ring: oklch(0.6 0.15 25);\n --sidebar: oklch(0.14 0.01 265);\n --sidebar-foreground: oklch(0.95 0.01 90);\n --sidebar-primary: oklch(0.6 0.15 25);\n --sidebar-primary-foreground: oklch(0.98 0.01 90);\n --sidebar-accent: oklch(0.2 0.01 265);\n --sidebar-accent-foreground: oklch(0.95 0.01 90);\n --sidebar-border: oklch(0.25 0.01 265);\n --sidebar-ring: oklch(0.6 0.15 25);\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n body {\n background-color: var(--background);\n color: var(--foreground);\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-family: \"Songti SC\", \"STSong\", \"SimSun\", \"Times New Roman\", serif;\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity,1);\n transform: translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity,1);\n transform: translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))));\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))));\n }\n to {\n height: 0;\n }\n}\n@keyframes caret-blink {\n 0%,70%,100% {\n opacity: 1;\n }\n 20%,50% {\n opacity: 0;\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-content: \"\";\n --tw-animation-delay: 0s;\n --tw-animation-direction: normal;\n --tw-animation-duration: initial;\n --tw-animation-fill-mode: forwards;\n --tw-animation-iteration-count: 1;\n --tw-enter-opacity: 1;\n --tw-enter-rotate: 0;\n --tw-enter-scale: 1;\n --tw-enter-translate-x: 0;\n --tw-enter-translate-y: 0;\n --tw-exit-opacity: 1;\n --tw-exit-rotate: 0;\n --tw-exit-scale: 1;\n --tw-exit-translate-x: 0;\n --tw-exit-translate-y: 0;\n }\n }\n}\n"],"names":[],"mappings":"AACA;EAs3ME;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAt3MJ;EAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAFF;EA6GE;;;;;;;EAAA;;;;;;;EAMA;;;;;;;;;;EASA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;;;EAKA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;;;;;EAAA;;;;;;;;;;;EAUA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;IACE;;;;IAEE;MAAgD;;;;;;EAKpD;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAkyLA;;;;;EAGE;IAAgD;;;;;EAIlD;;;;;EAIA;;;;;;;AAziMF;;AAAA;EAiQE;;;;EAIA;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;;;;;;EAWA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAI3B;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;EAMA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAIE;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAMF;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;;EAKA;;;;;;EAKA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAG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"}}] } \ No newline at end of file diff --git a/.next/dev/trace b/.next/dev/trace index 3d000ebf..567ade13 100644 --- a/.next/dev/trace +++ b/.next/dev/trace @@ -215,3 +215,17 @@ [{"name":"handle-request","duration":875393,"timestamp":117569045384,"id":70,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/activity-logs?limit=10"},"startTime":1763887147809,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":117569920808,"id":73,"parentId":70,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/activity-logs?limit=10","memory.rss":"1363853312","memory.heapUsed":"151323600","memory.heapTotal":"183771136"},"startTime":1763887148684,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2638,"timestamp":117589419612,"id":75,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1763887168182,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":120937,"timestamp":117589417481,"id":74,"tags":{"url":"/"},"startTime":1763887168180,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117589538451,"id":76,"parentId":74,"tags":{"url":"/","memory.rss":"1338109952","memory.heapUsed":"142249536","memory.heapTotal":"146604032"},"startTime":1763887168301,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":286,"timestamp":117589883542,"id":77,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763887168646,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":275,"timestamp":117589883885,"id":78,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763887168647,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":208,"timestamp":117589884709,"id":79,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763887168648,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":153,"timestamp":117589884957,"id":80,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763887168648,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":646,"timestamp":117589886615,"id":82,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763887168649,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20256,"timestamp":117589885742,"id":81,"tags":{"url":"/api/auth/session"},"startTime":1763887168649,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117589906037,"id":83,"parentId":81,"tags":{"url":"/api/auth/session","memory.rss":"1342664704","memory.heapUsed":"145229312","memory.heapTotal":"156012544"},"startTime":1763887168669,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1285,"timestamp":117590063955,"id":85,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887168827,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18958,"timestamp":117590063408,"id":84,"tags":{"url":"/api/trees"},"startTime":1763887168826,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117590082407,"id":86,"parentId":84,"tags":{"url":"/api/trees","memory.rss":"1342930944","memory.heapUsed":"146335240","memory.heapTotal":"156012544"},"startTime":1763887168845,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":822,"timestamp":117590084185,"id":88,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887168847,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25242,"timestamp":117590083796,"id":87,"tags":{"url":"/api/trees"},"startTime":1763887168847,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117590109089,"id":89,"parentId":87,"tags":{"url":"/api/trees","memory.rss":"1343918080","memory.heapUsed":"147845960","memory.heapTotal":"156475392"},"startTime":1763887168872,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":521,"timestamp":117590119790,"id":90,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887168883,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":469,"timestamp":117590120380,"id":91,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887168883,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":971,"timestamp":117590121707,"id":92,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887168885,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":644,"timestamp":117590122778,"id":93,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887168886,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1028,"timestamp":117590125385,"id":95,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887168888,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":35121,"timestamp":117590124493,"id":94,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887168887,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117590159660,"id":96,"parentId":94,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1345564672","memory.heapUsed":"147674560","memory.heapTotal":"156999680"},"startTime":1763887168922,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":412,"timestamp":117590163842,"id":97,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/activity-logs"},"startTime":1763887168927,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":357,"timestamp":117590164297,"id":98,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/activity-logs"},"startTime":1763887168927,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":686,"timestamp":117590166577,"id":99,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/activity-logs"},"startTime":1763887168929,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":521,"timestamp":117590167331,"id":100,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/activity-logs"},"startTime":1763887168930,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1028,"timestamp":117590169275,"id":102,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/activity-logs/route"},"startTime":1763887168932,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25741,"timestamp":117590168667,"id":101,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/activity-logs?limit=10"},"startTime":1763887168931,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":14,"timestamp":117590194485,"id":103,"parentId":101,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/activity-logs?limit=10","memory.rss":"1346916352","memory.heapUsed":"149396448","memory.heapTotal":"156999680"},"startTime":1763887168957,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1009,"timestamp":117592621789,"id":105,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887171385,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16984,"timestamp":117592620978,"id":104,"tags":{"url":"/api/trees"},"startTime":1763887171384,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117592638004,"id":106,"parentId":104,"tags":{"url":"/api/trees","memory.rss":"1348472832","memory.heapUsed":"149983232","memory.heapTotal":"158572544"},"startTime":1763887171401,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":839,"timestamp":117593511451,"id":108,"parentId":3,"tags":{"inputPage":"/members/page"},"startTime":1763887172274,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23600,"timestamp":117593510907,"id":107,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=vusbg"},"startTime":1763887172274,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117593534543,"id":109,"parentId":107,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=vusbg","memory.rss":"1350631424","memory.heapUsed":"150172408","memory.heapTotal":"159621120"},"startTime":1763887172297,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":547,"timestamp":117593852843,"id":111,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887172616,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13714,"timestamp":117593852232,"id":110,"tags":{"url":"/api/trees"},"startTime":1763887172615,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117593865977,"id":112,"parentId":110,"tags":{"url":"/api/trees","memory.rss":"1350979584","memory.heapUsed":"146458168","memory.heapTotal":"167485440"},"startTime":1763887172629,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":420,"timestamp":117593867059,"id":114,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887172630,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11483,"timestamp":117593866783,"id":113,"tags":{"url":"/api/trees"},"startTime":1763887172629,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117593878302,"id":115,"parentId":113,"tags":{"url":"/api/trees","memory.rss":"1350995968","memory.heapUsed":"147557784","memory.heapTotal":"167485440"},"startTime":1763887172641,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1807,"timestamp":117598492317,"id":117,"parentId":3,"tags":{"inputPage":"/members/page"},"startTime":1763887177255,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":178,"timestamp":117598559948,"id":118,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1763887177322,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":112,"timestamp":117598560157,"id":119,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1763887177323,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":201,"timestamp":117598561162,"id":120,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1763887177324,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":140,"timestamp":117598561430,"id":121,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1763887177324,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":73790,"timestamp":117598491473,"id":116,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh"},"startTime":1763887177254,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117598565294,"id":122,"parentId":116,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh","memory.rss":"1354309632","memory.heapUsed":"149111192","memory.heapTotal":"168009728"},"startTime":1763887177328,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":99000,"timestamp":117640356376,"id":123,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887219515,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":81000,"timestamp":117661171276,"id":124,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887240231,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1381,"timestamp":117677310151,"id":126,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887256070,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":26237,"timestamp":117677308616,"id":125,"tags":{"url":"/api/trees"},"startTime":1763887256068,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":117677334902,"id":129,"parentId":125,"tags":{"url":"/api/trees","memory.rss":"1365647360","memory.heapUsed":"150953520","memory.heapTotal":"170483712"},"startTime":1763887256095,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":20235,"timestamp":117677331631,"id":128,"parentId":3,"tags":{"inputPage":"/members/page"},"startTime":1763887256091,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":388955,"timestamp":117677330497,"id":127,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh"},"startTime":1763887256090,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117677719485,"id":130,"parentId":127,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh","memory.rss":"1382420480","memory.heapUsed":"168670752","memory.heapTotal":"181972992"},"startTime":1763887256479,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":178,"timestamp":117677740008,"id":131,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1763887256500,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":123,"timestamp":117677740221,"id":132,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1763887256500,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":265,"timestamp":117677741044,"id":133,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1763887256501,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":269,"timestamp":117677741352,"id":134,"parentId":3,"tags":{"inputPage":"/.well-known/appspecific/com.chrome.devtools.json"},"startTime":1763887256501,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":496,"timestamp":117678220276,"id":135,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763887256980,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":250,"timestamp":117678220838,"id":136,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763887256981,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":224,"timestamp":117678222564,"id":137,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763887256982,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":201,"timestamp":117678222864,"id":138,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763887256983,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1943,"timestamp":117678232242,"id":140,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763887256992,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":30625,"timestamp":117678230496,"id":139,"tags":{"url":"/api/auth/session"},"startTime":1763887256990,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":117678261189,"id":141,"parentId":139,"tags":{"url":"/api/auth/session","memory.rss":"1382694912","memory.heapUsed":"171154896","memory.heapTotal":"189022208"},"startTime":1763887257021,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1229,"timestamp":117678362012,"id":143,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887257122,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":255,"timestamp":117678370033,"id":144,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh"},"startTime":1763887257130,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":303,"timestamp":117678370352,"id":145,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh"},"startTime":1763887257130,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":793,"timestamp":117678373509,"id":146,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh"},"startTime":1763887257133,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":225,"timestamp":117678374351,"id":147,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh"},"startTime":1763887257134,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":775,"timestamp":117678377991,"id":149,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/route"},"startTime":1763887257138,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":30674,"timestamp":117678361443,"id":142,"tags":{"url":"/api/trees"},"startTime":1763887257121,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117678392165,"id":150,"parentId":142,"tags":{"url":"/api/trees","memory.rss":"1383526400","memory.heapUsed":"173718464","memory.heapTotal":"189779968"},"startTime":1763887257152,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22262,"timestamp":117678377486,"id":148,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh"},"startTime":1763887257137,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117678399803,"id":151,"parentId":148,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh","memory.rss":"1383845888","memory.heapUsed":"174038504","memory.heapTotal":"189779968"},"startTime":1763887257160,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":205,"timestamp":117678431193,"id":152,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887257191,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":144,"timestamp":117678431434,"id":153,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887257191,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":170,"timestamp":117678432069,"id":154,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887257192,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":149,"timestamp":117678432269,"id":155,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887257192,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":620,"timestamp":117678433534,"id":157,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887257193,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21026,"timestamp":117678433128,"id":156,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887257193,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117678454194,"id":158,"parentId":156,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1385832448","memory.heapUsed":"176090168","memory.heapTotal":"190042112"},"startTime":1763887257214,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2134,"timestamp":117728074948,"id":160,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887306833,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":492,"timestamp":117728097049,"id":161,"parentId":3,"tags":{"inputPage":"/members/cmib8zhse000jhhxlt3ppgfn2"},"startTime":1763887306855,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":385,"timestamp":117728097615,"id":162,"parentId":3,"tags":{"inputPage":"/members/cmib8zhse000jhhxlt3ppgfn2"},"startTime":1763887306856,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":432,"timestamp":117728100124,"id":163,"parentId":3,"tags":{"inputPage":"/members/cmib8zhse000jhhxlt3ppgfn2"},"startTime":1763887306858,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":378,"timestamp":117728100631,"id":164,"parentId":3,"tags":{"inputPage":"/members/cmib8zhse000jhhxlt3ppgfn2"},"startTime":1763887306859,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":36131,"timestamp":117728072047,"id":159,"tags":{"url":"/api/trees"},"startTime":1763887306830,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":14,"timestamp":117728108280,"id":165,"parentId":159,"tags":{"url":"/api/trees","memory.rss":"1371947008","memory.heapUsed":"166698288","memory.heapTotal":"171487232"},"startTime":1763887306866,"traceId":"e9a6c25356b91814"},{"name":"compile-path","duration":631024,"timestamp":117728111605,"id":168,"tags":{"trigger":"/members/[id]"},"startTime":1763887306870,"traceId":"e9a6c25356b91814"}] [{"name":"handle-request","duration":1171456,"timestamp":117728109848,"id":166,"tags":{"url":"/members/cmib8zhse000jhhxlt3ppgfn2?_rsc=1vf4i"},"startTime":1763887306868,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117729281425,"id":169,"parentId":166,"tags":{"url":"/members/cmib8zhse000jhhxlt3ppgfn2?_rsc=1vf4i","memory.rss":"1402216448","memory.heapUsed":"173920064","memory.heapTotal":"178036736"},"startTime":1763887308039,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1691,"timestamp":117729352530,"id":171,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887308111,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23191,"timestamp":117729351969,"id":170,"tags":{"url":"/api/trees"},"startTime":1763887308110,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":117729375290,"id":172,"parentId":170,"tags":{"url":"/api/trees","memory.rss":"1403174912","memory.heapUsed":"175078072","memory.heapTotal":"179085312"},"startTime":1763887308133,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":195,"timestamp":117729406144,"id":173,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887308164,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":143,"timestamp":117729406368,"id":174,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887308164,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":165,"timestamp":117729407286,"id":175,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887308165,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":139,"timestamp":117729407474,"id":176,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887308166,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":704,"timestamp":117729408558,"id":178,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887308167,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":28085,"timestamp":117729408084,"id":177,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887308166,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117729436271,"id":179,"parentId":177,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1404608512","memory.heapUsed":"176992840","memory.heapTotal":"181444608"},"startTime":1763887308194,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1144,"timestamp":117729643889,"id":181,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887308402,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13659,"timestamp":117729643319,"id":180,"tags":{"url":"/api/trees"},"startTime":1763887308401,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117729657017,"id":182,"parentId":180,"tags":{"url":"/api/trees","memory.rss":"1406427136","memory.heapUsed":"176884880","memory.heapTotal":"182726656"},"startTime":1763887308415,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":452,"timestamp":117729658561,"id":184,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887308417,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15420,"timestamp":117729658248,"id":183,"tags":{"url":"/api/trees"},"startTime":1763887308416,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":117729673726,"id":185,"parentId":183,"tags":{"url":"/api/trees","memory.rss":"1406681088","memory.heapUsed":"178178976","memory.heapTotal":"182726656"},"startTime":1763887308432,"traceId":"e9a6c25356b91814"},{"name":"compile-path","duration":370797,"timestamp":117730950728,"id":188,"tags":{"trigger":"/members/new"},"startTime":1763887309709,"traceId":"e9a6c25356b91814"}] [{"name":"handle-request","duration":444707,"timestamp":117730950233,"id":186,"tags":{"url":"/members/new?spouseId=cmib8zhse000jhhxlt3ppgfn2&generation=3&gender=FEMALE&_rsc=p1q4o"},"startTime":1763887309708,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117731394987,"id":189,"parentId":186,"tags":{"url":"/members/new?spouseId=cmib8zhse000jhhxlt3ppgfn2&generation=3&gender=FEMALE&_rsc=p1q4o","memory.rss":"1417105408","memory.heapUsed":"184541544","memory.heapTotal":"194256896"},"startTime":1763887310153,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":599,"timestamp":117731439387,"id":191,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887310197,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20389,"timestamp":117731438830,"id":190,"tags":{"url":"/api/trees"},"startTime":1763887310197,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":117731459267,"id":192,"parentId":190,"tags":{"url":"/api/trees","memory.rss":"1417945088","memory.heapUsed":"182114280","memory.heapTotal":"194781184"},"startTime":1763887310217,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":328,"timestamp":117731463432,"id":193,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887310221,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":260,"timestamp":117731463807,"id":194,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887310222,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":585,"timestamp":117731466422,"id":195,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887310224,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":301,"timestamp":117731467058,"id":196,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887310225,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1013,"timestamp":117731469455,"id":198,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887310227,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25773,"timestamp":117731468590,"id":197,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887310227,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":25,"timestamp":117731494453,"id":199,"parentId":197,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1418072064","memory.heapUsed":"184539280","memory.heapTotal":"194781184"},"startTime":1763887310252,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":668,"timestamp":117731749269,"id":201,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887310507,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12484,"timestamp":117731748603,"id":200,"tags":{"url":"/api/trees"},"startTime":1763887310507,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117731761155,"id":202,"parentId":200,"tags":{"url":"/api/trees","memory.rss":"1419780096","memory.heapUsed":"183996912","memory.heapTotal":"203169792"},"startTime":1763887310519,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":598,"timestamp":117731762678,"id":204,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887310521,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11011,"timestamp":117731762356,"id":203,"tags":{"url":"/api/trees"},"startTime":1763887310520,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117731773413,"id":205,"parentId":203,"tags":{"url":"/api/trees","memory.rss":"1420603392","memory.heapUsed":"185081440","memory.heapTotal":"203169792"},"startTime":1763887310531,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":227,"timestamp":117753181299,"id":206,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887331939,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":157,"timestamp":117753181558,"id":207,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887331939,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":164,"timestamp":117753182100,"id":208,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887331939,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":146,"timestamp":117753182286,"id":209,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887331940,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":881,"timestamp":117753184176,"id":211,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887331941,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":32271,"timestamp":117753183180,"id":210,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887331940,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":117753215481,"id":212,"parentId":210,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1410322432","memory.heapUsed":"178634032","memory.heapTotal":"183275520"},"startTime":1763887331973,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":828,"timestamp":117753322479,"id":214,"parentId":3,"tags":{"inputPage":"/members/page"},"startTime":1763887332080,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21992,"timestamp":117753322148,"id":213,"tags":{"url":"/members?_rsc=1f7vx"},"startTime":1763887332079,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117753344174,"id":215,"parentId":213,"tags":{"url":"/members?_rsc=1f7vx","memory.rss":"1411297280","memory.heapUsed":"179584600","memory.heapTotal":"184061952"},"startTime":1763887332101,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":471,"timestamp":117753750817,"id":217,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887332508,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11774,"timestamp":117753750527,"id":216,"tags":{"url":"/api/trees"},"startTime":1763887332508,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117753762339,"id":218,"parentId":216,"tags":{"url":"/api/trees","memory.rss":"1411538944","memory.heapUsed":"180657120","memory.heapTotal":"184324096"},"startTime":1763887332520,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":441,"timestamp":117753764407,"id":220,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887332522,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11938,"timestamp":117753764119,"id":219,"tags":{"url":"/api/trees"},"startTime":1763887332521,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117753776092,"id":221,"parentId":219,"tags":{"url":"/api/trees","memory.rss":"1411694592","memory.heapUsed":"180664232","memory.heapTotal":"183537664"},"startTime":1763887332533,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":573,"timestamp":117753777359,"id":223,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887332535,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10818,"timestamp":117753777019,"id":222,"tags":{"url":"/api/trees"},"startTime":1763887332534,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117753787873,"id":224,"parentId":222,"tags":{"url":"/api/trees","memory.rss":"1411764224","memory.heapUsed":"181223408","memory.heapTotal":"183799808"},"startTime":1763887332545,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":190,"timestamp":117754023754,"id":225,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887332781,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":148,"timestamp":117754023972,"id":226,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887332781,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":413,"timestamp":117754025709,"id":227,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887332783,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":218,"timestamp":117754026210,"id":228,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887332783,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":654,"timestamp":117754028554,"id":230,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887332786,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":19185,"timestamp":117754028135,"id":229,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887332785,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117754047362,"id":231,"parentId":229,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1412620288","memory.heapUsed":"182387480","memory.heapTotal":"184848384"},"startTime":1763887332805,"traceId":"e9a6c25356b91814"},{"name":"compile-path","duration":1590775,"timestamp":117774437592,"id":234,"tags":{"trigger":"/tree"},"startTime":1763887353194,"traceId":"e9a6c25356b91814"}] +[{"name":"handle-request","duration":1644395,"timestamp":117774437130,"id":232,"tags":{"url":"/tree?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1vf4i"},"startTime":1763887353194,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":117776081571,"id":235,"parentId":232,"tags":{"url":"/tree?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1vf4i","memory.rss":"1763127296","memory.heapUsed":"189749296","memory.heapTotal":"193462272"},"startTime":1763887354838,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":465,"timestamp":117777020698,"id":237,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887355777,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12696,"timestamp":117777020343,"id":236,"tags":{"url":"/api/trees"},"startTime":1763887355777,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117777033071,"id":238,"parentId":236,"tags":{"url":"/api/trees","memory.rss":"1764802560","memory.heapUsed":"191564552","memory.heapTotal":"196608000"},"startTime":1763887355789,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1153,"timestamp":117777034474,"id":240,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887355791,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13642,"timestamp":117777034145,"id":239,"tags":{"url":"/api/trees"},"startTime":1763887355791,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117777047828,"id":241,"parentId":239,"tags":{"url":"/api/trees","memory.rss":"1765777408","memory.heapUsed":"191833136","memory.heapTotal":"197332992"},"startTime":1763887355804,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":948,"timestamp":117790772513,"id":243,"parentId":3,"tags":{"inputPage":"/tree/page"},"startTime":1763887369528,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17358,"timestamp":117790772080,"id":242,"tags":{"url":"/tree?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1woqb"},"startTime":1763887369528,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117790789470,"id":244,"parentId":242,"tags":{"url":"/tree?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1woqb","memory.rss":"1767034880","memory.heapUsed":"189398440","memory.heapTotal":"194711552"},"startTime":1763887369545,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1048,"timestamp":117792815244,"id":246,"parentId":3,"tags":{"inputPage":"/members/page"},"startTime":1763887371571,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18087,"timestamp":117792813753,"id":245,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1woqb"},"startTime":1763887371570,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":117792831875,"id":247,"parentId":245,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1woqb","memory.rss":"1767161856","memory.heapUsed":"190316904","memory.heapTotal":"194711552"},"startTime":1763887371588,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":680,"timestamp":117793135743,"id":249,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887371892,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12419,"timestamp":117793135363,"id":248,"tags":{"url":"/api/trees"},"startTime":1763887371891,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":117793147818,"id":250,"parentId":248,"tags":{"url":"/api/trees","memory.rss":"1767161856","memory.heapUsed":"190685200","memory.heapTotal":"195760128"},"startTime":1763887371904,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":445,"timestamp":117793149087,"id":252,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887371905,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11693,"timestamp":117793148796,"id":251,"tags":{"url":"/api/trees"},"startTime":1763887371905,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":117793160530,"id":253,"parentId":251,"tags":{"url":"/api/trees","memory.rss":"1767161856","memory.heapUsed":"191209488","memory.heapTotal":"194973696"},"startTime":1763887371916,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":88000,"timestamp":117950817916,"id":254,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887529914,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":831,"timestamp":118028641265,"id":256,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887607389,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":58832,"timestamp":118028640589,"id":255,"tags":{"url":"/api/trees"},"startTime":1763887607388,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118028699467,"id":257,"parentId":255,"tags":{"url":"/api/trees","memory.rss":"1768955904","memory.heapUsed":"192583360","memory.heapTotal":"196804608"},"startTime":1763887607447,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":762,"timestamp":118028768705,"id":258,"parentId":3,"tags":{"inputPage":"/members/cmib8zhso000thhxl6jztirc0"},"startTime":1763887607517,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":577,"timestamp":118028769596,"id":259,"parentId":3,"tags":{"inputPage":"/members/cmib8zhso000thhxl6jztirc0"},"startTime":1763887607517,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":539,"timestamp":118028771632,"id":260,"parentId":3,"tags":{"inputPage":"/members/cmib8zhso000thhxl6jztirc0"},"startTime":1763887607519,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":382,"timestamp":118028772270,"id":261,"parentId":3,"tags":{"inputPage":"/members/cmib8zhso000thhxl6jztirc0"},"startTime":1763887607520,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2381,"timestamp":118028776675,"id":263,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763887607524,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":55463,"timestamp":118028775741,"id":262,"tags":{"url":"/members/cmib8zhso000thhxl6jztirc0?_rsc=1vf4i"},"startTime":1763887607524,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":41,"timestamp":118028831271,"id":264,"parentId":262,"tags":{"url":"/members/cmib8zhso000thhxl6jztirc0?_rsc=1vf4i","memory.rss":"1769222144","memory.heapUsed":"193548656","memory.heapTotal":"196775936"},"startTime":1763887607579,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":983,"timestamp":118028914674,"id":266,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887607662,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13832,"timestamp":118028914041,"id":265,"tags":{"url":"/api/trees"},"startTime":1763887607662,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":27,"timestamp":118028927960,"id":267,"parentId":265,"tags":{"url":"/api/trees","memory.rss":"1769226240","memory.heapUsed":"193933304","memory.heapTotal":"196775936"},"startTime":1763887607676,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":476,"timestamp":118028929548,"id":269,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887607677,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12008,"timestamp":118028929257,"id":268,"tags":{"url":"/api/trees"},"startTime":1763887607677,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118028941312,"id":270,"parentId":268,"tags":{"url":"/api/trees","memory.rss":"1769226240","memory.heapUsed":"194388208","memory.heapTotal":"197038080"},"startTime":1763887607689,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":650,"timestamp":118028942804,"id":272,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887607691,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12962,"timestamp":118028942502,"id":271,"tags":{"url":"/api/trees"},"startTime":1763887607690,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118028955535,"id":273,"parentId":271,"tags":{"url":"/api/trees","memory.rss":"1769357312","memory.heapUsed":"194802736","memory.heapTotal":"198610944"},"startTime":1763887607703,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":197,"timestamp":118029010344,"id":274,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887607758,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":244,"timestamp":118029010570,"id":275,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887607758,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":238,"timestamp":118029012026,"id":276,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887607760,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":189,"timestamp":118029012305,"id":277,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887607760,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":857,"timestamp":118029015778,"id":279,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887607764,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":29498,"timestamp":118029014930,"id":278,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887607763,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":118029044495,"id":280,"parentId":278,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1770270720","memory.heapUsed":"195970544","memory.heapTotal":"198348800"},"startTime":1763887607792,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":687,"timestamp":118041696529,"id":282,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887620444,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13299,"timestamp":118041696126,"id":281,"tags":{"url":"/api/trees"},"startTime":1763887620443,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118041709466,"id":283,"parentId":281,"tags":{"url":"/api/trees","memory.rss":"1771974656","memory.heapUsed":"196753600","memory.heapTotal":"201756672"},"startTime":1763887620457,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":586,"timestamp":118041711420,"id":285,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887620459,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14066,"timestamp":118041710938,"id":284,"tags":{"url":"/api/trees"},"startTime":1763887620458,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118041725071,"id":286,"parentId":284,"tags":{"url":"/api/trees","memory.rss":"1772912640","memory.heapUsed":"196617064","memory.heapTotal":"199397376"},"startTime":1763887620472,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1191,"timestamp":118045786453,"id":287,"parentId":3,"tags":{"inputPage":"/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887624534,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":165,"timestamp":118045787673,"id":288,"parentId":3,"tags":{"inputPage":"/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887624535,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":156,"timestamp":118045788241,"id":289,"parentId":3,"tags":{"inputPage":"/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887624535,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":131,"timestamp":118045788416,"id":290,"parentId":3,"tags":{"inputPage":"/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887624536,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1192,"timestamp":118045789561,"id":292,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763887624537,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":26153,"timestamp":118045789157,"id":291,"tags":{"url":"/members/cmibe02rs000r13eiug7grp9w?_rsc=1vf4i"},"startTime":1763887624536,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118045815345,"id":293,"parentId":291,"tags":{"url":"/members/cmibe02rs000r13eiug7grp9w?_rsc=1vf4i","memory.rss":"1774166016","memory.heapUsed":"198051656","memory.heapTotal":"201170944"},"startTime":1763887624563,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":790,"timestamp":118045885044,"id":295,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887624632,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12785,"timestamp":118045884650,"id":294,"tags":{"url":"/api/trees"},"startTime":1763887624632,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118045897478,"id":296,"parentId":294,"tags":{"url":"/api/trees","memory.rss":"1774366720","memory.heapUsed":"198537488","memory.heapTotal":"201695232"},"startTime":1763887624645,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":444,"timestamp":118045898686,"id":298,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887624646,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":9702,"timestamp":118045898410,"id":297,"tags":{"url":"/api/trees"},"startTime":1763887624646,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118045908149,"id":299,"parentId":297,"tags":{"url":"/api/trees","memory.rss":"1774379008","memory.heapUsed":"199075896","memory.heapTotal":"203005952"},"startTime":1763887624655,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":405,"timestamp":118045909448,"id":301,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887624657,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10355,"timestamp":118045909171,"id":300,"tags":{"url":"/api/trees"},"startTime":1763887624656,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118045919567,"id":302,"parentId":300,"tags":{"url":"/api/trees","memory.rss":"1774395392","memory.heapUsed":"199515056","memory.heapTotal":"202219520"},"startTime":1763887624667,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":181,"timestamp":118045949189,"id":303,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887624696,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":116,"timestamp":118045949394,"id":304,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887624697,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":167,"timestamp":118045949967,"id":305,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887624697,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":118,"timestamp":118045950154,"id":306,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887624697,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":758,"timestamp":118045951774,"id":308,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887624699,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17515,"timestamp":118045951443,"id":307,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887624699,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118045968996,"id":309,"parentId":307,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1774899200","memory.heapUsed":"200577792","memory.heapTotal":"204054528"},"startTime":1763887624716,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":178,"timestamp":118053755980,"id":310,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887632503,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":135,"timestamp":118053756182,"id":311,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887632503,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":167,"timestamp":118053756741,"id":312,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887632504,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":128,"timestamp":118053756927,"id":313,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887632504,"traceId":"e9a6c25356b91814"},{"name":"compile-path","duration":100070,"timestamp":118053758693,"id":316,"tags":{"trigger":"/api/trees/[treeId]/members/[memberId]"},"startTime":1763887632506,"traceId":"e9a6c25356b91814"}] +[{"name":"handle-request","duration":811576,"timestamp":118053758232,"id":314,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members/cmibe02rs000r13eiug7grp9w"},"startTime":1763887632505,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118054569845,"id":317,"parentId":314,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members/cmibe02rs000r13eiug7grp9w","memory.rss":"1779941376","memory.heapUsed":"204864568","memory.heapTotal":"207282176"},"startTime":1763887633317,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":931,"timestamp":118057834365,"id":319,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887636581,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13785,"timestamp":118057834029,"id":318,"tags":{"url":"/api/trees"},"startTime":1763887636581,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118057847876,"id":320,"parentId":318,"tags":{"url":"/api/trees","memory.rss":"1780510720","memory.heapUsed":"205407872","memory.heapTotal":"208855040"},"startTime":1763887636595,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":460,"timestamp":118057849752,"id":322,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887636597,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14259,"timestamp":118057849441,"id":321,"tags":{"url":"/api/trees"},"startTime":1763887636596,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":11,"timestamp":118057863767,"id":323,"parentId":321,"tags":{"url":"/api/trees","memory.rss":"1781170176","memory.heapUsed":"205351120","memory.heapTotal":"208330752"},"startTime":1763887636611,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":233,"timestamp":118089079252,"id":324,"parentId":3,"tags":{"inputPage":"/members/cmib8zhs1000bhhxlovwol0op"},"startTime":1763887667825,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":144,"timestamp":118089079511,"id":325,"parentId":3,"tags":{"inputPage":"/members/cmib8zhs1000bhhxlovwol0op"},"startTime":1763887667825,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":210,"timestamp":118089080057,"id":326,"parentId":3,"tags":{"inputPage":"/members/cmib8zhs1000bhhxlovwol0op"},"startTime":1763887667826,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":154,"timestamp":118089080289,"id":327,"parentId":3,"tags":{"inputPage":"/members/cmib8zhs1000bhhxlovwol0op"},"startTime":1763887667826,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1000,"timestamp":118089082059,"id":329,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763887667828,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23740,"timestamp":118089081587,"id":328,"tags":{"url":"/members/cmib8zhs1000bhhxlovwol0op?_rsc=1vf4i"},"startTime":1763887667827,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":41,"timestamp":118089105362,"id":330,"parentId":328,"tags":{"url":"/members/cmib8zhs1000bhhxlovwol0op?_rsc=1vf4i","memory.rss":"1782169600","memory.heapUsed":"206327488","memory.heapTotal":"210690048"},"startTime":1763887667851,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":672,"timestamp":118089179430,"id":332,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887667925,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11841,"timestamp":118089179040,"id":331,"tags":{"url":"/api/trees"},"startTime":1763887667925,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118089190919,"id":333,"parentId":331,"tags":{"url":"/api/trees","memory.rss":"1782513664","memory.heapUsed":"206850200","memory.heapTotal":"209903616"},"startTime":1763887667937,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":399,"timestamp":118089192134,"id":335,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887667938,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10899,"timestamp":118089191859,"id":334,"tags":{"url":"/api/trees"},"startTime":1763887667938,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118089202802,"id":336,"parentId":334,"tags":{"url":"/api/trees","memory.rss":"1782951936","memory.heapUsed":"207404712","memory.heapTotal":"210427904"},"startTime":1763887667949,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":508,"timestamp":118089204402,"id":338,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887667950,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12960,"timestamp":118089204025,"id":337,"tags":{"url":"/api/trees"},"startTime":1763887667950,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118089217050,"id":339,"parentId":337,"tags":{"url":"/api/trees","memory.rss":"1783451648","memory.heapUsed":"207865544","memory.heapTotal":"210690048"},"startTime":1763887667963,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":191,"timestamp":118089276221,"id":340,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887668022,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":135,"timestamp":118089276440,"id":341,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887668022,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":160,"timestamp":118089277040,"id":342,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887668023,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":151,"timestamp":118089277221,"id":343,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887668023,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":880,"timestamp":118089278448,"id":345,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887668024,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":33572,"timestamp":118089278006,"id":344,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887668024,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118089311633,"id":346,"parentId":344,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1781964800","memory.heapUsed":"198465056","memory.heapTotal":"208846848"},"startTime":1763887668057,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":720,"timestamp":118099567606,"id":348,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887678313,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16205,"timestamp":118099567081,"id":347,"tags":{"url":"/api/trees"},"startTime":1763887678312,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118099583321,"id":349,"parentId":347,"tags":{"url":"/api/trees","memory.rss":"1766760448","memory.heapUsed":"190429792","memory.heapTotal":"195567616"},"startTime":1763887678329,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":425,"timestamp":118099584589,"id":351,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887678330,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12078,"timestamp":118099584281,"id":350,"tags":{"url":"/api/trees"},"startTime":1763887678330,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118099596424,"id":352,"parentId":350,"tags":{"url":"/api/trees","memory.rss":"1767358464","memory.heapUsed":"191041768","memory.heapTotal":"194781184"},"startTime":1763887678342,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":246,"timestamp":118101638439,"id":353,"parentId":3,"tags":{"inputPage":"/members/cmib8zhs5000dhhxlo39he5la"},"startTime":1763887680384,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":156,"timestamp":118101638718,"id":354,"parentId":3,"tags":{"inputPage":"/members/cmib8zhs5000dhhxlo39he5la"},"startTime":1763887680384,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":168,"timestamp":118101640352,"id":355,"parentId":3,"tags":{"inputPage":"/members/cmib8zhs5000dhhxlo39he5la"},"startTime":1763887680386,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":144,"timestamp":118101640543,"id":356,"parentId":3,"tags":{"inputPage":"/members/cmib8zhs5000dhhxlo39he5la"},"startTime":1763887680386,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":970,"timestamp":118101641680,"id":358,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763887680387,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25955,"timestamp":118101641162,"id":357,"tags":{"url":"/members/cmib8zhs5000dhhxlo39he5la?_rsc=1vf4i"},"startTime":1763887680386,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118101667151,"id":359,"parentId":357,"tags":{"url":"/members/cmib8zhs5000dhhxlo39he5la?_rsc=1vf4i","memory.rss":"1768648704","memory.heapUsed":"192164848","memory.heapTotal":"195567616"},"startTime":1763887680412,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":647,"timestamp":118101737866,"id":361,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887680483,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13169,"timestamp":118101737498,"id":360,"tags":{"url":"/api/trees"},"startTime":1763887680483,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118101750707,"id":362,"parentId":360,"tags":{"url":"/api/trees","memory.rss":"1768718336","memory.heapUsed":"192664552","memory.heapTotal":"196878336"},"startTime":1763887680496,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":426,"timestamp":118101752012,"id":364,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887680497,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10925,"timestamp":118101751734,"id":363,"tags":{"url":"/api/trees"},"startTime":1763887680497,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118101762717,"id":365,"parentId":363,"tags":{"url":"/api/trees","memory.rss":"1769005056","memory.heapUsed":"193147864","memory.heapTotal":"197140480"},"startTime":1763887680508,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":473,"timestamp":118101764390,"id":367,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887680510,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11255,"timestamp":118101764067,"id":366,"tags":{"url":"/api/trees"},"startTime":1763887680509,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118101775371,"id":368,"parentId":366,"tags":{"url":"/api/trees","memory.rss":"1769291776","memory.heapUsed":"193569656","memory.heapTotal":"199499776"},"startTime":1763887680521,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":172,"timestamp":118101809104,"id":369,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887680554,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":120,"timestamp":118101809300,"id":370,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887680555,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":131,"timestamp":118101809764,"id":371,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887680555,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":110,"timestamp":118101809911,"id":372,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887680555,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":643,"timestamp":118101810748,"id":374,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763887680556,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20664,"timestamp":118101810412,"id":373,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763887680556,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":11,"timestamp":118101831149,"id":375,"parentId":373,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1770622976","memory.heapUsed":"194780488","memory.heapTotal":"200519680"},"startTime":1763887680576,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1136,"timestamp":118107164313,"id":377,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887685909,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15152,"timestamp":118107163729,"id":376,"tags":{"url":"/api/trees"},"startTime":1763887685909,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118107178925,"id":378,"parentId":376,"tags":{"url":"/api/trees","memory.rss":"1771954176","memory.heapUsed":"195140240","memory.heapTotal":"197898240"},"startTime":1763887685924,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":660,"timestamp":118107180323,"id":380,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887685925,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12657,"timestamp":118107179984,"id":379,"tags":{"url":"/api/trees"},"startTime":1763887685925,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118107192683,"id":381,"parentId":379,"tags":{"url":"/api/trees","memory.rss":"1772490752","memory.heapUsed":"195647568","memory.heapTotal":"199208960"},"startTime":1763887685938,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1191,"timestamp":118154626421,"id":383,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887733370,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23453,"timestamp":118154625667,"id":382,"tags":{"url":"/api/trees"},"startTime":1763887733369,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":11,"timestamp":118154649540,"id":384,"parentId":382,"tags":{"url":"/api/trees","memory.rss":"1772490752","memory.heapUsed":"195885824","memory.heapTotal":"198684672"},"startTime":1763887733393,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":401000,"timestamp":118154786160,"id":385,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887733945,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":608,"timestamp":118156719466,"id":387,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763887735463,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16566,"timestamp":118156719102,"id":386,"tags":{"url":"/api/trees"},"startTime":1763887735463,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118156735717,"id":388,"parentId":386,"tags":{"url":"/api/trees","memory.rss":"1775620096","memory.heapUsed":"197049680","memory.heapTotal":"199729152"},"startTime":1763887735479,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":98000,"timestamp":118219044354,"id":389,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887797971,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":159000,"timestamp":118257466581,"id":390,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887836437,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":77000,"timestamp":118282438157,"id":391,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887861324,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":63000,"timestamp":118366480189,"id":392,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887945360,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":67000,"timestamp":118400560470,"id":393,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763887979433,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":208000,"timestamp":118424254936,"id":394,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx [app-client]"],"page":"/members","isPageHidden":false},"startTime":1763888003301,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":780,"timestamp":118450580456,"id":396,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888029314,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":70820,"timestamp":118450579652,"id":395,"tags":{"url":"/api/trees"},"startTime":1763888029313,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118450650533,"id":397,"parentId":395,"tags":{"url":"/api/trees","memory.rss":"1781653504","memory.heapUsed":"200760984","memory.heapTotal":"204361728"},"startTime":1763888029384,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":278,"timestamp":118453472782,"id":398,"parentId":3,"tags":{"inputPage":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888032206,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":168,"timestamp":118453473094,"id":399,"parentId":3,"tags":{"inputPage":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888032206,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":162,"timestamp":118453473771,"id":400,"parentId":3,"tags":{"inputPage":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888032207,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":139,"timestamp":118453473956,"id":401,"parentId":3,"tags":{"inputPage":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888032207,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1298,"timestamp":118453476465,"id":403,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888032210,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23219,"timestamp":118453476062,"id":402,"tags":{"url":"/members/cmib8zhtm001jhhxlxi4lvq62?_rsc=1vf4i"},"startTime":1763888032209,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118453499314,"id":404,"parentId":402,"tags":{"url":"/members/cmib8zhtm001jhhxlxi4lvq62?_rsc=1vf4i","memory.rss":"1782767616","memory.heapUsed":"201472800","memory.heapTotal":"205410304"},"startTime":1763888032233,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":511,"timestamp":118453535886,"id":406,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888032269,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12901,"timestamp":118453535587,"id":405,"tags":{"url":"/api/trees"},"startTime":1763888032269,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118453548528,"id":407,"parentId":405,"tags":{"url":"/api/trees","memory.rss":"1783083008","memory.heapUsed":"201999792","memory.heapTotal":"204886016"},"startTime":1763888032282,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":468,"timestamp":118453550319,"id":409,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888032284,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14622,"timestamp":118453549852,"id":408,"tags":{"url":"/api/trees"},"startTime":1763888032283,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118453564532,"id":410,"parentId":408,"tags":{"url":"/api/trees","memory.rss":"1783496704","memory.heapUsed":"202527520","memory.heapTotal":"205148160"},"startTime":1763888032298,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":471,"timestamp":118453566316,"id":412,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888032300,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13374,"timestamp":118453565935,"id":411,"tags":{"url":"/api/trees"},"startTime":1763888032299,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118453579348,"id":413,"parentId":411,"tags":{"url":"/api/trees","memory.rss":"1783889920","memory.heapUsed":"202991872","memory.heapTotal":"205410304"},"startTime":1763888032313,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":157,"timestamp":118453612854,"id":414,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888032346,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":119,"timestamp":118453613034,"id":415,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888032346,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":159,"timestamp":118453613758,"id":416,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888032347,"traceId":"e9a6c25356b91814"}] +[{"name":"ensure-page","duration":149,"timestamp":118453614373,"id":417,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888032348,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":569,"timestamp":118453617013,"id":419,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888032350,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20225,"timestamp":118453616618,"id":418,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888032350,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118453636884,"id":420,"parentId":418,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1784586240","memory.heapUsed":"204165248","memory.heapTotal":"206458880"},"startTime":1763888032370,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":78000,"timestamp":118517320695,"id":421,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx [app-client]"],"page":"/members/cmib8zhtm001jhhxlxi4lvq62","isPageHidden":false},"startTime":1763888096182,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":63000,"timestamp":118535806029,"id":422,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx [app-client]"],"page":"/members/cmib8zhtm001jhhxlxi4lvq62","isPageHidden":false},"startTime":1763888114567,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":969,"timestamp":118547185527,"id":424,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888125858,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24038,"timestamp":118547184898,"id":423,"tags":{"url":"/api/trees"},"startTime":1763888125857,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":11,"timestamp":118547209012,"id":425,"parentId":423,"tags":{"url":"/api/trees","memory.rss":"1786769408","memory.heapUsed":"205427432","memory.heapTotal":"208138240"},"startTime":1763888125882,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1442,"timestamp":118548193011,"id":427,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888126866,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23813,"timestamp":118548192595,"id":426,"tags":{"url":"/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE&_rsc=1jrke"},"startTime":1763888126865,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118548216449,"id":428,"parentId":426,"tags":{"url":"/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE&_rsc=1jrke","memory.rss":"1787727872","memory.heapUsed":"206409416","memory.heapTotal":"208924672"},"startTime":1763888126889,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1497,"timestamp":118548279920,"id":430,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888126952,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14034,"timestamp":118548279586,"id":429,"tags":{"url":"/api/trees"},"startTime":1763888126952,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118548293665,"id":431,"parentId":429,"tags":{"url":"/api/trees","memory.rss":"1788051456","memory.heapUsed":"206824144","memory.heapTotal":"210235392"},"startTime":1763888126966,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":465,"timestamp":118548295816,"id":433,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888126968,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12306,"timestamp":118548295501,"id":432,"tags":{"url":"/api/trees"},"startTime":1763888126968,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118548307850,"id":434,"parentId":432,"tags":{"url":"/api/trees","memory.rss":"1788399616","memory.heapUsed":"207303816","memory.heapTotal":"209448960"},"startTime":1763888126980,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":407,"timestamp":118548309662,"id":436,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888126982,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11334,"timestamp":118548309372,"id":435,"tags":{"url":"/api/trees"},"startTime":1763888126982,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118548320754,"id":437,"parentId":435,"tags":{"url":"/api/trees","memory.rss":"1788776448","memory.heapUsed":"207789512","memory.heapTotal":"209973248"},"startTime":1763888126993,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":171,"timestamp":118548386199,"id":438,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888127059,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":131,"timestamp":118548386396,"id":439,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888127059,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":216,"timestamp":118548387498,"id":440,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888127060,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":133,"timestamp":118548387739,"id":441,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888127060,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":778,"timestamp":118548389340,"id":443,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888127062,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21775,"timestamp":118548388635,"id":442,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888127061,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118548410514,"id":444,"parentId":442,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1789722624","memory.heapUsed":"208185936","memory.heapTotal":"210759680"},"startTime":1763888127083,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":80000,"timestamp":118555883828,"id":445,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx [app-client]"],"page":"/members/new","isPageHidden":false},"startTime":1763888134698,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":631,"timestamp":118560226442,"id":447,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888138899,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12795,"timestamp":118560226018,"id":446,"tags":{"url":"/api/trees"},"startTime":1763888138898,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118560238859,"id":448,"parentId":446,"tags":{"url":"/api/trees","memory.rss":"1787871232","memory.heapUsed":"195753776","memory.heapTotal":"208846848"},"startTime":1763888138911,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":535,"timestamp":118560240230,"id":450,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888138912,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15827,"timestamp":118560239884,"id":449,"tags":{"url":"/api/trees"},"startTime":1763888138912,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118560255755,"id":451,"parentId":449,"tags":{"url":"/api/trees","memory.rss":"1787871232","memory.heapUsed":"196333096","memory.heapTotal":"208846848"},"startTime":1763888138928,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":688,"timestamp":118560257325,"id":453,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888138929,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":230,"timestamp":118560266408,"id":454,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888138939,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":146,"timestamp":118560266671,"id":455,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888138939,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":179,"timestamp":118560268946,"id":456,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888138941,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":145,"timestamp":118560269149,"id":457,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888138941,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17429,"timestamp":118560256785,"id":452,"tags":{"url":"/api/trees"},"startTime":1763888138929,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":24,"timestamp":118560274293,"id":460,"parentId":452,"tags":{"url":"/api/trees","memory.rss":"1787871232","memory.heapUsed":"197403936","memory.heapTotal":"208846848"},"startTime":1763888138946,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":4233,"timestamp":118560271652,"id":459,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888138944,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":113715,"timestamp":118560271053,"id":458,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888138943,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118560384811,"id":461,"parentId":458,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1787871232","memory.heapUsed":"198067408","memory.heapTotal":"208846848"},"startTime":1763888139057,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":9634,"timestamp":118567816416,"id":463,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888146488,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":155920,"timestamp":118567815979,"id":462,"tags":{"url":"/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE&_rsc=1jrke"},"startTime":1763888146488,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118567971952,"id":464,"parentId":462,"tags":{"url":"/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE&_rsc=1jrke","memory.rss":"1807712256","memory.heapUsed":"220550256","memory.heapTotal":"229404672"},"startTime":1763888146644,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":517,"timestamp":118568031734,"id":466,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888146704,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11177,"timestamp":118568031387,"id":465,"tags":{"url":"/api/trees"},"startTime":1763888146703,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118568042649,"id":467,"parentId":465,"tags":{"url":"/api/trees","memory.rss":"1804398592","memory.heapUsed":"209959440","memory.heapTotal":"235393024"},"startTime":1763888146715,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":402,"timestamp":118568043690,"id":469,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888146716,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10105,"timestamp":118568043410,"id":468,"tags":{"url":"/api/trees"},"startTime":1763888146715,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118568053706,"id":470,"parentId":468,"tags":{"url":"/api/trees","memory.rss":"1804402688","memory.heapUsed":"210990088","memory.heapTotal":"235393024"},"startTime":1763888146726,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":454,"timestamp":118568055135,"id":472,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888146727,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11699,"timestamp":118568054844,"id":471,"tags":{"url":"/api/trees"},"startTime":1763888146727,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":16,"timestamp":118568066632,"id":473,"parentId":471,"tags":{"url":"/api/trees","memory.rss":"1804550144","memory.heapUsed":"212136424","memory.heapTotal":"235393024"},"startTime":1763888146739,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":192,"timestamp":118568161788,"id":474,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888146834,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":123,"timestamp":118568162009,"id":475,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888146834,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":178,"timestamp":118568163242,"id":476,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888146835,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":341,"timestamp":118568163446,"id":477,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888146835,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":675,"timestamp":118568167554,"id":479,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888146839,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23209,"timestamp":118568167140,"id":478,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888146839,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118568190401,"id":480,"parentId":478,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1806336000","memory.heapUsed":"215763560","memory.heapTotal":"235393024"},"startTime":1763888146862,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":70000,"timestamp":118568158114,"id":481,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/new/page.tsx [app-client]"],"page":"/members/new","isPageHidden":false},"startTime":1763888146947,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":647,"timestamp":118571287143,"id":483,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888149959,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14523,"timestamp":118571286755,"id":482,"tags":{"url":"/api/trees"},"startTime":1763888149959,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118571301321,"id":484,"parentId":482,"tags":{"url":"/api/trees","memory.rss":"1807433728","memory.heapUsed":"211857808","memory.heapTotal":"235393024"},"startTime":1763888149973,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":608,"timestamp":118571302887,"id":486,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888149975,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15190,"timestamp":118571302357,"id":485,"tags":{"url":"/api/trees"},"startTime":1763888149974,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118571317599,"id":487,"parentId":485,"tags":{"url":"/api/trees","memory.rss":"1808531456","memory.heapUsed":"213214272","memory.heapTotal":"235626496"},"startTime":1763888149989,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":528,"timestamp":118571318905,"id":489,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888149991,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":300,"timestamp":118571329451,"id":490,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888150001,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":157,"timestamp":118571329785,"id":491,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888150002,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":243,"timestamp":118571332338,"id":492,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888150004,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":306,"timestamp":118571332616,"id":493,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888150004,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17302,"timestamp":118571318543,"id":488,"tags":{"url":"/api/trees"},"startTime":1763888149990,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118571335891,"id":494,"parentId":488,"tags":{"url":"/api/trees","memory.rss":"1809707008","memory.heapUsed":"214709448","memory.heapTotal":"235626496"},"startTime":1763888150008,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":562,"timestamp":118571336778,"id":496,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888150009,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23744,"timestamp":118571336360,"id":495,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888150008,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118571360161,"id":497,"parentId":495,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1811144704","memory.heapUsed":"216426344","memory.heapTotal":"235626496"},"startTime":1763888150032,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":283,"timestamp":118582311314,"id":498,"parentId":3,"tags":{"inputPage":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888160983,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":253,"timestamp":118582311728,"id":499,"parentId":3,"tags":{"inputPage":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888160983,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":174,"timestamp":118582312432,"id":500,"parentId":3,"tags":{"inputPage":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888160984,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":142,"timestamp":118582312629,"id":501,"parentId":3,"tags":{"inputPage":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888160984,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":10356,"timestamp":118582314327,"id":503,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888160986,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":394129,"timestamp":118582313685,"id":502,"tags":{"url":"/members/cmib8zhtm001jhhxlxi4lvq62"},"startTime":1763888160985,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118582707851,"id":504,"parentId":502,"tags":{"url":"/members/cmib8zhtm001jhhxlxi4lvq62","memory.rss":"1836015616","memory.heapUsed":"242478848","memory.heapTotal":"273514496"},"startTime":1763888161379,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":268,"timestamp":118582966087,"id":505,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888161637,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":227,"timestamp":118582966393,"id":506,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888161638,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":192,"timestamp":118582967131,"id":507,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888161639,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":166,"timestamp":118582967348,"id":508,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888161639,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":958,"timestamp":118582969194,"id":510,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888161641,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20925,"timestamp":118582968400,"id":509,"tags":{"url":"/api/auth/session"},"startTime":1763888161640,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118582989370,"id":511,"parentId":509,"tags":{"url":"/api/auth/session","memory.rss":"1842085888","memory.heapUsed":"248755408","memory.heapTotal":"274534400"},"startTime":1763888161661,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":718,"timestamp":118583046327,"id":513,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888161718,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13269,"timestamp":118583046004,"id":512,"tags":{"url":"/api/trees"},"startTime":1763888161717,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":12,"timestamp":118583059392,"id":514,"parentId":512,"tags":{"url":"/api/trees","memory.rss":"1843253248","memory.heapUsed":"249938896","memory.heapTotal":"274796544"},"startTime":1763888161731,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":593,"timestamp":118583061177,"id":516,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888161733,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14915,"timestamp":118583060830,"id":515,"tags":{"url":"/api/trees"},"startTime":1763888161732,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118583075793,"id":517,"parentId":515,"tags":{"url":"/api/trees","memory.rss":"1844318208","memory.heapUsed":"251020136","memory.heapTotal":"275058688"},"startTime":1763888161747,"traceId":"e9a6c25356b91814"}] +[{"name":"ensure-page","duration":224,"timestamp":118583079746,"id":518,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888161751,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":221,"timestamp":118583080003,"id":519,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888161751,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":262,"timestamp":118583080818,"id":520,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888161752,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":181,"timestamp":118583081111,"id":521,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888161752,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":623,"timestamp":118583082616,"id":523,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888161754,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":31268,"timestamp":118583082097,"id":522,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888161753,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118583113417,"id":524,"parentId":522,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1849573376","memory.heapUsed":"245480888","memory.heapTotal":"279252992"},"startTime":1763888161785,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":7391,"timestamp":118584236937,"id":526,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888162908,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":129237,"timestamp":118584236559,"id":525,"tags":{"url":"/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE&_rsc=1jrke"},"startTime":1763888162908,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118584365834,"id":527,"parentId":525,"tags":{"url":"/members/new?childId=cmib8zhtm001jhhxlxi4lvq62&generation=4&gender=FEMALE&_rsc=1jrke","memory.rss":"1877712896","memory.heapUsed":"276600064","memory.heapTotal":"300593152"},"startTime":1763888163037,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1674,"timestamp":118584391289,"id":529,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888163063,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15964,"timestamp":118584390693,"id":528,"tags":{"url":"/api/trees"},"startTime":1763888163062,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118584406695,"id":530,"parentId":528,"tags":{"url":"/api/trees","memory.rss":"1879535616","memory.heapUsed":"278298040","memory.heapTotal":"300855296"},"startTime":1763888163078,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":202,"timestamp":118584419011,"id":531,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888163090,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":191,"timestamp":118584419253,"id":532,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888163091,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":294,"timestamp":118584420690,"id":533,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888163092,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":225,"timestamp":118584421051,"id":534,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888163092,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1493,"timestamp":118584422906,"id":536,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888163094,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":36403,"timestamp":118584422332,"id":535,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888163094,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118584458776,"id":537,"parentId":535,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1876230144","memory.heapUsed":"258637848","memory.heapTotal":"301096960"},"startTime":1763888163130,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":589,"timestamp":118584693406,"id":539,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888163365,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11793,"timestamp":118584693059,"id":538,"tags":{"url":"/api/trees"},"startTime":1763888163364,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118584704887,"id":540,"parentId":538,"tags":{"url":"/api/trees","memory.rss":"1876254720","memory.heapUsed":"260317816","memory.heapTotal":"301096960"},"startTime":1763888163376,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":457,"timestamp":118584706535,"id":542,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888163378,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12524,"timestamp":118584706093,"id":541,"tags":{"url":"/api/trees"},"startTime":1763888163377,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118584718726,"id":543,"parentId":541,"tags":{"url":"/api/trees","memory.rss":"1876254720","memory.heapUsed":"261366216","memory.heapTotal":"301096960"},"startTime":1763888163390,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1388,"timestamp":118601860946,"id":545,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888180532,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17440,"timestamp":118601860400,"id":544,"tags":{"url":"/api/trees"},"startTime":1763888180531,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118601877878,"id":546,"parentId":544,"tags":{"url":"/api/trees","memory.rss":"1845686272","memory.heapUsed":"254158824","memory.heapTotal":"260583424"},"startTime":1763888180549,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":457,"timestamp":118601879068,"id":548,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888180550,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15276,"timestamp":118601878757,"id":547,"tags":{"url":"/api/trees"},"startTime":1763888180549,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118601894085,"id":549,"parentId":547,"tags":{"url":"/api/trees","memory.rss":"1846276096","memory.heapUsed":"254860456","memory.heapTotal":"259534848"},"startTime":1763888180565,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":596,"timestamp":118601895536,"id":551,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888180566,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":191,"timestamp":118601903597,"id":552,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888180574,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":137,"timestamp":118601903815,"id":553,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888180575,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":191,"timestamp":118601905894,"id":554,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888180577,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":136,"timestamp":118601906110,"id":555,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888180577,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2303,"timestamp":118601907257,"id":557,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888180578,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24393,"timestamp":118601895210,"id":550,"tags":{"url":"/api/trees"},"startTime":1763888180566,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118601919658,"id":558,"parentId":550,"tags":{"url":"/api/trees","memory.rss":"1846738944","memory.heapUsed":"256110416","memory.heapTotal":"259796992"},"startTime":1763888180590,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":26663,"timestamp":118601906774,"id":556,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members"},"startTime":1763888180578,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":118601933495,"id":559,"parentId":556,"tags":{"url":"/api/trees/cmib8zhrq0003hhxlvnsi96nh/members","memory.rss":"1846751232","memory.heapUsed":"256475800","memory.heapTotal":"260845568"},"startTime":1763888180604,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":558,"timestamp":118611788734,"id":561,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888190459,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17612,"timestamp":118611788375,"id":560,"tags":{"url":"/api/trees"},"startTime":1763888190459,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":38,"timestamp":118611806041,"id":562,"parentId":560,"tags":{"url":"/api/trees","memory.rss":"1846890496","memory.heapUsed":"256622688","memory.heapTotal":"260321280"},"startTime":1763888190476,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":6881,"timestamp":118612450240,"id":564,"parentId":3,"tags":{"inputPage":"/members/page"},"startTime":1763888191121,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":136966,"timestamp":118612449852,"id":563,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1jrke"},"startTime":1763888191120,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118612586886,"id":565,"parentId":563,"tags":{"url":"/members?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1jrke","memory.rss":"1873207296","memory.heapUsed":"282274952","memory.heapTotal":"290320384"},"startTime":1763888191257,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1177,"timestamp":118612902314,"id":567,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888191573,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14638,"timestamp":118612901908,"id":566,"tags":{"url":"/api/trees"},"startTime":1763888191572,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118612916580,"id":568,"parentId":566,"tags":{"url":"/api/trees","memory.rss":"1870258176","memory.heapUsed":"276049384","memory.heapTotal":"287293440"},"startTime":1763888191587,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":489,"timestamp":118612917824,"id":570,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888191588,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12449,"timestamp":118612917517,"id":569,"tags":{"url":"/api/trees"},"startTime":1763888191588,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118612930003,"id":571,"parentId":569,"tags":{"url":"/api/trees","memory.rss":"1870520320","memory.heapUsed":"277228360","memory.heapTotal":"287555584"},"startTime":1763888191600,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1219,"timestamp":118620085394,"id":573,"parentId":3,"tags":{"inputPage":"/tree/page"},"startTime":1763888198756,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":27299,"timestamp":118620084999,"id":572,"tags":{"url":"/tree?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1vf4i"},"startTime":1763888198755,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118620112378,"id":574,"parentId":572,"tags":{"url":"/tree?treeId=cmib8zhrq0003hhxlvnsi96nh&_rsc=1vf4i","memory.rss":"1871392768","memory.heapUsed":"276820376","memory.heapTotal":"281264128"},"startTime":1763888198782,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":726,"timestamp":118620770381,"id":576,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888199440,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11922,"timestamp":118620769896,"id":575,"tags":{"url":"/api/trees"},"startTime":1763888199440,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118620781857,"id":577,"parentId":575,"tags":{"url":"/api/trees","memory.rss":"1872277504","memory.heapUsed":"278396632","memory.heapTotal":"284643328"},"startTime":1763888199452,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":979,"timestamp":118620784526,"id":579,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888199455,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14935,"timestamp":118620784195,"id":578,"tags":{"url":"/api/trees"},"startTime":1763888199454,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118620799196,"id":580,"parentId":578,"tags":{"url":"/api/trees","memory.rss":"1872277504","memory.heapUsed":"278225744","memory.heapTotal":"284905472"},"startTime":1763888199469,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":177,"timestamp":118642420491,"id":581,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888221090,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":118,"timestamp":118642420692,"id":582,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888221090,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":124,"timestamp":118642421126,"id":583,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888221090,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":111,"timestamp":118642421265,"id":584,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888221091,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":535,"timestamp":118642422124,"id":586,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888221091,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10401,"timestamp":118642421791,"id":585,"tags":{"url":"/api/auth/csrf"},"startTime":1763888221091,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":118642432223,"id":587,"parentId":585,"tags":{"url":"/api/auth/csrf","memory.rss":"1872277504","memory.heapUsed":"278620480","memory.heapTotal":"282021888"},"startTime":1763888221102,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":196,"timestamp":118642440437,"id":588,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888221110,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":160,"timestamp":118642440656,"id":589,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888221110,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":147,"timestamp":118642441230,"id":590,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888221111,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":113,"timestamp":118642441393,"id":591,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888221111,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":497,"timestamp":118642442280,"id":593,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888221112,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12589,"timestamp":118642441909,"id":592,"tags":{"url":"/api/auth/signout"},"startTime":1763888221111,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118642454545,"id":594,"parentId":592,"tags":{"url":"/api/auth/signout","memory.rss":"1872277504","memory.heapUsed":"279314632","memory.heapTotal":"283594752"},"startTime":1763888221124,"traceId":"e9a6c25356b91814"},{"name":"compile-path","duration":397837,"timestamp":118642463029,"id":597,"tags":{"trigger":"/auth/signin"},"startTime":1763888221132,"traceId":"e9a6c25356b91814"}] +[{"name":"handle-request","duration":596594,"timestamp":118642462450,"id":595,"tags":{"url":"/auth/signin"},"startTime":1763888221132,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":12,"timestamp":118643059124,"id":598,"parentId":595,"tags":{"url":"/auth/signin","memory.rss":"1892155392","memory.heapUsed":"295649352","memory.heapTotal":"313802752"},"startTime":1763888221728,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":284,"timestamp":118643258101,"id":599,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888221927,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":265,"timestamp":118643258446,"id":600,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888221928,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":333,"timestamp":118643259652,"id":601,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888221929,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":171,"timestamp":118643260015,"id":602,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888221929,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":814,"timestamp":118643261607,"id":604,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888221931,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14318,"timestamp":118643260799,"id":603,"tags":{"url":"/api/auth/session"},"startTime":1763888221930,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118643275167,"id":605,"parentId":603,"tags":{"url":"/api/auth/session","memory.rss":"1893224448","memory.heapUsed":"293126424","memory.heapTotal":"314294272"},"startTime":1763888221944,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":204,"timestamp":118645710463,"id":606,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888224380,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":150,"timestamp":118645710692,"id":607,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888224380,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":153,"timestamp":118645711256,"id":608,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888224380,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":123,"timestamp":118645711429,"id":609,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888224381,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":600,"timestamp":118645712443,"id":611,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888224382,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12054,"timestamp":118645712012,"id":610,"tags":{"url":"/api/auth/csrf"},"startTime":1763888224381,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118645724108,"id":612,"parentId":610,"tags":{"url":"/api/auth/csrf","memory.rss":"1893531648","memory.heapUsed":"294965672","memory.heapTotal":"314556416"},"startTime":1763888224393,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":241,"timestamp":118645726864,"id":613,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888224396,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":135,"timestamp":118645727130,"id":614,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888224396,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":166,"timestamp":118645727773,"id":615,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888224397,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":122,"timestamp":118645727957,"id":616,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888224397,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":635,"timestamp":118645729023,"id":618,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888224398,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":9845,"timestamp":118645728574,"id":617,"tags":{"url":"/api/auth/signout"},"startTime":1763888224398,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118645738454,"id":619,"parentId":617,"tags":{"url":"/api/auth/signout","memory.rss":"1893613568","memory.heapUsed":"296120304","memory.heapTotal":"314556416"},"startTime":1763888224408,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":206,"timestamp":118645740588,"id":620,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888224410,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":148,"timestamp":118645740818,"id":621,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888224410,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":148,"timestamp":118645741350,"id":622,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888224411,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":138,"timestamp":118645741518,"id":623,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888224411,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":439,"timestamp":118645742422,"id":625,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888224412,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":7508,"timestamp":118645742077,"id":624,"tags":{"url":"/api/auth/session"},"startTime":1763888224411,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118645749617,"id":626,"parentId":624,"tags":{"url":"/api/auth/session","memory.rss":"1894449152","memory.heapUsed":"297207760","memory.heapTotal":"314556416"},"startTime":1763888224419,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":163,"timestamp":118646254758,"id":627,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1763888224924,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":118,"timestamp":118646254943,"id":628,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1763888224924,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":150,"timestamp":118646255486,"id":629,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1763888224925,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":131,"timestamp":118646255680,"id":630,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1763888224925,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":453,"timestamp":118646256567,"id":632,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888224926,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":7412,"timestamp":118646256257,"id":631,"tags":{"url":"/api/auth/providers"},"startTime":1763888224925,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118646263705,"id":633,"parentId":631,"tags":{"url":"/api/auth/providers","memory.rss":"1895608320","memory.heapUsed":"298543008","memory.heapTotal":"314789888"},"startTime":1763888224933,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":164,"timestamp":118646266125,"id":634,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888224935,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":125,"timestamp":118646266310,"id":635,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888224936,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":138,"timestamp":118646266743,"id":636,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888224936,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":118,"timestamp":118646266897,"id":637,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888224936,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":436,"timestamp":118646267692,"id":639,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888224937,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":7094,"timestamp":118646267386,"id":638,"tags":{"url":"/api/auth/csrf"},"startTime":1763888224937,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":118646274510,"id":640,"parentId":638,"tags":{"url":"/api/auth/csrf","memory.rss":"1896570880","memory.heapUsed":"299645408","memory.heapTotal":"314789888"},"startTime":1763888224944,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":186,"timestamp":118646276893,"id":641,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1763888224946,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":147,"timestamp":118646277104,"id":642,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1763888224946,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":260,"timestamp":118646277596,"id":643,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1763888224947,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":150,"timestamp":118646277880,"id":644,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1763888224947,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":453,"timestamp":118646278847,"id":646,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888224948,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":95438,"timestamp":118646278493,"id":645,"tags":{"url":"/api/auth/callback/credentials"},"startTime":1763888224948,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":118646373968,"id":647,"parentId":645,"tags":{"url":"/api/auth/callback/credentials","memory.rss":"1897639936","memory.heapUsed":"296326104","memory.heapTotal":"315314176"},"startTime":1763888225043,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":150,"timestamp":118646376096,"id":648,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888225045,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":115,"timestamp":118646376266,"id":649,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888225045,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":122,"timestamp":118646376691,"id":650,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888225046,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":118,"timestamp":118646376827,"id":651,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888225046,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":523,"timestamp":118646377612,"id":653,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888225047,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":8237,"timestamp":118646377307,"id":652,"tags":{"url":"/api/auth/session"},"startTime":1763888225047,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":2,"timestamp":118646385579,"id":654,"parentId":652,"tags":{"url":"/api/auth/session","memory.rss":"1897865216","memory.heapUsed":"297553104","memory.heapTotal":"315576320"},"startTime":1763888225055,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":821,"timestamp":118646391633,"id":656,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888225061,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":8720,"timestamp":118646392065,"id":658,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1763888225061,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":88316,"timestamp":118646391345,"id":655,"tags":{"url":"/api/trees"},"startTime":1763888225061,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118646479695,"id":659,"parentId":655,"tags":{"url":"/api/trees","memory.rss":"1902440448","memory.heapUsed":"302066656","memory.heapTotal":"317411328"},"startTime":1763888225149,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":96973,"timestamp":118646391822,"id":657,"tags":{"url":"/"},"startTime":1763888225061,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118646488838,"id":660,"parentId":657,"tags":{"url":"/","memory.rss":"1902919680","memory.heapUsed":"303522600","memory.heapTotal":"317874176"},"startTime":1763888225158,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1003,"timestamp":118646670101,"id":661,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888225339,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":320,"timestamp":118646671162,"id":662,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888225340,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1567,"timestamp":118646677926,"id":663,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888225347,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":522,"timestamp":118646679598,"id":664,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888225349,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2393,"timestamp":118646683914,"id":666,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888225353,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25297,"timestamp":118646683274,"id":665,"tags":{"url":"/api/auth/session"},"startTime":1763888225352,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118646708638,"id":667,"parentId":665,"tags":{"url":"/api/auth/session","memory.rss":"1906061312","memory.heapUsed":"301678328","memory.heapTotal":"337534976"},"startTime":1763888225378,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1645,"timestamp":118646723863,"id":669,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888225393,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":26677,"timestamp":118646723241,"id":668,"tags":{"url":"/api/trees"},"startTime":1763888225392,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":18,"timestamp":118646750126,"id":670,"parentId":668,"tags":{"url":"/api/trees","memory.rss":"1906499584","memory.heapUsed":"303563232","memory.heapTotal":"337797120"},"startTime":1763888225419,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":562,"timestamp":118646767561,"id":671,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888225437,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":336,"timestamp":118646768226,"id":672,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888225437,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":180,"timestamp":118646771041,"id":673,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888225440,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":169,"timestamp":118646771244,"id":674,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888225440,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1104,"timestamp":118646773629,"id":676,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888225443,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":29413,"timestamp":118646773159,"id":675,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888225442,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118646802623,"id":677,"parentId":675,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1906860032","memory.heapUsed":"306409472","memory.heapTotal":"337797120"},"startTime":1763888225472,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":455,"timestamp":118646930455,"id":679,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888225600,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":343,"timestamp":118646938313,"id":680,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs"},"startTime":1763888225608,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":186,"timestamp":118646938682,"id":681,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs"},"startTime":1763888225608,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":154,"timestamp":118646939673,"id":682,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs"},"startTime":1763888225609,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":192,"timestamp":118646939845,"id":683,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs"},"startTime":1763888225609,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11512,"timestamp":118646930170,"id":678,"tags":{"url":"/api/trees"},"startTime":1763888225599,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118646941720,"id":684,"parentId":678,"tags":{"url":"/api/trees","memory.rss":"1908064256","memory.heapUsed":"308880760","memory.heapTotal":"338718720"},"startTime":1763888225611,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":563,"timestamp":118646943460,"id":686,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/activity-logs/route"},"startTime":1763888225613,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1555,"timestamp":118646950986,"id":688,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888225620,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15959,"timestamp":118646950381,"id":687,"tags":{"url":"/api/trees"},"startTime":1763888225620,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118646966409,"id":689,"parentId":687,"tags":{"url":"/api/trees","memory.rss":"1910013952","memory.heapUsed":"310980936","memory.heapTotal":"339243008"},"startTime":1763888225636,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":74555,"timestamp":118646942951,"id":685,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs?limit=10"},"startTime":1763888225612,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":26,"timestamp":118647017749,"id":690,"parentId":685,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs?limit=10","memory.rss":"1910177792","memory.heapUsed":"311131672","memory.heapTotal":"339243008"},"startTime":1763888225687,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":706,"timestamp":118647020748,"id":691,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs"},"startTime":1763888225690,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":644,"timestamp":118647021564,"id":692,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs"},"startTime":1763888225691,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":846,"timestamp":118647025084,"id":693,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs"},"startTime":1763888225694,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":975,"timestamp":118647026130,"id":694,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs"},"startTime":1763888225695,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2086,"timestamp":118647031098,"id":696,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/activity-logs/route"},"startTime":1763888225700,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25941,"timestamp":118647029400,"id":695,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs?limit=10"},"startTime":1763888225699,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118647055409,"id":697,"parentId":695,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/activity-logs?limit=10","memory.rss":"1911443456","memory.heapUsed":"312416200","memory.heapTotal":"339505152"},"startTime":1763888225725,"traceId":"e9a6c25356b91814"}] +[{"name":"ensure-page","duration":1005,"timestamp":118648361388,"id":699,"parentId":3,"tags":{"inputPage":"/tree/page"},"startTime":1763888227031,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":19693,"timestamp":118648360825,"id":698,"tags":{"url":"/tree?treeId=cmib8zhtw001nhhxlvi284hss&_rsc=vusbg"},"startTime":1763888227030,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118648380555,"id":700,"parentId":698,"tags":{"url":"/tree?treeId=cmib8zhtw001nhhxlvi284hss&_rsc=vusbg","memory.rss":"1914236928","memory.heapUsed":"315241840","memory.heapTotal":"340029440"},"startTime":1763888227050,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1406,"timestamp":118649070123,"id":702,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888227739,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":52744,"timestamp":118649069651,"id":701,"tags":{"url":"/api/trees"},"startTime":1763888227739,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118649122461,"id":703,"parentId":701,"tags":{"url":"/api/trees","memory.rss":"1917157376","memory.heapUsed":"309259352","memory.heapTotal":"341602304"},"startTime":1763888227792,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":646,"timestamp":118649124245,"id":705,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888227793,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21177,"timestamp":118649123897,"id":704,"tags":{"url":"/api/trees"},"startTime":1763888227793,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":118649145144,"id":706,"parentId":704,"tags":{"url":"/api/trees","memory.rss":"1917407232","memory.heapUsed":"310366976","memory.heapTotal":"341602304"},"startTime":1763888227814,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":604,"timestamp":118651723586,"id":708,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888230393,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13285,"timestamp":118651723168,"id":707,"tags":{"url":"/api/trees"},"startTime":1763888230392,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118651736483,"id":709,"parentId":707,"tags":{"url":"/api/trees","memory.rss":"1897668608","memory.heapUsed":"293231576","memory.heapTotal":"308137984"},"startTime":1763888230406,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":200,"timestamp":118653938263,"id":710,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888232607,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":116,"timestamp":118653938487,"id":711,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888232607,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":158,"timestamp":118653940316,"id":712,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888232609,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":130,"timestamp":118653940494,"id":713,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888232609,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":934,"timestamp":118653941784,"id":715,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888232611,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":31702,"timestamp":118653941324,"id":714,"tags":{"url":"/members/cmib8zhvn0035hhxlzrcl0o49?_rsc=1woqb"},"startTime":1763888232610,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118653973067,"id":716,"parentId":714,"tags":{"url":"/members/cmib8zhvn0035hhxlzrcl0o49?_rsc=1woqb","memory.rss":"1899970560","memory.heapUsed":"294869352","memory.heapTotal":"311283712"},"startTime":1763888232642,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1374,"timestamp":118653994914,"id":718,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888232664,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14433,"timestamp":118653994417,"id":717,"tags":{"url":"/api/trees"},"startTime":1763888232663,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118654008890,"id":719,"parentId":717,"tags":{"url":"/api/trees","memory.rss":"1900314624","memory.heapUsed":"295727584","memory.heapTotal":"311283712"},"startTime":1763888232678,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":166,"timestamp":118654028192,"id":720,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888232697,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":115,"timestamp":118654028379,"id":721,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888232697,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":131,"timestamp":118654029617,"id":722,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888232699,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":104,"timestamp":118654029765,"id":723,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888232699,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":577,"timestamp":118654030731,"id":725,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888232700,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16861,"timestamp":118654030410,"id":724,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888232699,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118654047303,"id":726,"parentId":724,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1900314624","memory.heapUsed":"296470968","memory.heapTotal":"311283712"},"startTime":1763888232716,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":842,"timestamp":118654293720,"id":728,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888232963,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13758,"timestamp":118654293239,"id":727,"tags":{"url":"/api/trees"},"startTime":1763888232962,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118654307044,"id":729,"parentId":727,"tags":{"url":"/api/trees","memory.rss":"1900560384","memory.heapUsed":"297187552","memory.heapTotal":"311517184"},"startTime":1763888232976,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":442,"timestamp":118654309729,"id":731,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888232979,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13660,"timestamp":118654309386,"id":730,"tags":{"url":"/api/trees"},"startTime":1763888232978,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118654323085,"id":732,"parentId":730,"tags":{"url":"/api/trees","memory.rss":"1900625920","memory.heapUsed":"297275312","memory.heapTotal":"315711488"},"startTime":1763888232992,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":423,"timestamp":118658810211,"id":734,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888237479,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11145,"timestamp":118658809933,"id":733,"tags":{"url":"/api/trees"},"startTime":1763888237479,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":13,"timestamp":118658821135,"id":735,"parentId":733,"tags":{"url":"/api/trees","memory.rss":"1900826624","memory.heapUsed":"298454048","memory.heapTotal":"315711488"},"startTime":1763888237490,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":441,"timestamp":118658822284,"id":737,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888237491,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12260,"timestamp":118658821969,"id":736,"tags":{"url":"/api/trees"},"startTime":1763888237491,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":20,"timestamp":118658834317,"id":738,"parentId":736,"tags":{"url":"/api/trees","memory.rss":"1901613056","memory.heapUsed":"299486008","memory.heapTotal":"315711488"},"startTime":1763888237503,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":258,"timestamp":118662448717,"id":739,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888241117,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":150,"timestamp":118662449004,"id":740,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888241118,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":157,"timestamp":118662449658,"id":741,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888241118,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":127,"timestamp":118662449837,"id":742,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888241119,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":964,"timestamp":118662450889,"id":744,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888241120,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":29910,"timestamp":118662450434,"id":743,"tags":{"url":"/members/cmib8zhv3002phhxlxac4veoq?_rsc=1woqb"},"startTime":1763888241119,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118662480380,"id":745,"parentId":743,"tags":{"url":"/members/cmib8zhv3002phhxlxac4veoq?_rsc=1woqb","memory.rss":"1884925952","memory.heapUsed":"290091376","memory.heapTotal":"294694912"},"startTime":1763888241149,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":592,"timestamp":118662514746,"id":747,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888241183,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15463,"timestamp":118662514426,"id":746,"tags":{"url":"/api/trees"},"startTime":1763888241183,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118662529927,"id":748,"parentId":746,"tags":{"url":"/api/trees","memory.rss":"1884925952","memory.heapUsed":"290530400","memory.heapTotal":"295743488"},"startTime":1763888241199,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":780,"timestamp":118662531405,"id":750,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888241200,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13756,"timestamp":118662530744,"id":749,"tags":{"url":"/api/trees"},"startTime":1763888241199,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118662544627,"id":751,"parentId":749,"tags":{"url":"/api/trees","memory.rss":"1885282304","memory.heapUsed":"291145816","memory.heapTotal":"296267776"},"startTime":1763888241213,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":981,"timestamp":118662547708,"id":753,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888241216,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":169,"timestamp":118662551997,"id":754,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888241221,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":122,"timestamp":118662552189,"id":755,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888241221,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":154,"timestamp":118662553517,"id":756,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888241222,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":112,"timestamp":118662553690,"id":757,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888241222,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":474,"timestamp":118662555455,"id":759,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888241224,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":38342,"timestamp":118662547374,"id":752,"tags":{"url":"/api/trees"},"startTime":1763888241216,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":19,"timestamp":118662585752,"id":760,"parentId":752,"tags":{"url":"/api/trees","memory.rss":"1886461952","memory.heapUsed":"291822960","memory.heapTotal":"298889216"},"startTime":1763888241254,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":44714,"timestamp":118662555102,"id":758,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888241224,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118662599867,"id":761,"parentId":758,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1886801920","memory.heapUsed":"292588000","memory.heapTotal":"298889216"},"startTime":1763888241269,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":603,"timestamp":118675992446,"id":763,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888254661,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15425,"timestamp":118675992060,"id":762,"tags":{"url":"/api/trees"},"startTime":1763888254660,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":11,"timestamp":118676007641,"id":764,"parentId":762,"tags":{"url":"/api/trees","memory.rss":"1888014336","memory.heapUsed":"292883016","memory.heapTotal":"296239104"},"startTime":1763888254676,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":533,"timestamp":118676009041,"id":766,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888254677,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16064,"timestamp":118676008711,"id":765,"tags":{"url":"/api/trees"},"startTime":1763888254677,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118676024818,"id":767,"parentId":765,"tags":{"url":"/api/trees","memory.rss":"1888034816","memory.heapUsed":"293398520","memory.heapTotal":"297811968"},"startTime":1763888254693,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":198,"timestamp":118678230856,"id":768,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888256899,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":163,"timestamp":118678231080,"id":769,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888256899,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":137,"timestamp":118678231642,"id":770,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888256900,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":118,"timestamp":118678231795,"id":771,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888256900,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":959,"timestamp":118678232784,"id":773,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888256901,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25865,"timestamp":118678232401,"id":772,"tags":{"url":"/members/cmib8zhvn0035hhxlzrcl0o49?_rsc=1woqb"},"startTime":1763888256901,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118678258306,"id":774,"parentId":772,"tags":{"url":"/members/cmib8zhvn0035hhxlzrcl0o49?_rsc=1woqb","memory.rss":"1888247808","memory.heapUsed":"294468088","memory.heapTotal":"297811968"},"startTime":1763888256926,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":600,"timestamp":118678297749,"id":776,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888256966,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14445,"timestamp":118678297162,"id":775,"tags":{"url":"/api/trees"},"startTime":1763888256965,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":12,"timestamp":118678311747,"id":777,"parentId":775,"tags":{"url":"/api/trees","memory.rss":"1888256000","memory.heapUsed":"294784736","memory.heapTotal":"298074112"},"startTime":1763888256980,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":582,"timestamp":118678314012,"id":779,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888256982,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13301,"timestamp":118678313584,"id":778,"tags":{"url":"/api/trees"},"startTime":1763888256982,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118678326926,"id":780,"parentId":778,"tags":{"url":"/api/trees","memory.rss":"1888501760","memory.heapUsed":"295204288","memory.heapTotal":"298336256"},"startTime":1763888256995,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":511,"timestamp":118678328377,"id":782,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888256997,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":240,"timestamp":118678339458,"id":783,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888257008,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":230,"timestamp":118678339737,"id":784,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888257008,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":203,"timestamp":118678341014,"id":785,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888257009,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":171,"timestamp":118678341239,"id":786,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888257009,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16278,"timestamp":118678328000,"id":781,"tags":{"url":"/api/trees"},"startTime":1763888256996,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118678344335,"id":787,"parentId":781,"tags":{"url":"/api/trees","memory.rss":"1888845824","memory.heapUsed":"296031792","memory.heapTotal":"299909120"},"startTime":1763888257012,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":628,"timestamp":118678346499,"id":789,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888257015,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":26222,"timestamp":118678345847,"id":788,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888257014,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118678372117,"id":790,"parentId":788,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1889583104","memory.heapUsed":"296697192","memory.heapTotal":"300433408"},"startTime":1763888257040,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1334,"timestamp":118723177786,"id":792,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888301844,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22731,"timestamp":118723176652,"id":791,"tags":{"url":"/api/trees"},"startTime":1763888301843,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118723199440,"id":793,"parentId":791,"tags":{"url":"/api/trees","memory.rss":"1890689024","memory.heapUsed":"297868792","memory.heapTotal":"303517696"},"startTime":1763888301866,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":197,"timestamp":118738421388,"id":794,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888317087,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":147,"timestamp":118738421610,"id":795,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888317088,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":159,"timestamp":118738422156,"id":796,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888317088,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":141,"timestamp":118738422334,"id":797,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888317088,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":618,"timestamp":118738423423,"id":799,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/[memberId]/route"},"startTime":1763888317089,"traceId":"e9a6c25356b91814"}] +[{"name":"handle-request","duration":26753,"timestamp":118738423020,"id":798,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888317089,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118738449821,"id":800,"parentId":798,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members/cmib8zhvn0035hhxlzrcl0o49","memory.rss":"1892483072","memory.heapUsed":"297895640","memory.heapTotal":"301420544"},"startTime":1763888317116,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":177,"timestamp":118741155767,"id":801,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888319822,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":134,"timestamp":118741155966,"id":802,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888319822,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":154,"timestamp":118741156604,"id":803,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888319823,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":127,"timestamp":118741156782,"id":804,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888319823,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":849,"timestamp":118741157686,"id":806,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888319824,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21431,"timestamp":118741157323,"id":805,"tags":{"url":"/members/cmib8zhv3002phhxlxac4veoq?_rsc=x3z8u"},"startTime":1763888319823,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118741178788,"id":807,"parentId":805,"tags":{"url":"/members/cmib8zhv3002phhxlxac4veoq?_rsc=x3z8u","memory.rss":"1892601856","memory.heapUsed":"299159152","memory.heapTotal":"302206976"},"startTime":1763888319845,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":513,"timestamp":118741210100,"id":809,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888319876,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13578,"timestamp":118741209817,"id":808,"tags":{"url":"/api/trees"},"startTime":1763888319876,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118741223437,"id":810,"parentId":808,"tags":{"url":"/api/trees","memory.rss":"1892728832","memory.heapUsed":"299439824","memory.heapTotal":"303779840"},"startTime":1763888319889,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":485,"timestamp":118741224584,"id":812,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888319891,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":9927,"timestamp":118741224296,"id":811,"tags":{"url":"/api/trees"},"startTime":1763888319890,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118741234270,"id":813,"parentId":811,"tags":{"url":"/api/trees","memory.rss":"1893101568","memory.heapUsed":"299836624","memory.heapTotal":"302993408"},"startTime":1763888319900,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":486,"timestamp":118741235538,"id":815,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888319902,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11319,"timestamp":118741235239,"id":814,"tags":{"url":"/api/trees"},"startTime":1763888319901,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118741246595,"id":816,"parentId":814,"tags":{"url":"/api/trees","memory.rss":"1893535744","memory.heapUsed":"300255496","memory.heapTotal":"303517696"},"startTime":1763888319913,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":192,"timestamp":118741254701,"id":817,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888319921,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":162,"timestamp":118741254961,"id":818,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888319921,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":151,"timestamp":118741255617,"id":819,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888319922,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":113,"timestamp":118741255784,"id":820,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888319922,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":425,"timestamp":118741257403,"id":822,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888319923,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18011,"timestamp":118741257079,"id":821,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888319923,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118741275143,"id":823,"parentId":821,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1894182912","memory.heapUsed":"301335448","memory.heapTotal":"304041984"},"startTime":1763888319941,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":902,"timestamp":118744664189,"id":825,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888323330,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14571,"timestamp":118744663625,"id":824,"tags":{"url":"/api/trees"},"startTime":1763888323329,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118744678249,"id":826,"parentId":824,"tags":{"url":"/api/trees","memory.rss":"1894850560","memory.heapUsed":"301484800","memory.heapTotal":"307974144"},"startTime":1763888323344,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":543,"timestamp":118744679563,"id":828,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888323345,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13389,"timestamp":118744679130,"id":827,"tags":{"url":"/api/trees"},"startTime":1763888323345,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118744692565,"id":829,"parentId":827,"tags":{"url":"/api/trees","memory.rss":"1895436288","memory.heapUsed":"302614712","memory.heapTotal":"307974144"},"startTime":1763888323358,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":532,"timestamp":118744694052,"id":831,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888323360,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":213,"timestamp":118744703042,"id":832,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888323369,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":139,"timestamp":118744703279,"id":833,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888323369,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":351,"timestamp":118744705208,"id":834,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888323371,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":390,"timestamp":118744705610,"id":835,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888323371,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15513,"timestamp":118744693692,"id":830,"tags":{"url":"/api/trees"},"startTime":1763888323360,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118744709251,"id":838,"parentId":830,"tags":{"url":"/api/trees","memory.rss":"1896493056","memory.heapUsed":"302869816","memory.heapTotal":"308760576"},"startTime":1763888323375,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2212,"timestamp":118744707453,"id":837,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888323373,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":48126,"timestamp":118744707026,"id":836,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888323373,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118744755222,"id":839,"parentId":836,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1897656320","memory.heapUsed":"303408328","memory.heapTotal":"309284864"},"startTime":1763888323421,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":636,"timestamp":118768652749,"id":841,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888347318,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12507,"timestamp":118768652423,"id":840,"tags":{"url":"/api/trees"},"startTime":1763888347317,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":17,"timestamp":118768665059,"id":842,"parentId":840,"tags":{"url":"/api/trees","memory.rss":"1898188800","memory.heapUsed":"303583504","memory.heapTotal":"306663424"},"startTime":1763888347330,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":819,"timestamp":118768667277,"id":844,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888347332,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15433,"timestamp":118768666741,"id":843,"tags":{"url":"/api/trees"},"startTime":1763888347332,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118768682223,"id":845,"parentId":843,"tags":{"url":"/api/trees","memory.rss":"1898594304","memory.heapUsed":"304090768","memory.heapTotal":"307974144"},"startTime":1763888347347,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":206,"timestamp":118795174667,"id":846,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv6002thhxlrvksp14w"},"startTime":1763888373839,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":134,"timestamp":118795174897,"id":847,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv6002thhxlrvksp14w"},"startTime":1763888373839,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":141,"timestamp":118795175413,"id":848,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv6002thhxlrvksp14w"},"startTime":1763888373840,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":126,"timestamp":118795175571,"id":849,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv6002thhxlrvksp14w"},"startTime":1763888373840,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":865,"timestamp":118795176497,"id":851,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888373841,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25596,"timestamp":118795176119,"id":850,"tags":{"url":"/members/cmib8zhv6002thhxlrvksp14w?_rsc=1woqb"},"startTime":1763888373840,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118795201760,"id":852,"parentId":850,"tags":{"url":"/members/cmib8zhv6002thhxlrvksp14w?_rsc=1woqb","memory.rss":"1899929600","memory.heapUsed":"306044184","memory.heapTotal":"309157888"},"startTime":1763888373866,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":496,"timestamp":118795240124,"id":854,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888373904,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":37456,"timestamp":118795239839,"id":853,"tags":{"url":"/api/trees"},"startTime":1763888373904,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118795277332,"id":855,"parentId":853,"tags":{"url":"/api/trees","memory.rss":"1899929600","memory.heapUsed":"306391608","memory.heapTotal":"309682176"},"startTime":1763888373941,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":556,"timestamp":118795279111,"id":857,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888373943,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16835,"timestamp":118795278813,"id":856,"tags":{"url":"/api/trees"},"startTime":1763888373943,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118795295698,"id":858,"parentId":856,"tags":{"url":"/api/trees","memory.rss":"1900232704","memory.heapUsed":"306880040","memory.heapTotal":"310206464"},"startTime":1763888373960,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":460,"timestamp":118795297356,"id":860,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888373961,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13497,"timestamp":118795297030,"id":859,"tags":{"url":"/api/trees"},"startTime":1763888373961,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118795310574,"id":861,"parentId":859,"tags":{"url":"/api/trees","memory.rss":"1900658688","memory.heapUsed":"307297704","memory.heapTotal":"311517184"},"startTime":1763888373975,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":304,"timestamp":118795313649,"id":862,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888373978,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":223,"timestamp":118795314034,"id":863,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888373978,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":599,"timestamp":118795316907,"id":864,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888373981,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":306,"timestamp":118795317549,"id":865,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888373982,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":634,"timestamp":118795318886,"id":867,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888373983,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21963,"timestamp":118795318472,"id":866,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888373983,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118795340486,"id":868,"parentId":866,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1901359104","memory.heapUsed":"308300400","memory.heapTotal":"311255040"},"startTime":1763888374005,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":789,"timestamp":118801263516,"id":870,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888379927,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13387,"timestamp":118801263114,"id":869,"tags":{"url":"/api/trees"},"startTime":1763888379927,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118801276579,"id":871,"parentId":869,"tags":{"url":"/api/trees","memory.rss":"1901871104","memory.heapUsed":"308457680","memory.heapTotal":"311779328"},"startTime":1763888379940,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":766,"timestamp":118801278048,"id":873,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888379942,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15147,"timestamp":118801277667,"id":872,"tags":{"url":"/api/trees"},"startTime":1763888379942,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118801292891,"id":874,"parentId":872,"tags":{"url":"/api/trees","memory.rss":"1902120960","memory.heapUsed":"308904992","memory.heapTotal":"312303616"},"startTime":1763888379957,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1344,"timestamp":118836997095,"id":876,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888415660,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24071,"timestamp":118836996138,"id":875,"tags":{"url":"/api/trees"},"startTime":1763888415659,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118837020274,"id":877,"parentId":875,"tags":{"url":"/api/trees","memory.rss":"1902612480","memory.heapUsed":"309689432","memory.heapTotal":"313614336"},"startTime":1763888415683,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":221,"timestamp":118837753231,"id":878,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888416416,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":159,"timestamp":118837753479,"id":879,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888416416,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":155,"timestamp":118837754140,"id":880,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888416417,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":123,"timestamp":118837754312,"id":881,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888416417,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":855,"timestamp":118837755426,"id":883,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888416418,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22671,"timestamp":118837754990,"id":882,"tags":{"url":"/members/cmib8zhvn0035hhxlzrcl0o49?_rsc=1woqb"},"startTime":1763888416418,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118837777692,"id":884,"parentId":882,"tags":{"url":"/members/cmib8zhvn0035hhxlzrcl0o49?_rsc=1woqb","memory.rss":"1903923200","memory.heapUsed":"310454608","memory.heapTotal":"313876480"},"startTime":1763888416440,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":645,"timestamp":118837811494,"id":886,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888416474,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14827,"timestamp":118837811191,"id":885,"tags":{"url":"/api/trees"},"startTime":1763888416474,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118837826069,"id":887,"parentId":885,"tags":{"url":"/api/trees","memory.rss":"1904283648","memory.heapUsed":"310856288","memory.heapTotal":"314138624"},"startTime":1763888416489,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":486,"timestamp":118837828374,"id":889,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888416491,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":48313,"timestamp":118837828009,"id":888,"tags":{"url":"/api/trees"},"startTime":1763888416491,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":15,"timestamp":118837876450,"id":890,"parentId":888,"tags":{"url":"/api/trees","memory.rss":"1904672768","memory.heapUsed":"311255520","memory.heapTotal":"314662912"},"startTime":1763888416539,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":195,"timestamp":118837880112,"id":891,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888416543,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":140,"timestamp":118837880330,"id":892,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888416543,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":202,"timestamp":118837883758,"id":895,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888416546,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":247,"timestamp":118837883983,"id":896,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888416547,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1447,"timestamp":118837883430,"id":894,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888416546,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2370,"timestamp":118837896468,"id":898,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888416559,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":27550,"timestamp":118837882473,"id":893,"tags":{"url":"/api/trees"},"startTime":1763888416545,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118837910068,"id":899,"parentId":893,"tags":{"url":"/api/trees","memory.rss":"1905721344","memory.heapUsed":"312187176","memory.heapTotal":"315711488"},"startTime":1763888416573,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":30094,"timestamp":118837890998,"id":897,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888416554,"traceId":"e9a6c25356b91814"}] +[{"name":"memory-usage","duration":6,"timestamp":118837921714,"id":900,"parentId":897,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1906388992","memory.heapUsed":"312347376","memory.heapTotal":"319119360"},"startTime":1763888416584,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":820,"timestamp":118849065216,"id":902,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888427727,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20922,"timestamp":118849064721,"id":901,"tags":{"url":"/api/trees"},"startTime":1763888427727,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118849085739,"id":903,"parentId":901,"tags":{"url":"/api/trees","memory.rss":"1907568640","memory.heapUsed":"313542952","memory.heapTotal":"319119360"},"startTime":1763888427748,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":175,"timestamp":118849890557,"id":904,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888428553,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":135,"timestamp":118849890758,"id":905,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888428553,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":143,"timestamp":118849891235,"id":906,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888428553,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":131,"timestamp":118849891397,"id":907,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv3002phhxlxac4veoq"},"startTime":1763888428554,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1478,"timestamp":118849892277,"id":909,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888428555,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21284,"timestamp":118849891908,"id":908,"tags":{"url":"/members/cmib8zhv3002phhxlxac4veoq?_rsc=x3z8u"},"startTime":1763888428554,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118849913233,"id":910,"parentId":908,"tags":{"url":"/members/cmib8zhv3002phhxlxac4veoq?_rsc=x3z8u","memory.rss":"1908682752","memory.heapUsed":"313622200","memory.heapTotal":"317284352"},"startTime":1763888428575,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":501,"timestamp":118849944726,"id":912,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888428607,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11685,"timestamp":118849944442,"id":911,"tags":{"url":"/api/trees"},"startTime":1763888428607,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118849956168,"id":913,"parentId":911,"tags":{"url":"/api/trees","memory.rss":"1908813824","memory.heapUsed":"314109232","memory.heapTotal":"317808640"},"startTime":1763888428618,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":642,"timestamp":118849957177,"id":915,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888428619,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13334,"timestamp":118849956888,"id":914,"tags":{"url":"/api/trees"},"startTime":1763888428619,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118849970274,"id":916,"parentId":914,"tags":{"url":"/api/trees","memory.rss":"1909043200","memory.heapUsed":"314772432","memory.heapTotal":"318070784"},"startTime":1763888428633,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":493,"timestamp":118849971614,"id":918,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888428634,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":190,"timestamp":118849979274,"id":919,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888428642,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":137,"timestamp":118849979487,"id":920,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888428642,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":184,"timestamp":118849981184,"id":921,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888428643,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":122,"timestamp":118849981390,"id":922,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888428644,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11986,"timestamp":118849971310,"id":917,"tags":{"url":"/api/trees"},"startTime":1763888428634,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118849983366,"id":923,"parentId":917,"tags":{"url":"/api/trees","memory.rss":"1909047296","memory.heapUsed":"315593528","memory.heapTotal":"319643648"},"startTime":1763888428646,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":531,"timestamp":118849985272,"id":925,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888428648,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22170,"timestamp":118849984422,"id":924,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888428647,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":118850006683,"id":926,"parentId":924,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1909354496","memory.heapUsed":"316216296","memory.heapTotal":"319119360"},"startTime":1763888428669,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2066,"timestamp":118956877957,"id":928,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888535537,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":51756,"timestamp":118956877379,"id":927,"tags":{"url":"/api/trees"},"startTime":1763888535536,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":118956929215,"id":929,"parentId":927,"tags":{"url":"/api/trees","memory.rss":"1910194176","memory.heapUsed":"316445000","memory.heapTotal":"319905792"},"startTime":1763888535588,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":875,"timestamp":118957381949,"id":931,"parentId":3,"tags":{"inputPage":"/tree/page"},"startTime":1763888536041,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":19227,"timestamp":118957381612,"id":930,"tags":{"url":"/tree?treeId=cmib8zhtw001nhhxlvi284hss&_rsc=10zjc"},"startTime":1763888536040,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118957400880,"id":932,"parentId":930,"tags":{"url":"/tree?treeId=cmib8zhtw001nhhxlvi284hss&_rsc=10zjc","memory.rss":"1911169024","memory.heapUsed":"317012080","memory.heapTotal":"320692224"},"startTime":1763888536059,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":774,"timestamp":118957534031,"id":934,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888536193,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14619,"timestamp":118957533624,"id":933,"tags":{"url":"/api/trees"},"startTime":1763888536192,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118957548294,"id":935,"parentId":933,"tags":{"url":"/api/trees","memory.rss":"1912463360","memory.heapUsed":"303972208","memory.heapTotal":"320458752"},"startTime":1763888536207,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":667,"timestamp":118957550318,"id":937,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888536209,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16609,"timestamp":118957549996,"id":936,"tags":{"url":"/api/trees"},"startTime":1763888536209,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":12,"timestamp":118957566716,"id":938,"parentId":936,"tags":{"url":"/api/trees","memory.rss":"1912463360","memory.heapUsed":"304092824","memory.heapTotal":"320458752"},"startTime":1763888536225,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":184,"timestamp":118961273913,"id":939,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv6002thhxlrvksp14w"},"startTime":1763888539932,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":116,"timestamp":118961274121,"id":940,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv6002thhxlrvksp14w"},"startTime":1763888539933,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":128,"timestamp":118961274617,"id":941,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv6002thhxlrvksp14w"},"startTime":1763888539933,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":103,"timestamp":118961274759,"id":942,"parentId":3,"tags":{"inputPage":"/members/cmib8zhv6002thhxlrvksp14w"},"startTime":1763888539933,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1533,"timestamp":118961275579,"id":944,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888539934,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":27004,"timestamp":118961275231,"id":943,"tags":{"url":"/members/cmib8zhv6002thhxlrvksp14w?_rsc=1woqb"},"startTime":1763888539934,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118961302273,"id":945,"parentId":943,"tags":{"url":"/members/cmib8zhv6002thhxlrvksp14w?_rsc=1woqb","memory.rss":"1912688640","memory.heapUsed":"305045992","memory.heapTotal":"323604480"},"startTime":1763888539961,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":577,"timestamp":118961332961,"id":947,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888539991,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17744,"timestamp":118961332630,"id":946,"tags":{"url":"/api/trees"},"startTime":1763888539991,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118961350435,"id":948,"parentId":946,"tags":{"url":"/api/trees","memory.rss":"1913556992","memory.heapUsed":"306187664","memory.heapTotal":"323604480"},"startTime":1763888540009,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":604,"timestamp":118961352713,"id":950,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888540011,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15092,"timestamp":118961352258,"id":949,"tags":{"url":"/api/trees"},"startTime":1763888540011,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118961367395,"id":951,"parentId":949,"tags":{"url":"/api/trees","memory.rss":"1914191872","memory.heapUsed":"306041928","memory.heapTotal":"323604480"},"startTime":1763888540026,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":496,"timestamp":118961368950,"id":953,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888540027,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":203,"timestamp":118961374869,"id":954,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888540033,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":129,"timestamp":118961375094,"id":955,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888540034,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":217,"timestamp":118961377645,"id":956,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888540036,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":134,"timestamp":118961377885,"id":957,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888540036,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":499,"timestamp":118961381251,"id":959,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888540040,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":27201,"timestamp":118961368571,"id":952,"tags":{"url":"/api/trees"},"startTime":1763888540027,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118961395846,"id":960,"parentId":952,"tags":{"url":"/api/trees","memory.rss":"1914445824","memory.heapUsed":"307361640","memory.heapTotal":"323837952"},"startTime":1763888540054,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":30253,"timestamp":118961380856,"id":958,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888540039,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":118961411167,"id":961,"parentId":958,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1914445824","memory.heapUsed":"308154480","memory.heapTotal":"323837952"},"startTime":1763888540070,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1068,"timestamp":118990575514,"id":963,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888569233,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16906,"timestamp":118990574812,"id":962,"tags":{"url":"/api/trees"},"startTime":1763888569232,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":118990591852,"id":964,"parentId":962,"tags":{"url":"/api/trees","memory.rss":"1914458112","memory.heapUsed":"307785672","memory.heapTotal":"321740800"},"startTime":1763888569249,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":883,"timestamp":118991126676,"id":966,"parentId":3,"tags":{"inputPage":"/tree/page"},"startTime":1763888569784,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17602,"timestamp":118991126198,"id":965,"tags":{"url":"/tree?treeId=cmib8zhtw001nhhxlvi284hss&_rsc=c0du5"},"startTime":1763888569784,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118991143842,"id":967,"parentId":965,"tags":{"url":"/tree?treeId=cmib8zhtw001nhhxlvi284hss&_rsc=c0du5","memory.rss":"1914458112","memory.heapUsed":"308535152","memory.heapTotal":"321740800"},"startTime":1763888569801,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":635,"timestamp":118991197942,"id":969,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888569855,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14014,"timestamp":118991197545,"id":968,"tags":{"url":"/api/trees"},"startTime":1763888569855,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118991211601,"id":970,"parentId":968,"tags":{"url":"/api/trees","memory.rss":"1914458112","memory.heapUsed":"309019488","memory.heapTotal":"320692224"},"startTime":1763888569869,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":822,"timestamp":118991214644,"id":972,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888569872,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15077,"timestamp":118991213428,"id":971,"tags":{"url":"/api/trees"},"startTime":1763888569871,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118991228557,"id":973,"parentId":971,"tags":{"url":"/api/trees","memory.rss":"1914462208","memory.heapUsed":"309627240","memory.heapTotal":"320692224"},"startTime":1763888569886,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":188,"timestamp":118997675612,"id":974,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888576333,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":126,"timestamp":118997675823,"id":975,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888576333,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":143,"timestamp":118997676291,"id":976,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888576333,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":112,"timestamp":118997676451,"id":977,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvn0035hhxlzrcl0o49"},"startTime":1763888576334,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":848,"timestamp":118997678242,"id":979,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888576335,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24566,"timestamp":118997677840,"id":978,"tags":{"url":"/members/cmib8zhvn0035hhxlzrcl0o49?_rsc=1woqb"},"startTime":1763888576335,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118997702446,"id":980,"parentId":978,"tags":{"url":"/members/cmib8zhvn0035hhxlzrcl0o49?_rsc=1woqb","memory.rss":"1914630144","memory.heapUsed":"310577752","memory.heapTotal":"320954368"},"startTime":1763888576360,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":559,"timestamp":118997732508,"id":982,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888576390,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13150,"timestamp":118997732203,"id":981,"tags":{"url":"/api/trees"},"startTime":1763888576389,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":118997745432,"id":983,"parentId":981,"tags":{"url":"/api/trees","memory.rss":"1915092992","memory.heapUsed":"311619776","memory.heapTotal":"321417216"},"startTime":1763888576403,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":491,"timestamp":118997747499,"id":985,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888576405,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12883,"timestamp":118997747019,"id":984,"tags":{"url":"/api/trees"},"startTime":1763888576404,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118997759944,"id":986,"parentId":984,"tags":{"url":"/api/trees","memory.rss":"1915092992","memory.heapUsed":"312119208","memory.heapTotal":"324562944"},"startTime":1763888576417,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":447,"timestamp":118997760949,"id":988,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888576418,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11187,"timestamp":118997760665,"id":987,"tags":{"url":"/api/trees"},"startTime":1763888576418,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":118997771897,"id":989,"parentId":987,"tags":{"url":"/api/trees","memory.rss":"1915461632","memory.heapUsed":"313149880","memory.heapTotal":"324562944"},"startTime":1763888576429,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":152,"timestamp":118997803833,"id":990,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888576461,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":114,"timestamp":118997804004,"id":991,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888576461,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":172,"timestamp":118997804789,"id":992,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888576462,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":122,"timestamp":118997804992,"id":993,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888576462,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1042,"timestamp":118997807387,"id":995,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888576465,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":19154,"timestamp":118997806734,"id":994,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888576464,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":118997825932,"id":996,"parentId":994,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1915461632","memory.heapUsed":"314016384","memory.heapTotal":"324562944"},"startTime":1763888576483,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":662,"timestamp":119000695872,"id":998,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888579353,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14466,"timestamp":119000695545,"id":997,"tags":{"url":"/api/trees"},"startTime":1763888579353,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119000710062,"id":999,"parentId":997,"tags":{"url":"/api/trees","memory.rss":"1915461632","memory.heapUsed":"314193592","memory.heapTotal":"324562944"},"startTime":1763888579367,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":551,"timestamp":119000711319,"id":1001,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888579368,"traceId":"e9a6c25356b91814"}] +[{"name":"handle-request","duration":17834,"timestamp":119000711003,"id":1000,"tags":{"url":"/api/trees"},"startTime":1763888579368,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":119000728933,"id":1002,"parentId":1000,"tags":{"url":"/api/trees","memory.rss":"1915617280","memory.heapUsed":"314156128","memory.heapTotal":"324562944"},"startTime":1763888579386,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":205,"timestamp":119024273465,"id":1003,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvj002zhhxlmy0e5z2g"},"startTime":1763888602930,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":191,"timestamp":119024273692,"id":1004,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvj002zhhxlmy0e5z2g"},"startTime":1763888602930,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":162,"timestamp":119024274326,"id":1005,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvj002zhhxlmy0e5z2g"},"startTime":1763888602931,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":125,"timestamp":119024274507,"id":1006,"parentId":3,"tags":{"inputPage":"/members/cmib8zhvj002zhhxlmy0e5z2g"},"startTime":1763888602931,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":861,"timestamp":119024275558,"id":1008,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888602932,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24823,"timestamp":119024275168,"id":1007,"tags":{"url":"/members/cmib8zhvj002zhhxlmy0e5z2g?_rsc=1woqb"},"startTime":1763888602931,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119024300035,"id":1009,"parentId":1007,"tags":{"url":"/members/cmib8zhvj002zhhxlmy0e5z2g?_rsc=1woqb","memory.rss":"1915723776","memory.heapUsed":"315080888","memory.heapTotal":"321417216"},"startTime":1763888602956,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":651,"timestamp":119024332576,"id":1011,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888602989,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13769,"timestamp":119024332161,"id":1010,"tags":{"url":"/api/trees"},"startTime":1763888602988,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":10,"timestamp":119024346004,"id":1012,"parentId":1010,"tags":{"url":"/api/trees","memory.rss":"1915723776","memory.heapUsed":"315589512","memory.heapTotal":"322465792"},"startTime":1763888603002,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":776,"timestamp":119024348609,"id":1014,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888603005,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12628,"timestamp":119024348198,"id":1013,"tags":{"url":"/api/trees"},"startTime":1763888603004,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119024360874,"id":1015,"parentId":1013,"tags":{"url":"/api/trees","memory.rss":"1915723776","memory.heapUsed":"316104944","memory.heapTotal":"321417216"},"startTime":1763888603017,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":433,"timestamp":119024362397,"id":1017,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888603019,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11431,"timestamp":119024362070,"id":1016,"tags":{"url":"/api/trees"},"startTime":1763888603018,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119024373571,"id":1018,"parentId":1016,"tags":{"url":"/api/trees","memory.rss":"1915723776","memory.heapUsed":"316535544","memory.heapTotal":"321417216"},"startTime":1763888603030,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":170,"timestamp":119024384684,"id":1019,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888603041,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":112,"timestamp":119024384875,"id":1020,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888603041,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":132,"timestamp":119024385317,"id":1021,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888603042,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":109,"timestamp":119024385463,"id":1022,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888603042,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":528,"timestamp":119024387210,"id":1024,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888603043,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":48363,"timestamp":119024386860,"id":1023,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888603043,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119024435316,"id":1025,"parentId":1023,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1915723776","memory.heapUsed":"317457200","memory.heapTotal":"321417216"},"startTime":1763888603092,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":645,"timestamp":119027034471,"id":1027,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888605691,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16261,"timestamp":119027034031,"id":1026,"tags":{"url":"/api/trees"},"startTime":1763888605690,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119027050352,"id":1028,"parentId":1026,"tags":{"url":"/api/trees","memory.rss":"1915723776","memory.heapUsed":"317633752","memory.heapTotal":"321417216"},"startTime":1763888605707,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":543,"timestamp":119027051760,"id":1030,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888605708,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15867,"timestamp":119027051392,"id":1029,"tags":{"url":"/api/trees"},"startTime":1763888605708,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":10,"timestamp":119027067382,"id":1031,"parentId":1029,"tags":{"url":"/api/trees","memory.rss":"1915723776","memory.heapUsed":"318123568","memory.heapTotal":"322727936"},"startTime":1763888605724,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":200,"timestamp":119085508067,"id":1032,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888664162,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":122,"timestamp":119085508289,"id":1033,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888664162,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":130,"timestamp":119085508742,"id":1034,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888664163,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":115,"timestamp":119085508887,"id":1035,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888664163,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":840,"timestamp":119085509849,"id":1037,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888664164,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24786,"timestamp":119085509471,"id":1036,"tags":{"url":"/members/cmib8zhum002dhhxlscn8hxii?_rsc=1woqb"},"startTime":1763888664164,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119085534318,"id":1038,"parentId":1036,"tags":{"url":"/members/cmib8zhum002dhhxlscn8hxii?_rsc=1woqb","memory.rss":"1916653568","memory.heapUsed":"320067760","memory.heapTotal":"324698112"},"startTime":1763888664189,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":507,"timestamp":119085568615,"id":1040,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888664223,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12904,"timestamp":119085568310,"id":1039,"tags":{"url":"/api/trees"},"startTime":1763888664222,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119085581273,"id":1041,"parentId":1039,"tags":{"url":"/api/trees","memory.rss":"1916653568","memory.heapUsed":"320577432","memory.heapTotal":"323911680"},"startTime":1763888664235,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":847,"timestamp":119085582798,"id":1043,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888664237,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10981,"timestamp":119085582521,"id":1042,"tags":{"url":"/api/trees"},"startTime":1763888664237,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119085593549,"id":1044,"parentId":1042,"tags":{"url":"/api/trees","memory.rss":"1916653568","memory.heapUsed":"321043040","memory.heapTotal":"324173824"},"startTime":1763888664248,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":499,"timestamp":119085594657,"id":1046,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888664249,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":178,"timestamp":119085599511,"id":1047,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888664254,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":125,"timestamp":119085599709,"id":1048,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888664254,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":176,"timestamp":119085601766,"id":1049,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888664256,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":125,"timestamp":119085602040,"id":1050,"parentId":3,"tags":{"inputPage":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888664256,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":457,"timestamp":119085603778,"id":1052,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888664258,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18007,"timestamp":119085594379,"id":1045,"tags":{"url":"/api/trees"},"startTime":1763888664249,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119085612444,"id":1053,"parentId":1045,"tags":{"url":"/api/trees","memory.rss":"1917132800","memory.heapUsed":"322023104","memory.heapTotal":"326008832"},"startTime":1763888664267,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18120,"timestamp":119085603341,"id":1051,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members"},"startTime":1763888664258,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119085621507,"id":1054,"parentId":1051,"tags":{"url":"/api/trees/cmib8zhtw001nhhxlvi284hss/members","memory.rss":"1917386752","memory.heapUsed":"322307032","memory.heapTotal":"325484544"},"startTime":1763888664276,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":935,"timestamp":119125142941,"id":1056,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888703796,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25510,"timestamp":119125142170,"id":1055,"tags":{"url":"/api/trees"},"startTime":1763888703795,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":119125167750,"id":1057,"parentId":1055,"tags":{"url":"/api/trees","memory.rss":"1917890560","memory.heapUsed":"322547736","memory.heapTotal":"327057408"},"startTime":1763888703821,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":236,"timestamp":119125232722,"id":1058,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888703886,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":140,"timestamp":119125232986,"id":1059,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888703886,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":150,"timestamp":119125233572,"id":1060,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888703886,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":121,"timestamp":119125233739,"id":1061,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888703887,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1949,"timestamp":119125235175,"id":1063,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888703888,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":105358,"timestamp":119125234405,"id":1062,"tags":{"url":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888703887,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119125339840,"id":1064,"parentId":1062,"tags":{"url":"/members/cmib8zhum002dhhxlscn8hxii","memory.rss":"1920192512","memory.heapUsed":"325133168","memory.heapTotal":"329154560"},"startTime":1763888703993,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":438,"timestamp":119125596529,"id":1065,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888704249,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":355,"timestamp":119125597031,"id":1066,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888704250,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":550,"timestamp":119125599179,"id":1067,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888704252,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":307,"timestamp":119125599781,"id":1068,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888704253,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2140,"timestamp":119125602473,"id":1070,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888704255,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":62146,"timestamp":119125601573,"id":1069,"tags":{"url":"/api/auth/session"},"startTime":1763888704254,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119125663774,"id":1071,"parentId":1069,"tags":{"url":"/api/auth/session","memory.rss":"1921949696","memory.heapUsed":"299294360","memory.heapTotal":"331730944"},"startTime":1763888704317,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":683,"timestamp":119125679578,"id":1073,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888704332,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18532,"timestamp":119125678434,"id":1072,"tags":{"url":"/api/trees"},"startTime":1763888704331,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":119125697031,"id":1074,"parentId":1072,"tags":{"url":"/api/trees","memory.rss":"1921949696","memory.heapUsed":"300531688","memory.heapTotal":"331730944"},"startTime":1763888704350,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":681,"timestamp":119125698831,"id":1076,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888704352,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14609,"timestamp":119125698470,"id":1075,"tags":{"url":"/api/trees"},"startTime":1763888704351,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119125713120,"id":1077,"parentId":1075,"tags":{"url":"/api/trees","memory.rss":"1921949696","memory.heapUsed":"300209592","memory.heapTotal":"331730944"},"startTime":1763888704366,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":178,"timestamp":119129066345,"id":1078,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888707719,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":128,"timestamp":119129066546,"id":1079,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888707719,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":154,"timestamp":119129067016,"id":1080,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888707720,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":204,"timestamp":119129067194,"id":1081,"parentId":3,"tags":{"inputPage":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888707720,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1172,"timestamp":119129068820,"id":1083,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888707722,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":74751,"timestamp":119129068132,"id":1082,"tags":{"url":"/members/cmib8zhum002dhhxlscn8hxii"},"startTime":1763888707721,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119129142925,"id":1084,"parentId":1082,"tags":{"url":"/members/cmib8zhum002dhhxlscn8hxii","memory.rss":"1925197824","memory.heapUsed":"303512392","memory.heapTotal":"336158720"},"startTime":1763888707796,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":409,"timestamp":119129314144,"id":1085,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888707967,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":249,"timestamp":119129314589,"id":1086,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888707967,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":235,"timestamp":119129317730,"id":1087,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888707970,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":175,"timestamp":119129317995,"id":1088,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888707971,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":886,"timestamp":119129320697,"id":1090,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888707973,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24056,"timestamp":119129320058,"id":1089,"tags":{"url":"/api/auth/session"},"startTime":1763888707973,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119129344168,"id":1091,"parentId":1089,"tags":{"url":"/api/auth/session","memory.rss":"1926938624","memory.heapUsed":"305166184","memory.heapTotal":"336621568"},"startTime":1763888707997,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1121,"timestamp":119129366151,"id":1093,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888708019,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22320,"timestamp":119129365456,"id":1092,"tags":{"url":"/api/trees"},"startTime":1763888708018,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":10,"timestamp":119129387862,"id":1094,"parentId":1092,"tags":{"url":"/api/trees","memory.rss":"1926946816","memory.heapUsed":"306400880","memory.heapTotal":"336621568"},"startTime":1763888708041,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":656,"timestamp":119129389964,"id":1096,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888708043,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16194,"timestamp":119129389428,"id":1095,"tags":{"url":"/api/trees"},"startTime":1763888708042,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119129405717,"id":1097,"parentId":1095,"tags":{"url":"/api/trees","memory.rss":"1927004160","memory.heapUsed":"307453016","memory.heapTotal":"336621568"},"startTime":1763888708058,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":224,"timestamp":119131365344,"id":1098,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888710018,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":332,"timestamp":119131365593,"id":1099,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888710018,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":193,"timestamp":119131366386,"id":1100,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888710019,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":135,"timestamp":119131366598,"id":1101,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888710019,"traceId":"e9a6c25356b91814"}] +[{"name":"ensure-page","duration":586,"timestamp":119131367926,"id":1103,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888710021,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11410,"timestamp":119131367598,"id":1102,"tags":{"url":"/api/auth/csrf"},"startTime":1763888710020,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":119131379081,"id":1104,"parentId":1102,"tags":{"url":"/api/auth/csrf","memory.rss":"1927020544","memory.heapUsed":"306806336","memory.heapTotal":"336621568"},"startTime":1763888710032,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":170,"timestamp":119131384360,"id":1105,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888710037,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":177,"timestamp":119131384549,"id":1106,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888710037,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":150,"timestamp":119131385219,"id":1107,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888710038,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":117,"timestamp":119131385386,"id":1108,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888710038,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":531,"timestamp":119131386353,"id":1110,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888710039,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":8863,"timestamp":119131386015,"id":1109,"tags":{"url":"/api/auth/signout"},"startTime":1763888710039,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119131394921,"id":1111,"parentId":1109,"tags":{"url":"/api/auth/signout","memory.rss":"1927028736","memory.heapUsed":"308006800","memory.heapTotal":"336621568"},"startTime":1763888710048,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":816,"timestamp":119131402256,"id":1113,"parentId":3,"tags":{"inputPage":"/auth/signin/page"},"startTime":1763888710055,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":54172,"timestamp":119131401926,"id":1112,"tags":{"url":"/auth/signin"},"startTime":1763888710055,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119131456142,"id":1114,"parentId":1112,"tags":{"url":"/auth/signin","memory.rss":"1928810496","memory.heapUsed":"311370440","memory.heapTotal":"345534464"},"startTime":1763888710109,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":277,"timestamp":119131623968,"id":1115,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888710277,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":177,"timestamp":119131624273,"id":1116,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888710277,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":346,"timestamp":119131625621,"id":1117,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888710278,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":241,"timestamp":119131626003,"id":1118,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888710279,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":857,"timestamp":119131627668,"id":1120,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888710280,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14146,"timestamp":119131627121,"id":1119,"tags":{"url":"/api/auth/session"},"startTime":1763888710280,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":37,"timestamp":119131641336,"id":1121,"parentId":1119,"tags":{"url":"/api/auth/session","memory.rss":"1930641408","memory.heapUsed":"310900848","memory.heapTotal":"345534464"},"startTime":1763888710294,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":193,"timestamp":119133986234,"id":1122,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888712639,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":130,"timestamp":119133986450,"id":1123,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888712639,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":147,"timestamp":119133986964,"id":1124,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888712639,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":121,"timestamp":119133987126,"id":1125,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888712640,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":661,"timestamp":119133988190,"id":1127,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888712641,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12997,"timestamp":119133987796,"id":1126,"tags":{"url":"/api/auth/csrf"},"startTime":1763888712640,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119134000831,"id":1128,"parentId":1126,"tags":{"url":"/api/auth/csrf","memory.rss":"1894219776","memory.heapUsed":"296495752","memory.heapTotal":"305643520"},"startTime":1763888712653,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":219,"timestamp":119134003532,"id":1129,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888712656,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":144,"timestamp":119134003778,"id":1130,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888712656,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":156,"timestamp":119134004292,"id":1131,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888712657,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":136,"timestamp":119134004465,"id":1132,"parentId":3,"tags":{"inputPage":"/api/auth/signout"},"startTime":1763888712657,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":494,"timestamp":119134005433,"id":1134,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888712658,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":9416,"timestamp":119134005061,"id":1133,"tags":{"url":"/api/auth/signout"},"startTime":1763888712658,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":24,"timestamp":119134014555,"id":1135,"parentId":1133,"tags":{"url":"/api/auth/signout","memory.rss":"1895223296","memory.heapUsed":"297777672","memory.heapTotal":"305643520"},"startTime":1763888712667,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":192,"timestamp":119134016825,"id":1136,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888712669,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":133,"timestamp":119134017038,"id":1137,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888712670,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":143,"timestamp":119134017518,"id":1138,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888712670,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":133,"timestamp":119134017677,"id":1139,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888712670,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":451,"timestamp":119134018573,"id":1141,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888712671,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":8372,"timestamp":119134018231,"id":1140,"tags":{"url":"/api/auth/session"},"startTime":1763888712671,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119134026646,"id":1142,"parentId":1140,"tags":{"url":"/api/auth/session","memory.rss":"1896128512","memory.heapUsed":"297582160","memory.heapTotal":"305643520"},"startTime":1763888712679,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":163,"timestamp":119134530368,"id":1143,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1763888713183,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":111,"timestamp":119134530550,"id":1144,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1763888713183,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":138,"timestamp":119134531027,"id":1145,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1763888713184,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":107,"timestamp":119134531182,"id":1146,"parentId":3,"tags":{"inputPage":"/api/auth/providers"},"startTime":1763888713184,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":467,"timestamp":119134531987,"id":1148,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888713184,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":7408,"timestamp":119134531704,"id":1147,"tags":{"url":"/api/auth/providers"},"startTime":1763888713184,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":119134539147,"id":1149,"parentId":1147,"tags":{"url":"/api/auth/providers","memory.rss":"1896833024","memory.heapUsed":"298725608","memory.heapTotal":"305905664"},"startTime":1763888713192,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":191,"timestamp":119134541694,"id":1150,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888713194,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":126,"timestamp":119134541904,"id":1151,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888713194,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":150,"timestamp":119134542393,"id":1152,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888713195,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":119,"timestamp":119134542560,"id":1153,"parentId":3,"tags":{"inputPage":"/api/auth/csrf"},"startTime":1763888713195,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":467,"timestamp":119134545284,"id":1155,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888713198,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":7826,"timestamp":119134544753,"id":1154,"tags":{"url":"/api/auth/csrf"},"startTime":1763888713197,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119134552617,"id":1156,"parentId":1154,"tags":{"url":"/api/auth/csrf","memory.rss":"1897369600","memory.heapUsed":"298953816","memory.heapTotal":"306167808"},"startTime":1763888713205,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":149,"timestamp":119134554691,"id":1157,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1763888713207,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":108,"timestamp":119134554857,"id":1158,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1763888713207,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":115,"timestamp":119134555247,"id":1159,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1763888713208,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":102,"timestamp":119134555375,"id":1160,"parentId":3,"tags":{"inputPage":"/api/auth/callback/credentials"},"startTime":1763888713208,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":442,"timestamp":119134556085,"id":1162,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888713209,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":87597,"timestamp":119134555817,"id":1161,"tags":{"url":"/api/auth/callback/credentials"},"startTime":1763888713208,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":2,"timestamp":119134643448,"id":1163,"parentId":1161,"tags":{"url":"/api/auth/callback/credentials","memory.rss":"1897844736","memory.heapUsed":"299647256","memory.heapTotal":"306925568"},"startTime":1763888713296,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":157,"timestamp":119134646529,"id":1164,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888713299,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":151,"timestamp":119134646704,"id":1165,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888713299,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":129,"timestamp":119134647302,"id":1166,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888713300,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":106,"timestamp":119134647445,"id":1167,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888713300,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":521,"timestamp":119134648259,"id":1169,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888713301,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":9406,"timestamp":119134647933,"id":1168,"tags":{"url":"/api/auth/session"},"startTime":1763888713300,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":2,"timestamp":119134657371,"id":1170,"parentId":1168,"tags":{"url":"/api/auth/session","memory.rss":"1898233856","memory.heapUsed":"299877800","memory.heapTotal":"311644160"},"startTime":1763888713310,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1022,"timestamp":119134664685,"id":1172,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888713317,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":4359,"timestamp":119134665273,"id":1174,"parentId":3,"tags":{"inputPage":"/page"},"startTime":1763888713318,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":79518,"timestamp":119134664292,"id":1171,"tags":{"url":"/api/trees"},"startTime":1763888713317,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119134743852,"id":1175,"parentId":1171,"tags":{"url":"/api/trees","memory.rss":"1903538176","memory.heapUsed":"303443672","memory.heapTotal":"312954880"},"startTime":1763888713396,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":79395,"timestamp":119134664995,"id":1173,"tags":{"url":"/"},"startTime":1763888713318,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":119134744417,"id":1176,"parentId":1173,"tags":{"url":"/","memory.rss":"1903542272","memory.heapUsed":"303491064","memory.heapTotal":"312954880"},"startTime":1763888713397,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":567,"timestamp":119134908319,"id":1177,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888713561,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":497,"timestamp":119134909011,"id":1178,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888713562,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":599,"timestamp":119134918091,"id":1179,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888713571,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":518,"timestamp":119134918768,"id":1180,"parentId":3,"tags":{"inputPage":"/api/auth/session"},"startTime":1763888713571,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2277,"timestamp":119134925132,"id":1182,"parentId":3,"tags":{"inputPage":"/api/auth/[...nextauth]/route"},"startTime":1763888713578,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15840,"timestamp":119134924671,"id":1181,"tags":{"url":"/api/auth/session"},"startTime":1763888713577,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":119134940554,"id":1183,"parentId":1181,"tags":{"url":"/api/auth/session","memory.rss":"1905758208","memory.heapUsed":"306625648","memory.heapTotal":"314990592"},"startTime":1763888713593,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2251,"timestamp":119134958504,"id":1185,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888713611,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17909,"timestamp":119134957993,"id":1184,"tags":{"url":"/api/trees"},"startTime":1763888713610,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119134975946,"id":1186,"parentId":1184,"tags":{"url":"/api/trees","memory.rss":"1906601984","memory.heapUsed":"306420040","memory.heapTotal":"324165632"},"startTime":1763888713628,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":243,"timestamp":119134983624,"id":1187,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888713636,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":196,"timestamp":119134983898,"id":1188,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888713636,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":418,"timestamp":119134985362,"id":1189,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888713638,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":326,"timestamp":119134985814,"id":1190,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888713638,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1220,"timestamp":119134989465,"id":1192,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888713642,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":27471,"timestamp":119134988733,"id":1191,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888713641,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":18,"timestamp":119135016244,"id":1193,"parentId":1191,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1907494912","memory.heapUsed":"309374728","memory.heapTotal":"324165632"},"startTime":1763888713669,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":459,"timestamp":119135121996,"id":1195,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888713774,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11458,"timestamp":119135121660,"id":1194,"tags":{"url":"/api/trees"},"startTime":1763888713774,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119135133155,"id":1196,"parentId":1194,"tags":{"url":"/api/trees","memory.rss":"1908985856","memory.heapUsed":"310879912","memory.heapTotal":"324427776"},"startTime":1763888713786,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":170,"timestamp":119135134416,"id":1197,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs"},"startTime":1763888713787,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":147,"timestamp":119135134605,"id":1198,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs"},"startTime":1763888713787,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":502,"timestamp":119135135298,"id":1200,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888713788,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":205,"timestamp":119135138618,"id":1201,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs"},"startTime":1763888713791,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":177,"timestamp":119135138847,"id":1202,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs"},"startTime":1763888713791,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":845,"timestamp":119135142450,"id":1204,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/activity-logs/route"},"startTime":1763888713795,"traceId":"e9a6c25356b91814"}] +[{"name":"handle-request","duration":20885,"timestamp":119135142100,"id":1203,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs?limit=10"},"startTime":1763888713795,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":10,"timestamp":119135163061,"id":1205,"parentId":1203,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs?limit=10","memory.rss":"1910796288","memory.heapUsed":"308560960","memory.heapTotal":"326000640"},"startTime":1763888713816,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":335,"timestamp":119135165581,"id":1206,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs"},"startTime":1763888713818,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":191,"timestamp":119135165953,"id":1207,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs"},"startTime":1763888713818,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":283,"timestamp":119135166717,"id":1208,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs"},"startTime":1763888713819,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":141,"timestamp":119135167026,"id":1209,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs"},"startTime":1763888713820,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":710,"timestamp":119135168131,"id":1211,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/activity-logs/route"},"startTime":1763888713821,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15283,"timestamp":119135167700,"id":1210,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs?limit=10"},"startTime":1763888713820,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":20,"timestamp":119135183049,"id":1212,"parentId":1210,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/activity-logs?limit=10","memory.rss":"1911980032","memory.heapUsed":"310757200","memory.heapTotal":"326922240"},"startTime":1763888713836,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":65639,"timestamp":119135135006,"id":1199,"tags":{"url":"/api/trees"},"startTime":1763888713787,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119135200708,"id":1213,"parentId":1199,"tags":{"url":"/api/trees","memory.rss":"1912086528","memory.heapUsed":"310914976","memory.heapTotal":"326922240"},"startTime":1763888713853,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":690,"timestamp":119137961783,"id":1215,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888716614,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14518,"timestamp":119137961416,"id":1214,"tags":{"url":"/api/trees"},"startTime":1763888716614,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119137975972,"id":1216,"parentId":1214,"tags":{"url":"/api/trees","memory.rss":"1913384960","memory.heapUsed":"312230256","memory.heapTotal":"326922240"},"startTime":1763888716628,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1003,"timestamp":119139104161,"id":1218,"parentId":3,"tags":{"inputPage":"/tree/page"},"startTime":1763888717757,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22673,"timestamp":119139103717,"id":1217,"tags":{"url":"/tree?treeId=cmibhsdmj001n13oucuenv71n&_rsc=vusbg"},"startTime":1763888717756,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119139126432,"id":1219,"parentId":1217,"tags":{"url":"/tree?treeId=cmibhsdmj001n13oucuenv71n&_rsc=vusbg","memory.rss":"1917173760","memory.heapUsed":"310288776","memory.heapTotal":"329019392"},"startTime":1763888717779,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1058,"timestamp":119139833474,"id":1221,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888718486,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18402,"timestamp":119139833128,"id":1220,"tags":{"url":"/api/trees"},"startTime":1763888718485,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119139851584,"id":1222,"parentId":1220,"tags":{"url":"/api/trees","memory.rss":"1917652992","memory.heapUsed":"314175968","memory.heapTotal":"329019392"},"startTime":1763888718504,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1145,"timestamp":119139855894,"id":1224,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888718508,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":19764,"timestamp":119139855144,"id":1223,"tags":{"url":"/api/trees"},"startTime":1763888718507,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":119139874985,"id":1225,"parentId":1223,"tags":{"url":"/api/trees","memory.rss":"1917915136","memory.heapUsed":"315299112","memory.heapTotal":"329281536"},"startTime":1763888718527,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":218,"timestamp":119141353144,"id":1226,"parentId":3,"tags":{"inputPage":"/members/cmibhsdnq002t13oue7mgpdjp"},"startTime":1763888720005,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":140,"timestamp":119141353386,"id":1227,"parentId":3,"tags":{"inputPage":"/members/cmibhsdnq002t13oue7mgpdjp"},"startTime":1763888720006,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":138,"timestamp":119141353924,"id":1228,"parentId":3,"tags":{"inputPage":"/members/cmibhsdnq002t13oue7mgpdjp"},"startTime":1763888720006,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":121,"timestamp":119141354077,"id":1229,"parentId":3,"tags":{"inputPage":"/members/cmibhsdnq002t13oue7mgpdjp"},"startTime":1763888720006,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":895,"timestamp":119141355068,"id":1231,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888720007,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24520,"timestamp":119141354683,"id":1230,"tags":{"url":"/members/cmibhsdnq002t13oue7mgpdjp?_rsc=1woqb"},"startTime":1763888720007,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119141379314,"id":1232,"parentId":1230,"tags":{"url":"/members/cmibhsdnq002t13oue7mgpdjp?_rsc=1woqb","memory.rss":"1917218816","memory.heapUsed":"305175864","memory.heapTotal":"328585216"},"startTime":1763888720032,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":448,"timestamp":119141395505,"id":1234,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888720048,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11953,"timestamp":119141395220,"id":1233,"tags":{"url":"/api/trees"},"startTime":1763888720047,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":119141407211,"id":1235,"parentId":1233,"tags":{"url":"/api/trees","memory.rss":"1917218816","memory.heapUsed":"307000128","memory.heapTotal":"328585216"},"startTime":1763888720059,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":414,"timestamp":119141426394,"id":1236,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888720079,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":112,"timestamp":119141426827,"id":1237,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888720079,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":121,"timestamp":119141427456,"id":1238,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888720080,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":372,"timestamp":119141427591,"id":1239,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888720080,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":470,"timestamp":119141428780,"id":1241,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888720081,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17097,"timestamp":119141428483,"id":1240,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888720081,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119141445621,"id":1242,"parentId":1240,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1917452288","memory.heapUsed":"309352072","memory.heapTotal":"328818688"},"startTime":1763888720098,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":732,"timestamp":119141701940,"id":1244,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888720354,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11821,"timestamp":119141701649,"id":1243,"tags":{"url":"/api/trees"},"startTime":1763888720354,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119141713522,"id":1245,"parentId":1243,"tags":{"url":"/api/trees","memory.rss":"1917452288","memory.heapUsed":"305526192","memory.heapTotal":"328818688"},"startTime":1763888720366,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":667,"timestamp":119141716057,"id":1247,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888720368,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12436,"timestamp":119141715700,"id":1246,"tags":{"url":"/api/trees"},"startTime":1763888720368,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119141728182,"id":1248,"parentId":1246,"tags":{"url":"/api/trees","memory.rss":"1917452288","memory.heapUsed":"306628176","memory.heapTotal":"328818688"},"startTime":1763888720380,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":901,"timestamp":119144220084,"id":1250,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888722872,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25350,"timestamp":119144219705,"id":1249,"tags":{"url":"/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE&_rsc=1xob3"},"startTime":1763888722872,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119144245098,"id":1251,"parentId":1249,"tags":{"url":"/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE&_rsc=1xob3","memory.rss":"1917460480","memory.heapUsed":"309637864","memory.heapTotal":"328818688"},"startTime":1763888722897,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":785,"timestamp":119144260405,"id":1253,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888722913,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14709,"timestamp":119144259875,"id":1252,"tags":{"url":"/api/trees"},"startTime":1763888722912,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119144274623,"id":1254,"parentId":1252,"tags":{"url":"/api/trees","memory.rss":"1917460480","memory.heapUsed":"306877200","memory.heapTotal":"328818688"},"startTime":1763888722927,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":148,"timestamp":119144288635,"id":1255,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888722941,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":107,"timestamp":119144288801,"id":1256,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888722941,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":120,"timestamp":119144289421,"id":1257,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888722942,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":156,"timestamp":119144289553,"id":1258,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888722942,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":434,"timestamp":119144290472,"id":1260,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888722943,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16354,"timestamp":119144290179,"id":1259,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888722942,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119144306576,"id":1261,"parentId":1259,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1917460480","memory.heapUsed":"308978448","memory.heapTotal":"328818688"},"startTime":1763888722959,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":481,"timestamp":119144569906,"id":1263,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888723222,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10456,"timestamp":119144569539,"id":1262,"tags":{"url":"/api/trees"},"startTime":1763888723222,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119144580032,"id":1264,"parentId":1262,"tags":{"url":"/api/trees","memory.rss":"1917927424","memory.heapUsed":"310996504","memory.heapTotal":"329281536"},"startTime":1763888723232,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":441,"timestamp":119144581044,"id":1266,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888723233,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10261,"timestamp":119144580799,"id":1265,"tags":{"url":"/api/trees"},"startTime":1763888723233,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119144591104,"id":1267,"parentId":1265,"tags":{"url":"/api/trees","memory.rss":"1918005248","memory.heapUsed":"312060256","memory.heapTotal":"329281536"},"startTime":1763888723243,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":745,"timestamp":119151524110,"id":1269,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888730176,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13903,"timestamp":119151523717,"id":1268,"tags":{"url":"/api/trees"},"startTime":1763888730176,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119151537651,"id":1270,"parentId":1268,"tags":{"url":"/api/trees","memory.rss":"1902116864","memory.heapUsed":"296771376","memory.heapTotal":"310099968"},"startTime":1763888730190,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":471,"timestamp":119151540044,"id":1272,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888730192,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12341,"timestamp":119151539701,"id":1271,"tags":{"url":"/api/trees"},"startTime":1763888730192,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":19,"timestamp":119151552083,"id":1273,"parentId":1271,"tags":{"url":"/api/trees","memory.rss":"1903292416","memory.heapUsed":"297261896","memory.heapTotal":"313245696"},"startTime":1763888730204,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":467,"timestamp":119151553459,"id":1275,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888730205,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":170,"timestamp":119151560349,"id":1276,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888730212,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":112,"timestamp":119151560540,"id":1277,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888730212,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":217,"timestamp":119151562753,"id":1278,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888730215,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":130,"timestamp":119151562995,"id":1279,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888730215,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":997,"timestamp":119151564085,"id":1281,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888730216,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21231,"timestamp":119151553148,"id":1274,"tags":{"url":"/api/trees"},"startTime":1763888730205,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119151574418,"id":1282,"parentId":1274,"tags":{"url":"/api/trees","memory.rss":"1904476160","memory.heapUsed":"298508640","memory.heapTotal":"313245696"},"startTime":1763888730226,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24448,"timestamp":119151563650,"id":1280,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888730216,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119151588142,"id":1283,"parentId":1280,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1904553984","memory.heapUsed":"298328736","memory.heapTotal":"313245696"},"startTime":1763888730240,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":592,"timestamp":119182044735,"id":1285,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888760696,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23117,"timestamp":119182044324,"id":1284,"tags":{"url":"/api/trees"},"startTime":1763888760695,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119182067502,"id":1286,"parentId":1284,"tags":{"url":"/api/trees","memory.rss":"1904553984","memory.heapUsed":"298520272","memory.heapTotal":"310099968"},"startTime":1763888760718,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":707,"timestamp":119205656886,"id":1288,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888784307,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17522,"timestamp":119205656596,"id":1287,"tags":{"url":"/api/trees"},"startTime":1763888784307,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119205674160,"id":1289,"parentId":1287,"tags":{"url":"/api/trees","memory.rss":"1904553984","memory.heapUsed":"299100536","memory.heapTotal":"311148544"},"startTime":1763888784324,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1568,"timestamp":119206326906,"id":1291,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888784977,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22961,"timestamp":119206326177,"id":1290,"tags":{"url":"/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE&_rsc=1xob3"},"startTime":1763888784976,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119206349181,"id":1292,"parentId":1290,"tags":{"url":"/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE&_rsc=1xob3","memory.rss":"1904832512","memory.heapUsed":"300291024","memory.heapTotal":"311382016"},"startTime":1763888784999,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":911,"timestamp":119206410461,"id":1294,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888785061,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11982,"timestamp":119206410166,"id":1293,"tags":{"url":"/api/trees"},"startTime":1763888785060,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119206422184,"id":1295,"parentId":1293,"tags":{"url":"/api/trees","memory.rss":"1904840704","memory.heapUsed":"300713176","memory.heapTotal":"310333440"},"startTime":1763888785072,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":444,"timestamp":119206424104,"id":1297,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888785074,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10178,"timestamp":119206423815,"id":1296,"tags":{"url":"/api/trees"},"startTime":1763888785074,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119206434029,"id":1298,"parentId":1296,"tags":{"url":"/api/trees","memory.rss":"1904840704","memory.heapUsed":"301156416","memory.heapTotal":"310333440"},"startTime":1763888785084,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":403,"timestamp":119206435787,"id":1300,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888785086,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10209,"timestamp":119206435511,"id":1299,"tags":{"url":"/api/trees"},"startTime":1763888785086,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119206445753,"id":1301,"parentId":1299,"tags":{"url":"/api/trees","memory.rss":"1904840704","memory.heapUsed":"301165264","memory.heapTotal":"311382016"},"startTime":1763888785096,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":201,"timestamp":119206497636,"id":1302,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888785148,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":119,"timestamp":119206497858,"id":1303,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888785148,"traceId":"e9a6c25356b91814"}] +[{"name":"ensure-page","duration":220,"timestamp":119206499478,"id":1304,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888785150,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":117,"timestamp":119206499720,"id":1305,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888785150,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1297,"timestamp":119206501295,"id":1307,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888785151,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":19613,"timestamp":119206500740,"id":1306,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888785151,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119206520391,"id":1308,"parentId":1306,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1904861184","memory.heapUsed":"302279872","memory.heapTotal":"310333440"},"startTime":1763888785170,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":912,"timestamp":119250903075,"id":1310,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888829552,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21144,"timestamp":119250902549,"id":1309,"tags":{"url":"/api/trees"},"startTime":1763888829551,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119250923756,"id":1311,"parentId":1309,"tags":{"url":"/api/trees","memory.rss":"1905225728","memory.heapUsed":"303069128","memory.heapTotal":"313479168"},"startTime":1763888829572,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":606,"timestamp":119251669823,"id":1313,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888830318,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12765,"timestamp":119251669497,"id":1312,"tags":{"url":"/api/trees"},"startTime":1763888830318,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":13,"timestamp":119251682376,"id":1314,"parentId":1312,"tags":{"url":"/api/trees","memory.rss":"1905225728","memory.heapUsed":"303047400","memory.heapTotal":"310333440"},"startTime":1763888830331,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":842,"timestamp":119251683749,"id":1316,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888830332,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18438,"timestamp":119251683393,"id":1315,"tags":{"url":"/api/trees"},"startTime":1763888830332,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119251701885,"id":1317,"parentId":1315,"tags":{"url":"/api/trees","memory.rss":"1905704960","memory.heapUsed":"304038016","memory.heapTotal":"310796288"},"startTime":1763888830350,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":515,"timestamp":119251703084,"id":1319,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888830352,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16995,"timestamp":119251702780,"id":1318,"tags":{"url":"/api/trees"},"startTime":1763888830351,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119251719829,"id":1320,"parentId":1318,"tags":{"url":"/api/trees","memory.rss":"1905704960","memory.heapUsed":"304401864","memory.heapTotal":"311844864"},"startTime":1763888830368,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":180,"timestamp":119251721982,"id":1321,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888830370,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":145,"timestamp":119251722186,"id":1322,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888830371,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":285,"timestamp":119251724369,"id":1323,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888830373,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":318,"timestamp":119251724677,"id":1324,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888830373,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":595,"timestamp":119251726004,"id":1326,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888830375,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21650,"timestamp":119251725609,"id":1325,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888830374,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119251747305,"id":1327,"parentId":1325,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1905713152","memory.heapUsed":"304858552","memory.heapTotal":"311844864"},"startTime":1763888830396,"traceId":"e9a6c25356b91814"},{"name":"client-hmr-latency","duration":67000,"timestamp":119255410381,"id":1328,"parentId":3,"tags":{"updatedModules":["[project]/Documents/go-new/chinese-family-tree/app/members/[id]/page.tsx [app-client]"],"page":"/members/cmibhsdnq002t13oue7mgpdjp","isPageHidden":false},"startTime":1763888834177,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":794,"timestamp":119270102789,"id":1330,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888848751,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20351,"timestamp":119270102440,"id":1329,"tags":{"url":"/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE&spouseId=cmibhsdn8002d13ou104ueiz4&_rsc=1xob3"},"startTime":1763888848750,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119270122821,"id":1331,"parentId":1329,"tags":{"url":"/members/new?childId=cmibhsdnq002t13oue7mgpdjp&generation=3&gender=MALE&spouseId=cmibhsdn8002d13ou104ueiz4&_rsc=1xob3","memory.rss":"1906147328","memory.heapUsed":"306844880","memory.heapTotal":"311382016"},"startTime":1763888848771,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":534,"timestamp":119270187948,"id":1333,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888848836,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10888,"timestamp":119270187660,"id":1332,"tags":{"url":"/api/trees"},"startTime":1763888848836,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119270198594,"id":1334,"parentId":1332,"tags":{"url":"/api/trees","memory.rss":"1906147328","memory.heapUsed":"307208784","memory.heapTotal":"311382016"},"startTime":1763888848846,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":499,"timestamp":119270200484,"id":1336,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888848848,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11608,"timestamp":119270200167,"id":1335,"tags":{"url":"/api/trees"},"startTime":1763888848848,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119270211822,"id":1337,"parentId":1335,"tags":{"url":"/api/trees","memory.rss":"1906147328","memory.heapUsed":"307154896","memory.heapTotal":"312692736"},"startTime":1763888848860,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":450,"timestamp":119270213410,"id":1339,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888848861,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12213,"timestamp":119270213099,"id":1338,"tags":{"url":"/api/trees"},"startTime":1763888848861,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119270225382,"id":1340,"parentId":1338,"tags":{"url":"/api/trees","memory.rss":"1906278400","memory.heapUsed":"307665208","memory.heapTotal":"311906304"},"startTime":1763888848873,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":188,"timestamp":119270278832,"id":1341,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888848927,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":199,"timestamp":119270279042,"id":1342,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888848927,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":589,"timestamp":119270280093,"id":1343,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888848928,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":234,"timestamp":119270280710,"id":1344,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888848929,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":953,"timestamp":119270284796,"id":1346,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888848933,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20498,"timestamp":119270284333,"id":1345,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888848932,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119270304874,"id":1347,"parentId":1345,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1906561024","memory.heapUsed":"308725768","memory.heapTotal":"313217024"},"startTime":1763888848953,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":611,"timestamp":119276510382,"id":1349,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888855158,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13770,"timestamp":119276510010,"id":1348,"tags":{"url":"/api/trees"},"startTime":1763888855158,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119276523833,"id":1350,"parentId":1348,"tags":{"url":"/api/trees","memory.rss":"1906569216","memory.heapUsed":"308978648","memory.heapTotal":"312954880"},"startTime":1763888855171,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":510,"timestamp":119276525760,"id":1352,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888855173,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17131,"timestamp":119276525416,"id":1351,"tags":{"url":"/api/trees"},"startTime":1763888855173,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119276542585,"id":1353,"parentId":1351,"tags":{"url":"/api/trees","memory.rss":"1906614272","memory.heapUsed":"309455784","memory.heapTotal":"314003456"},"startTime":1763888855190,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":499,"timestamp":119276543890,"id":1355,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888855192,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":181,"timestamp":119276551718,"id":1356,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888855199,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":136,"timestamp":119276551922,"id":1357,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888855200,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":201,"timestamp":119276554645,"id":1358,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888855202,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":139,"timestamp":119276554870,"id":1359,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888855203,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16329,"timestamp":119276543570,"id":1354,"tags":{"url":"/api/trees"},"startTime":1763888855191,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119276559945,"id":1362,"parentId":1354,"tags":{"url":"/api/trees","memory.rss":"1906663424","memory.heapUsed":"310433528","memory.heapTotal":"313217024"},"startTime":1763888855208,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":3341,"timestamp":119276557985,"id":1361,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888855206,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":25484,"timestamp":119276557561,"id":1360,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888855205,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119276583098,"id":1363,"parentId":1360,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1907068928","memory.heapUsed":"311011192","memory.heapTotal":"315052032"},"startTime":1763888855231,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":891,"timestamp":119280631447,"id":1365,"parentId":3,"tags":{"inputPage":"/tree/page"},"startTime":1763888859279,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":19822,"timestamp":119280631088,"id":1364,"tags":{"url":"/tree?treeId=cmibhsdmj001n13oucuenv71n&_rsc=1xob3"},"startTime":1763888859279,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":119280650950,"id":1366,"parentId":1364,"tags":{"url":"/tree?treeId=cmibhsdmj001n13oucuenv71n&_rsc=1xob3","memory.rss":"1908117504","memory.heapUsed":"311256600","memory.heapTotal":"314789888"},"startTime":1763888859298,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":588,"timestamp":119280707211,"id":1368,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888859355,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13687,"timestamp":119280706910,"id":1367,"tags":{"url":"/api/trees"},"startTime":1763888859354,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119280720678,"id":1369,"parentId":1367,"tags":{"url":"/api/trees","memory.rss":"1908260864","memory.heapUsed":"312306872","memory.heapTotal":"315052032"},"startTime":1763888859368,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1685,"timestamp":119280750098,"id":1371,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888859398,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":18978,"timestamp":119280749701,"id":1370,"tags":{"url":"/api/trees"},"startTime":1763888859397,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119280768726,"id":1372,"parentId":1370,"tags":{"url":"/api/trees","memory.rss":"1909600256","memory.heapUsed":"313212288","memory.heapTotal":"317546496"},"startTime":1763888859416,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":276,"timestamp":119286558331,"id":1373,"parentId":3,"tags":{"inputPage":"/members/cmibhsdo5003313ouqlidr0m9"},"startTime":1763888865206,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":139,"timestamp":119286558630,"id":1374,"parentId":3,"tags":{"inputPage":"/members/cmibhsdo5003313ouqlidr0m9"},"startTime":1763888865206,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":161,"timestamp":119286559200,"id":1375,"parentId":3,"tags":{"inputPage":"/members/cmibhsdo5003313ouqlidr0m9"},"startTime":1763888865207,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":142,"timestamp":119286559378,"id":1376,"parentId":3,"tags":{"inputPage":"/members/cmibhsdo5003313ouqlidr0m9"},"startTime":1763888865207,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":9541,"timestamp":119286560590,"id":1378,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888865208,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":151631,"timestamp":119286560208,"id":1377,"tags":{"url":"/members/cmibhsdo5003313ouqlidr0m9?_rsc=1woqb"},"startTime":1763888865208,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119286711882,"id":1379,"parentId":1377,"tags":{"url":"/members/cmibhsdo5003313ouqlidr0m9?_rsc=1woqb","memory.rss":"1938784256","memory.heapUsed":"335104928","memory.heapTotal":"354619392"},"startTime":1763888865359,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":788,"timestamp":119286750611,"id":1381,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888865398,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17291,"timestamp":119286750097,"id":1380,"tags":{"url":"/api/trees"},"startTime":1763888865397,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119286767434,"id":1382,"parentId":1380,"tags":{"url":"/api/trees","memory.rss":"1935597568","memory.heapUsed":"321996096","memory.heapTotal":"351391744"},"startTime":1763888865415,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":588,"timestamp":119286769188,"id":1384,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888865416,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12704,"timestamp":119286768852,"id":1383,"tags":{"url":"/api/trees"},"startTime":1763888865416,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119286781615,"id":1385,"parentId":1383,"tags":{"url":"/api/trees","memory.rss":"1935597568","memory.heapUsed":"323126280","memory.heapTotal":"351391744"},"startTime":1763888865429,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":907,"timestamp":119286782784,"id":1387,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888865430,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13372,"timestamp":119286782446,"id":1386,"tags":{"url":"/api/trees"},"startTime":1763888865430,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119286795858,"id":1388,"parentId":1386,"tags":{"url":"/api/trees","memory.rss":"1935597568","memory.heapUsed":"324235920","memory.heapTotal":"351391744"},"startTime":1763888865443,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":209,"timestamp":119286795975,"id":1389,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888865443,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":141,"timestamp":119286796211,"id":1390,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888865444,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":121,"timestamp":119286796714,"id":1391,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888865444,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":106,"timestamp":119286796849,"id":1392,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888865444,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":427,"timestamp":119286797669,"id":1394,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888865445,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":43109,"timestamp":119286797368,"id":1393,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888865445,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":119286840566,"id":1395,"parentId":1393,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1935880192","memory.heapUsed":"326308752","memory.heapTotal":"351625216"},"startTime":1763888865488,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":987,"timestamp":119288097922,"id":1397,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888866745,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20843,"timestamp":119288097406,"id":1396,"tags":{"url":"/members/new?childId=cmibhsdo5003313ouqlidr0m9&generation=4&gender=FEMALE&spouseId=cmibhsdnm002n13oumlu80sqo&_rsc=16i99"},"startTime":1763888866745,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119288118290,"id":1398,"parentId":1396,"tags":{"url":"/members/new?childId=cmibhsdo5003313ouqlidr0m9&generation=4&gender=FEMALE&spouseId=cmibhsdnm002n13oumlu80sqo&_rsc=16i99","memory.rss":"1938341888","memory.heapUsed":"329241856","memory.heapTotal":"351625216"},"startTime":1763888866766,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":491,"timestamp":119288176892,"id":1400,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888866824,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":9876,"timestamp":119288176625,"id":1399,"tags":{"url":"/api/trees"},"startTime":1763888866824,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119288186543,"id":1401,"parentId":1399,"tags":{"url":"/api/trees","memory.rss":"1938345984","memory.heapUsed":"325061720","memory.heapTotal":"351625216"},"startTime":1763888866834,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":404,"timestamp":119288187756,"id":1403,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888866835,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10386,"timestamp":119288187501,"id":1402,"tags":{"url":"/api/trees"},"startTime":1763888866835,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119288197920,"id":1404,"parentId":1402,"tags":{"url":"/api/trees","memory.rss":"1938345984","memory.heapUsed":"326095024","memory.heapTotal":"351625216"},"startTime":1763888866845,"traceId":"e9a6c25356b91814"}] +[{"name":"ensure-page","duration":434,"timestamp":119288199261,"id":1406,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888866847,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10043,"timestamp":119288198992,"id":1405,"tags":{"url":"/api/trees"},"startTime":1763888866846,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119288209091,"id":1407,"parentId":1405,"tags":{"url":"/api/trees","memory.rss":"1938374656","memory.heapUsed":"327193800","memory.heapTotal":"351625216"},"startTime":1763888866856,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":166,"timestamp":119288272833,"id":1408,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888866920,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":121,"timestamp":119288273019,"id":1409,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888866920,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":180,"timestamp":119288273688,"id":1410,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888866921,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":123,"timestamp":119288273886,"id":1411,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888866921,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":612,"timestamp":119288274717,"id":1413,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888866922,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17551,"timestamp":119288274417,"id":1412,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888866922,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119288292016,"id":1414,"parentId":1412,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1940054016","memory.heapUsed":"329196680","memory.heapTotal":"351625216"},"startTime":1763888866939,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":729,"timestamp":119298241848,"id":1416,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888876889,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14738,"timestamp":119298241450,"id":1415,"tags":{"url":"/api/trees"},"startTime":1763888876888,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119298256240,"id":1417,"parentId":1415,"tags":{"url":"/api/trees","memory.rss":"1941012480","memory.heapUsed":"330420632","memory.heapTotal":"351625216"},"startTime":1763888876903,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":5744,"timestamp":119298257726,"id":1419,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888876905,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20458,"timestamp":119298257306,"id":1418,"tags":{"url":"/api/trees"},"startTime":1763888876904,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119298277813,"id":1420,"parentId":1418,"tags":{"url":"/api/trees","memory.rss":"1941155840","memory.heapUsed":"327396824","memory.heapTotal":"337731584"},"startTime":1763888876925,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1043,"timestamp":119298279442,"id":1422,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888876926,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":202,"timestamp":119298288208,"id":1423,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888876935,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":162,"timestamp":119298288438,"id":1424,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888876935,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2345,"timestamp":119298290427,"id":1425,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888876937,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":193,"timestamp":119298292803,"id":1426,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888876940,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17238,"timestamp":119298279109,"id":1421,"tags":{"url":"/api/trees"},"startTime":1763888876926,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119298296394,"id":1429,"parentId":1421,"tags":{"url":"/api/trees","memory.rss":"1941618688","memory.heapUsed":"328229352","memory.heapTotal":"346845184"},"startTime":1763888876943,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":2178,"timestamp":119298294642,"id":1428,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888876942,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":47106,"timestamp":119298294159,"id":1427,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888876941,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119298341329,"id":1430,"parentId":1427,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1941626880","memory.heapUsed":"329843680","memory.heapTotal":"346845184"},"startTime":1763888876988,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":577,"timestamp":119307565223,"id":1432,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888886212,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12495,"timestamp":119307564888,"id":1431,"tags":{"url":"/api/trees"},"startTime":1763888886211,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119307577453,"id":1433,"parentId":1431,"tags":{"url":"/api/trees","memory.rss":"1941635072","memory.heapUsed":"330982416","memory.heapTotal":"346845184"},"startTime":1763888886224,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":445,"timestamp":119307579734,"id":1435,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888886226,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12590,"timestamp":119307579455,"id":1434,"tags":{"url":"/api/trees"},"startTime":1763888886226,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119307592110,"id":1436,"parentId":1434,"tags":{"url":"/api/trees","memory.rss":"1941712896","memory.heapUsed":"332009376","memory.heapTotal":"346845184"},"startTime":1763888886239,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":880,"timestamp":119310857649,"id":1438,"parentId":3,"tags":{"inputPage":"/members/page"},"startTime":1763888889504,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20116,"timestamp":119310857287,"id":1437,"tags":{"url":"/members?treeId=cmibhsdmj001n13oucuenv71n&_rsc=1woqb"},"startTime":1763888889504,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":41,"timestamp":119310877481,"id":1439,"parentId":1437,"tags":{"url":"/members?treeId=cmibhsdmj001n13oucuenv71n&_rsc=1woqb","memory.rss":"1943375872","memory.heapUsed":"330699904","memory.heapTotal":"337932288"},"startTime":1763888889524,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":927,"timestamp":119311197638,"id":1441,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888889844,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12493,"timestamp":119311197328,"id":1440,"tags":{"url":"/api/trees"},"startTime":1763888889844,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119311209856,"id":1442,"parentId":1440,"tags":{"url":"/api/trees","memory.rss":"1943834624","memory.heapUsed":"331752000","memory.heapTotal":"340553728"},"startTime":1763888889856,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":429,"timestamp":119311211001,"id":1444,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888889857,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10209,"timestamp":119311210702,"id":1443,"tags":{"url":"/api/trees"},"startTime":1763888889857,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119311220967,"id":1445,"parentId":1443,"tags":{"url":"/api/trees","memory.rss":"1943928832","memory.heapUsed":"332809184","memory.heapTotal":"340815872"},"startTime":1763888889867,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":212,"timestamp":119315077079,"id":1446,"parentId":3,"tags":{"inputPage":"/members/cmibhsdmr001x13ouhpw6eiot"},"startTime":1763888893723,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":131,"timestamp":119315077313,"id":1447,"parentId":3,"tags":{"inputPage":"/members/cmibhsdmr001x13ouhpw6eiot"},"startTime":1763888893724,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":136,"timestamp":119315077784,"id":1448,"parentId":3,"tags":{"inputPage":"/members/cmibhsdmr001x13ouhpw6eiot"},"startTime":1763888893724,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":116,"timestamp":119315077936,"id":1449,"parentId":3,"tags":{"inputPage":"/members/cmibhsdmr001x13ouhpw6eiot"},"startTime":1763888893724,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":863,"timestamp":119315079069,"id":1451,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888893725,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":24125,"timestamp":119315078711,"id":1450,"tags":{"url":"/members/cmibhsdmr001x13ouhpw6eiot?_rsc=1vf4i"},"startTime":1763888893725,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119315102881,"id":1452,"parentId":1450,"tags":{"url":"/members/cmibhsdmr001x13ouhpw6eiot?_rsc=1vf4i","memory.rss":"1943941120","memory.heapUsed":"332456040","memory.heapTotal":"340815872"},"startTime":1763888893749,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":581,"timestamp":119315139492,"id":1454,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888893786,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10674,"timestamp":119315139143,"id":1453,"tags":{"url":"/api/trees"},"startTime":1763888893785,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119315149884,"id":1455,"parentId":1453,"tags":{"url":"/api/trees","memory.rss":"1943941120","memory.heapUsed":"333504624","memory.heapTotal":"340815872"},"startTime":1763888893796,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":422,"timestamp":119315150830,"id":1457,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888893797,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12163,"timestamp":119315150563,"id":1456,"tags":{"url":"/api/trees"},"startTime":1763888893797,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119315162791,"id":1458,"parentId":1456,"tags":{"url":"/api/trees","memory.rss":"1943941120","memory.heapUsed":"334529560","memory.heapTotal":"341078016"},"startTime":1763888893809,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":453,"timestamp":119315164930,"id":1460,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888893811,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12299,"timestamp":119315164609,"id":1459,"tags":{"url":"/api/trees"},"startTime":1763888893811,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119315176953,"id":1461,"parentId":1459,"tags":{"url":"/api/trees","memory.rss":"1943949312","memory.heapUsed":"334231960","memory.heapTotal":"341340160"},"startTime":1763888893823,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":163,"timestamp":119315192064,"id":1462,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888893838,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":133,"timestamp":119315192247,"id":1463,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888893839,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":375,"timestamp":119315193156,"id":1464,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888893839,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":238,"timestamp":119315193587,"id":1465,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888893840,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":437,"timestamp":119315194601,"id":1467,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888893841,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17631,"timestamp":119315194287,"id":1466,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888893841,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119315211980,"id":1468,"parentId":1466,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1943953408","memory.heapUsed":"335049616","memory.heapTotal":"341602304"},"startTime":1763888893858,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":874,"timestamp":119318838721,"id":1470,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888897485,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20011,"timestamp":119318838323,"id":1469,"tags":{"url":"/members/new?fatherId=cmibhsdmr001x13ouhpw6eiot&generation=3&_rsc=uii69"},"startTime":1763888897485,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119318858378,"id":1471,"parentId":1469,"tags":{"url":"/members/new?fatherId=cmibhsdmr001x13ouhpw6eiot&generation=3&_rsc=uii69","memory.rss":"1943953408","memory.heapUsed":"335278504","memory.heapTotal":"346583040"},"startTime":1763888897505,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":558,"timestamp":119318915466,"id":1473,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888897562,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10437,"timestamp":119318915028,"id":1472,"tags":{"url":"/api/trees"},"startTime":1763888897561,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119318925524,"id":1474,"parentId":1472,"tags":{"url":"/api/trees","memory.rss":"1944875008","memory.heapUsed":"337246648","memory.heapTotal":"347504640"},"startTime":1763888897572,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":492,"timestamp":119318926731,"id":1476,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888897573,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11278,"timestamp":119318926452,"id":1475,"tags":{"url":"/api/trees"},"startTime":1763888897573,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119318937802,"id":1477,"parentId":1475,"tags":{"url":"/api/trees","memory.rss":"1944875008","memory.heapUsed":"338272616","memory.heapTotal":"347766784"},"startTime":1763888897584,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":456,"timestamp":119318939009,"id":1479,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888897585,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10290,"timestamp":119318938698,"id":1478,"tags":{"url":"/api/trees"},"startTime":1763888897585,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119318949031,"id":1480,"parentId":1478,"tags":{"url":"/api/trees","memory.rss":"1944875008","memory.heapUsed":"339300408","memory.heapTotal":"348028928"},"startTime":1763888897595,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":162,"timestamp":119319000705,"id":1481,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888897647,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":110,"timestamp":119319000886,"id":1482,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888897647,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":148,"timestamp":119319001589,"id":1483,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888897648,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":160,"timestamp":119319001755,"id":1484,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888897648,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":642,"timestamp":119319003588,"id":1486,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888897650,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17316,"timestamp":119319003074,"id":1485,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888897649,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119319020440,"id":1487,"parentId":1485,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1944879104","memory.heapUsed":"338676952","memory.heapTotal":"348815360"},"startTime":1763888897667,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":539,"timestamp":119333957349,"id":1489,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888912603,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12712,"timestamp":119333957056,"id":1488,"tags":{"url":"/api/trees"},"startTime":1763888912603,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119333969826,"id":1490,"parentId":1488,"tags":{"url":"/api/trees","memory.rss":"1944883200","memory.heapUsed":"339904168","memory.heapTotal":"348815360"},"startTime":1763888912616,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":543,"timestamp":119333971740,"id":1492,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888912617,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12562,"timestamp":119333971382,"id":1491,"tags":{"url":"/api/trees"},"startTime":1763888912617,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":17,"timestamp":119333984032,"id":1493,"parentId":1491,"tags":{"url":"/api/trees","memory.rss":"1944883200","memory.heapUsed":"340932520","memory.heapTotal":"348815360"},"startTime":1763888912630,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":437,"timestamp":119333986377,"id":1495,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888912632,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":217,"timestamp":119333994525,"id":1496,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888912640,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1535,"timestamp":119333994768,"id":1497,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888912640,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":164,"timestamp":119333997288,"id":1498,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888912643,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":131,"timestamp":119333997470,"id":1499,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888912643,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13383,"timestamp":119333986103,"id":1494,"tags":{"url":"/api/trees"},"startTime":1763888912632,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119333999541,"id":1500,"parentId":1494,"tags":{"url":"/api/trees","memory.rss":"1944887296","memory.heapUsed":"339819936","memory.heapTotal":"345407488"},"startTime":1763888912645,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":503,"timestamp":119334000265,"id":1502,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888912646,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22402,"timestamp":119333999928,"id":1501,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888912646,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119334022391,"id":1503,"parentId":1501,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1944887296","memory.heapUsed":"340678944","memory.heapTotal":"343834624"},"startTime":1763888912668,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":943,"timestamp":119337987750,"id":1505,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888916633,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17109,"timestamp":119337987410,"id":1504,"tags":{"url":"/members/new?fatherId=cmibhsdmr001x13ouhpw6eiot&generation=3&_rsc=uii69"},"startTime":1763888916633,"traceId":"e9a6c25356b91814"}] +[{"name":"memory-usage","duration":5,"timestamp":119338004899,"id":1506,"parentId":1504,"tags":{"url":"/members/new?fatherId=cmibhsdmr001x13ouhpw6eiot&generation=3&_rsc=uii69","memory.rss":"1944895488","memory.heapUsed":"341655704","memory.heapTotal":"344883200"},"startTime":1763888916650,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":559,"timestamp":119338061679,"id":1508,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888916707,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11644,"timestamp":119338061398,"id":1507,"tags":{"url":"/api/trees"},"startTime":1763888916707,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119338073102,"id":1509,"parentId":1507,"tags":{"url":"/api/trees","memory.rss":"1944895488","memory.heapUsed":"341988968","memory.heapTotal":"346193920"},"startTime":1763888916719,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":499,"timestamp":119338074886,"id":1511,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888916720,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10430,"timestamp":119338074598,"id":1510,"tags":{"url":"/api/trees"},"startTime":1763888916720,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":2,"timestamp":119338085070,"id":1512,"parentId":1510,"tags":{"url":"/api/trees","memory.rss":"1944895488","memory.heapUsed":"341933824","memory.heapTotal":"345669632"},"startTime":1763888916731,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":641,"timestamp":119338086338,"id":1514,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888916732,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11945,"timestamp":119338086056,"id":1513,"tags":{"url":"/api/trees"},"startTime":1763888916732,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119338098046,"id":1515,"parentId":1513,"tags":{"url":"/api/trees","memory.rss":"1944907776","memory.heapUsed":"342485168","memory.heapTotal":"346193920"},"startTime":1763888916744,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":155,"timestamp":119338149806,"id":1516,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888916795,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":108,"timestamp":119338149981,"id":1517,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888916796,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":130,"timestamp":119338150611,"id":1518,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888916796,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":179,"timestamp":119338150756,"id":1519,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888916796,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":512,"timestamp":119338152277,"id":1521,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888916798,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":16766,"timestamp":119338151973,"id":1520,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888916798,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":119338168832,"id":1522,"parentId":1520,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1944907776","memory.heapUsed":"344002568","memory.heapTotal":"349601792"},"startTime":1763888916814,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":509,"timestamp":119345799215,"id":1524,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888924444,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14133,"timestamp":119345798889,"id":1523,"tags":{"url":"/api/trees"},"startTime":1763888924444,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":119345813104,"id":1525,"parentId":1523,"tags":{"url":"/api/trees","memory.rss":"1944907776","memory.heapUsed":"343564904","memory.heapTotal":"347242496"},"startTime":1763888924458,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":554,"timestamp":119345814679,"id":1527,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888924460,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15183,"timestamp":119345814215,"id":1526,"tags":{"url":"/api/trees"},"startTime":1763888924459,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119345829456,"id":1528,"parentId":1526,"tags":{"url":"/api/trees","memory.rss":"1944907776","memory.heapUsed":"344090936","memory.heapTotal":"348815360"},"startTime":1763888924475,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":496,"timestamp":119345830911,"id":1530,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888924476,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":13278,"timestamp":119345830597,"id":1529,"tags":{"url":"/api/trees"},"startTime":1763888924476,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":9,"timestamp":119345843957,"id":1531,"parentId":1529,"tags":{"url":"/api/trees","memory.rss":"1944907776","memory.heapUsed":"344757248","memory.heapTotal":"348028928"},"startTime":1763888924489,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":184,"timestamp":119345844236,"id":1532,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888924490,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":174,"timestamp":119345844441,"id":1533,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888924490,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":152,"timestamp":119345845011,"id":1534,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888924490,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":139,"timestamp":119345845179,"id":1535,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888924490,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":466,"timestamp":119345846835,"id":1537,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888924492,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":41660,"timestamp":119345846489,"id":1536,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888924492,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119345888215,"id":1538,"parentId":1536,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1944915968","memory.heapUsed":"345619320","memory.heapTotal":"348815360"},"startTime":1763888924533,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":644,"timestamp":119372936979,"id":1540,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888951581,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":11269,"timestamp":119372936657,"id":1539,"tags":{"url":"/api/trees"},"startTime":1763888951581,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119372947977,"id":1541,"parentId":1539,"tags":{"url":"/api/trees","memory.rss":"1945174016","memory.heapUsed":"346281480","memory.heapTotal":"352223232"},"startTime":1763888951592,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":444,"timestamp":119372949140,"id":1543,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888951593,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":12306,"timestamp":119372948860,"id":1542,"tags":{"url":"/api/trees"},"startTime":1763888951593,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119372961217,"id":1544,"parentId":1542,"tags":{"url":"/api/trees","memory.rss":"1945415680","memory.heapUsed":"346236816","memory.heapTotal":"349863936"},"startTime":1763888951606,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":212,"timestamp":119379523297,"id":1545,"parentId":3,"tags":{"inputPage":"/members/cmibhsdng002h13oun8osrtpf"},"startTime":1763888958167,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":134,"timestamp":119379523531,"id":1546,"parentId":3,"tags":{"inputPage":"/members/cmibhsdng002h13oun8osrtpf"},"startTime":1763888958168,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":165,"timestamp":119379525037,"id":1547,"parentId":3,"tags":{"inputPage":"/members/cmibhsdng002h13oun8osrtpf"},"startTime":1763888958169,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":129,"timestamp":119379525219,"id":1548,"parentId":3,"tags":{"inputPage":"/members/cmibhsdng002h13oun8osrtpf"},"startTime":1763888958169,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":879,"timestamp":119379526145,"id":1550,"parentId":3,"tags":{"inputPage":"/members/[id]/page"},"startTime":1763888958170,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":23852,"timestamp":119379525777,"id":1549,"tags":{"url":"/members/cmibhsdng002h13oun8osrtpf?_rsc=1vf4i"},"startTime":1763888958170,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119379549666,"id":1551,"parentId":1549,"tags":{"url":"/members/cmibhsdng002h13oun8osrtpf?_rsc=1vf4i","memory.rss":"1946009600","memory.heapUsed":"347038408","memory.heapTotal":"350912512"},"startTime":1763888958194,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":518,"timestamp":119379585170,"id":1553,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888958229,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10765,"timestamp":119379584884,"id":1552,"tags":{"url":"/api/trees"},"startTime":1763888958229,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119379595697,"id":1554,"parentId":1552,"tags":{"url":"/api/trees","memory.rss":"1946226688","memory.heapUsed":"347535768","memory.heapTotal":"351174656"},"startTime":1763888958240,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":407,"timestamp":119379596754,"id":1556,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888958241,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":14504,"timestamp":119379596499,"id":1555,"tags":{"url":"/api/trees"},"startTime":1763888958241,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":8,"timestamp":119379611089,"id":1557,"parentId":1555,"tags":{"url":"/api/trees","memory.rss":"1946464256","memory.heapUsed":"348121128","memory.heapTotal":"354844672"},"startTime":1763888958255,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":797,"timestamp":119379613983,"id":1559,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888958258,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15665,"timestamp":119379613359,"id":1558,"tags":{"url":"/api/trees"},"startTime":1763888958257,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119379629119,"id":1560,"parentId":1558,"tags":{"url":"/api/trees","memory.rss":"1947308032","memory.heapUsed":"349240336","memory.heapTotal":"354844672"},"startTime":1763888958273,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":215,"timestamp":119379630255,"id":1561,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888958274,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":159,"timestamp":119379630496,"id":1562,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888958275,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":165,"timestamp":119379631056,"id":1563,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888958275,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":155,"timestamp":119379631242,"id":1564,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888958275,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1524,"timestamp":119379632366,"id":1566,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888958276,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21791,"timestamp":119379631912,"id":1565,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888958276,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119379653783,"id":1567,"parentId":1565,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1948110848","memory.heapUsed":"350015264","memory.heapTotal":"355368960"},"startTime":1763888958298,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1029,"timestamp":119381501749,"id":1569,"parentId":3,"tags":{"inputPage":"/members/new/page"},"startTime":1763888960146,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":20358,"timestamp":119381501327,"id":1568,"tags":{"url":"/members/new?spouseId=cmibhsdng002h13oun8osrtpf&generation=4&gender=MALE&_rsc=hm9yn"},"startTime":1763888960145,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119381521737,"id":1570,"parentId":1568,"tags":{"url":"/members/new?spouseId=cmibhsdng002h13oun8osrtpf&generation=4&gender=MALE&_rsc=hm9yn","memory.rss":"1949540352","memory.heapUsed":"350563896","memory.heapTotal":"356679680"},"startTime":1763888960166,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":531,"timestamp":119381581063,"id":1572,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888960225,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10725,"timestamp":119381580732,"id":1571,"tags":{"url":"/api/trees"},"startTime":1763888960225,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":3,"timestamp":119381591501,"id":1573,"parentId":1571,"tags":{"url":"/api/trees","memory.rss":"1950134272","memory.heapUsed":"350492736","memory.heapTotal":"361922560"},"startTime":1763888960236,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":415,"timestamp":119381592650,"id":1575,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888960237,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":10608,"timestamp":119381592392,"id":1574,"tags":{"url":"/api/trees"},"startTime":1763888960236,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":5,"timestamp":119381603070,"id":1576,"parentId":1574,"tags":{"url":"/api/trees","memory.rss":"1950367744","memory.heapUsed":"351517736","memory.heapTotal":"361922560"},"startTime":1763888960247,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":451,"timestamp":119381604266,"id":1578,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888960248,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":9910,"timestamp":119381603967,"id":1577,"tags":{"url":"/api/trees"},"startTime":1763888960248,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119381613942,"id":1579,"parentId":1577,"tags":{"url":"/api/trees","memory.rss":"1950683136","memory.heapUsed":"352551616","memory.heapTotal":"361922560"},"startTime":1763888960258,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":204,"timestamp":119381678403,"id":1580,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888960322,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":137,"timestamp":119381678631,"id":1581,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888960323,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":199,"timestamp":119381679385,"id":1582,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888960323,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":162,"timestamp":119381679615,"id":1583,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888960324,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":538,"timestamp":119381680594,"id":1585,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888960325,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17773,"timestamp":119381680244,"id":1584,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888960324,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119381698100,"id":1586,"parentId":1584,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1952436224","memory.heapUsed":"352197632","memory.heapTotal":"362971136"},"startTime":1763888960342,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":667,"timestamp":119384772257,"id":1588,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888963416,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":15424,"timestamp":119384770215,"id":1587,"tags":{"url":"/api/trees"},"startTime":1763888963414,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119384785731,"id":1589,"parentId":1587,"tags":{"url":"/api/trees","memory.rss":"1954701312","memory.heapUsed":"355249192","memory.heapTotal":"364810240"},"startTime":1763888963430,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":983,"timestamp":119384787760,"id":1591,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888963432,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17344,"timestamp":119384787001,"id":1590,"tags":{"url":"/api/trees"},"startTime":1763888963431,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":18,"timestamp":119384804473,"id":1592,"parentId":1590,"tags":{"url":"/api/trees","memory.rss":"1955713024","memory.heapUsed":"356274808","memory.heapTotal":"364810240"},"startTime":1763888963448,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":592,"timestamp":119384806817,"id":1594,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888963451,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":165,"timestamp":119384816688,"id":1595,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888963461,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":133,"timestamp":119384816874,"id":1596,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888963461,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":188,"timestamp":119384818452,"id":1597,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888963462,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":135,"timestamp":119384818663,"id":1598,"parentId":3,"tags":{"inputPage":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888963463,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":957,"timestamp":119384819657,"id":1600,"parentId":3,"tags":{"inputPage":"/api/trees/[treeId]/members/route"},"startTime":1763888963464,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":22512,"timestamp":119384806308,"id":1593,"tags":{"url":"/api/trees"},"startTime":1763888963450,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":6,"timestamp":119384828893,"id":1601,"parentId":1593,"tags":{"url":"/api/trees","memory.rss":"1957351424","memory.heapUsed":"356465064","memory.heapTotal":"365858816"},"startTime":1763888963473,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":21282,"timestamp":119384819281,"id":1599,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members"},"startTime":1763888963463,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":7,"timestamp":119384840630,"id":1602,"parentId":1599,"tags":{"url":"/api/trees/cmibhsdmj001n13oucuenv71n/members","memory.rss":"1957519360","memory.heapUsed":"357326944","memory.heapTotal":"365858816"},"startTime":1763888963485,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":850,"timestamp":119390196712,"id":1604,"parentId":3,"tags":{"inputPage":"/tree/page"},"startTime":1763888968840,"traceId":"e9a6c25356b91814"},{"name":"handle-request","duration":17526,"timestamp":119390196356,"id":1603,"tags":{"url":"/tree?treeId=cmibhsdmj001n13oucuenv71n&_rsc=hm9yn"},"startTime":1763888968840,"traceId":"e9a6c25356b91814"},{"name":"memory-usage","duration":4,"timestamp":119390213929,"id":1605,"parentId":1603,"tags":{"url":"/tree?treeId=cmibhsdmj001n13oucuenv71n&_rsc=hm9yn","memory.rss":"1959469056","memory.heapUsed":"357546952","memory.heapTotal":"361402368"},"startTime":1763888968858,"traceId":"e9a6c25356b91814"},{"name":"ensure-page","duration":1532,"timestamp":119390266519,"id":1607,"parentId":3,"tags":{"inputPage":"/api/trees/route"},"startTime":1763888968910,"traceId":"e9a6c25356b91814"}] diff --git a/app/members/[id]/page.tsx b/app/members/[id]/page.tsx index 158a9f10..244aad7f 100644 --- a/app/members/[id]/page.tsx +++ b/app/members/[id]/page.tsx @@ -88,6 +88,32 @@ export default function MemberProfilePage() { router.push(`/members/new?${params.toString()}`) } + const handleQuickAddFather = () => { + // 跳转到新增成员页面,并预填父亲信息 + const params = new URLSearchParams() + params.set('childId', member.id) + params.set('generation', (member.generation - 1).toString()) + params.set('gender', 'MALE') + // 如果已有母亲,将母亲设置为配偶 + if (member.motherId) { + params.set('spouseId', member.motherId) + } + router.push(`/members/new?${params.toString()}`) + } + + const handleQuickAddMother = () => { + // 跳转到新增成员页面,并预填母亲信息 + const params = new URLSearchParams() + params.set('childId', member.id) + params.set('generation', (member.generation - 1).toString()) + params.set('gender', 'FEMALE') + // 如果已有父亲,将父亲设置为配偶 + if (member.fatherId) { + params.set('spouseId', member.fatherId) + } + router.push(`/members/new?${params.toString()}`) + } + if (isEditing) { return (
@@ -168,6 +194,16 @@ export default function MemberProfilePage() {
+ {!member.fatherId && ( + + )} + {!member.motherId && ( + + )} diff --git a/app/members/new/page.tsx b/app/members/new/page.tsx index dfc4212c..b4a83b29 100644 --- a/app/members/new/page.tsx +++ b/app/members/new/page.tsx @@ -21,10 +21,11 @@ export default function NewMemberPage() { const fatherId = searchParams.get('fatherId') const motherId = searchParams.get('motherId') const spouseId = searchParams.get('spouseId') + const childId = searchParams.get('childId') const generation = searchParams.get('generation') const gender = searchParams.get('gender') - if (!fatherId && !motherId && !spouseId && !generation && !gender) return undefined + if (!fatherId && !motherId && !spouseId && !childId && !generation && !gender) return undefined const data: Partial = {} @@ -52,6 +53,11 @@ export default function NewMemberPage() { data.spouseIds = [spouseId] } + // 处理子女信息(添加父母时使用) + if (childId) { + data.childrenIds = [childId] + } + // 处理世代 if (generation) { data.generation = parseInt(generation) diff --git a/app/members/page.tsx b/app/members/page.tsx index 35f3e739..57fdaf91 100644 --- a/app/members/page.tsx +++ b/app/members/page.tsx @@ -373,7 +373,7 @@ export default function MembersPage() { ? 'bg-pink-50/50 dark:bg-pink-950/20 border-pink-200/50 dark:border-pink-800/30' : 'bg-blue-50/50 dark:bg-blue-950/20 border-blue-200/50 dark:border-blue-800/30' }`}> - +
)}
-
+
-

+

{member.fullName} {member.courtesyName && ( - + 字 {member.courtesyName} )}

{isFounder ? ( -

+

家族始祖

) : isSpouse && spouseName ? ( -

+

{spouseName}的配偶

) : ( -

+

{member.generationName ? `字辈: ${member.generationName}` : "未录入字辈"}

)} {/* 籍贯和生卒年并排 */}
-

{member.ancestralHome || "籍贯未知"}

+

{member.ancestralHome || "籍贯未知"}

{/* 生卒年和年龄 */} {(member.birthDate || member.deathDate) && ( -
+
{member.birthDate && new Date(member.birthDate).getFullYear()} {member.deathDate && ` - ${new Date(member.deathDate).getFullYear()}`} @@ -433,7 +433,7 @@ export default function MembersPage() { const deathYear = member.deathDate ? new Date(member.deathDate).getFullYear() : new Date().getFullYear() const age = deathYear - birthYear return ( -
+
{member.deathDate ? `享年${age}岁` : `${age}岁`}
) @@ -447,7 +447,7 @@ export default function MembersPage() { {member.tags.map((tag) => ( {tag} diff --git a/prisma/seed.ts b/prisma/seed.ts index b0643c29..c9774f4a 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1071,7 +1071,6 @@ async function main() { birthDate: '1980-11-08', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', - fatherId: yu3_1Husband.id, motherId: yu3_1.id, phone: '13800138003', email: 'yuyuxin@example.com', @@ -1119,7 +1118,6 @@ async function main() { birthDate: '1983-03-15', ancestralHome: '浙江省杭州市', birthPlace: '上海市黄浦区', // 迁徙到上海 - fatherId: yu3_1Husband.id, motherId: yu3_1.id, phone: '13800138005', email: 'yuyuchen@example.com', @@ -1206,7 +1204,7 @@ async function main() { birthDate: '1991-09-05', ancestralHome: '浙江省杭州市', birthPlace: '江苏省南京市', // 迁徙到南京 - fatherId: yu3_4.id, + motherId: yu3_4.id, phone: '13800138009', email: 'yuyuhan@example.com', address: '江苏省南京市鼓楼区中山路', @@ -1285,7 +1283,6 @@ async function main() { birthDate: '2008-08-08', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市滨江区', - fatherId: yu4_1Husband.id, motherId: yu4_1.id, bio: '在读中学生,品学兼优。', tags: ['学生', '在世'], @@ -1305,7 +1302,6 @@ async function main() { birthDate: '2011-05-12', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市滨江区', - fatherId: yu4_1Husband.id, motherId: yu4_1.id, bio: '在读小学生。', tags: ['学生', '在世'], @@ -1360,7 +1356,7 @@ async function main() { birthDate: '2017-03-25', ancestralHome: '浙江省杭州市', birthPlace: '广东省深圳市', - fatherId: yu4_4.id, + motherId: yu4_4.id, bio: '幼儿园学生。', tags: ['学生', '在世'], },