commit b0c9a05db7da3b8cc7b30d515eb7c597749adbac Author: Theodor Chikin Date: Thu Sep 18 17:11:38 2025 +0300 init diff --git a/ 1 b/ 1 new file mode 100644 index 0000000..356c743 Binary files /dev/null and b/ 1 differ diff --git a/![[AD7686.pdf]].md b/![[AD7686.pdf]].md new file mode 100644 index 0000000..e69de29 diff --git a/0x1111_descrtxt.txt b/0x1111_descrtxt.txt new file mode 100644 index 0000000..0423107 --- /dev/null +++ b/0x1111_descrtxt.txt @@ -0,0 +1,51 @@ +Структура команды 0х1111 в результате удаления табличных значений тока +претерпела изменения. +Изначально размер комнады был 426 байт (или 213 16-ти битных слов), после удаления табличных значений +структура команды выглядит следующим образом: + + |-------|------------|-------------|--------------------------------------| + | Номер | Название | Код | Расшифровка | + | слова | | | | + |-------|------------|-------------|--------------------------------------| + | 0 | Header | 0x1111 | Заголовок | + | 1 | Setup | 0xXXXX | Биты настроек | + | 2 | LD1_temp | 16bit float | Температура лазера 1 | + | 3 | LD2_temp | 16bit float | Температура лазера 1 | + | 4 | Reserved | 0x0000 | Зарезервировано | + | 5 | Reserved | 0x0000 | Зарезервировано | + | 6 | Reserved | 0x0000 | Зарезервировано | + | 7 | P_temp1 | 16bit float | Пропорциональный коэффициент для ЛМ1 | + | 8 | I_temp1 | 16bit float | Интегальный коэффициент для ЛМ1 | + | 9 | P_temp2 | 16bit float | Пропорциональный коэффициент для ЛМ2 | + | 10 | I_temp2 | 16bit float | Интегальный коэффициент для ЛМ2 | + | 11 | Message_ID | 16bit uint | Номер сообщения | + | 12 | LD1_curr | 16bit float | Ток лазера 1 | + | 13 | LD2_curr | 16bit float | Ток лазера 2 | + | 14 | CRC | 16bit uint | Контрольная сумма | + |-------|------------|-------------|--------------------------------------| + +Таким образом размер команды 0x1111 теперь -- 30 байт (или 15 16-ти битных слов). + +Команда TRANS_ENABLE так же изменилась: + + |-------|------------|-------------|----------------------------------------------------------------------------------------------------------| + | Номер | Название | Код | Расшифровка | + | слова | | | | + |-------|------------|-------------|----------------------------------------------------------------------------------------------------------| + | 0 | Header | 0x1111 | Заголовок | + | 1 | P_1 | 16bit float | Фототок мониторного фотодиода ЛМ1 | + | 2 | P_2 | 16bit float | Фототок мониторного фотодиода ЛМ2 | + | 3 | TO_LSB | 16bit uint | Основной таймер (младшие два байта) | + | 4 | TO_MSB | 16bit uint | Основной таймер (старшие два байта) | + | 5 | T_LM1 | 16bit uint | Температура ЛМ1 | + | 6 | T_LM2 | 16bit uint | Температура ЛМ2 | + | 7 | T_EXT1 | 16bit uint | Температура 1-го внешнего термистора | + | 8 | T_EXT2 | 16bit uint | Температура 2-го внешнего термистора | + | 9 | 3V3MON | 16bit uint | Напряжение 3,3 В | + | 10 | 5V1MON | 16bit uint | Напряжение питания драйверов Пельтье и внешних датчиков температуры | + | 11 | 5V2MON | 16bit uint | Напряжение питания драйверов тока лазера, внутренних датчиков температуры, усилителей мониторного канала | + | 12 | 7V0MON | 16bit uint | Входное напряжение питания | + | 13 | Message_ID | 16bit uint | Номер сообщения | + | 14 | CRC | 16bit uint | Контрольная сумма | + |-------|------------|-------------|----------------------------------------------------------------------------------------------------------| + diff --git a/0x7777_task_command.txt b/0x7777_task_command.txt new file mode 100644 index 0000000..e1f88cc --- /dev/null +++ b/0x7777_task_command.txt @@ -0,0 +1,28 @@ + + + |-------|-------------|-------------|--------------------------------------------------------------| + | Номер | Название | Код | Расшифровка | + | слова | | | | + |-------|-------------|-------------|--------------------------------------------------------------| + | 0 | Header | 0x7777 | Заголовок | + | 1 | Setup | 0xXXXX | Биты настроек (как в 0х1111) | + | 2 | TaskType | 16bit uint | 0х1 -- меняется ток лазера 1 | + | | | | 0х2 -- меняется ток лазера 2 | + | | | | 0х3 -- меняется температура лазера 1 | + | | | | 0х4 -- меняется температура лазера 2 | + | 3 | chngd_p_min | 16bit uint | Минимальное значение изменяемого параметра (mA или C) | + | 4 | chngd_p_max | 16bit uint | Максимальное значение изменяемого параметра (mA или C) | + | 5 | delta_p | 16bit uint | Шаг дискретизации изменяемого параметра (mA или C) | + | 6 | delta_t | 16bit uint | Дискретныфй шаг по времени (мкс) | + | 7 | fixed_param | 16bit uint | Значение другого параметра лазера с изменяемым параметром | + | 8 | I_fixed | 16bit uint | Значение тока для лазера с фиксированными параметрами | + | 9 | T_fixed | 16bit uint | Значение температуры для лазера с фиксированными параметрами | + | 10 | Tau | 16bit uint | Значение тау (время релаксации, миллисекунды) | + | 11 | P_temp1 | 16bit float | Пропорциональный коэффициент для ЛМ1 | + | 12 | I_temp1 | 16bit float | Интегальный коэффициент для ЛМ1 | + | 13 | P_temp2 | 16bit float | Пропорциональный коэффициент для ЛМ2 | + | 14 | I_temp2 | 16bit float | Интегальный коэффициент для ЛМ2 | + | 15 | CRC | 16bit uint | Контрольная сумма | + |-------|-------------|-------------|--------------------------------------------------------------| + +Таким образом размер команды 0x7777 теперь -- 32 байт (или 15 16-ти битных слов). diff --git a/1_1_Report_generator_heterodyne_20240124 1.pdf b/1_1_Report_generator_heterodyne_20240124 1.pdf new file mode 100644 index 0000000..0947bab Binary files /dev/null and b/1_1_Report_generator_heterodyne_20240124 1.pdf differ diff --git a/1_1_Report_generator_heterodyne_20240124.pdf b/1_1_Report_generator_heterodyne_20240124.pdf new file mode 100644 index 0000000..0947bab Binary files /dev/null and b/1_1_Report_generator_heterodyne_20240124.pdf differ diff --git a/AD7686 1.pdf b/AD7686 1.pdf new file mode 100644 index 0000000..9f6ae5a Binary files /dev/null and b/AD7686 1.pdf differ diff --git a/AD7686 2.pdf b/AD7686 2.pdf new file mode 100644 index 0000000..9f6ae5a Binary files /dev/null and b/AD7686 2.pdf differ diff --git a/AD7686.pdf b/AD7686.pdf new file mode 100644 index 0000000..9f6ae5a Binary files /dev/null and b/AD7686.pdf differ diff --git a/AD8571.pdf b/AD8571.pdf new file mode 100644 index 0000000..8d0ad2e Binary files /dev/null and b/AD8571.pdf differ diff --git a/AD8655_8656.pdf b/AD8655_8656.pdf new file mode 100644 index 0000000..39e1bdf Binary files /dev/null and b/AD8655_8656.pdf differ diff --git a/ADC_software-hardware.md b/ADC_software-hardware.md new file mode 100644 index 0000000..8309ffc --- /dev/null +++ b/ADC_software-hardware.md @@ -0,0 +1,78 @@ +## problems +[[баг с размещением большого буфера не в тот регион памяти]] +## hardware + +подключение +(OUT_10) -- ADC_clock -> DI_SYN1 +Фазы обеих клоков будем обнулять в начале цикла ЛЧМ. +#### BP9 (OUT_11) -- Modulation -> Mach-Zander +TIM11_CH1 +Тактирование от APB2 (184 MHz). Желаемая частота -- 1 МГц. => Prescaler =1, ARR = 91, OCR1=22 +Подключим его через драйвер к модулятору Маха-Цандера. +#### BP8 (OUT_10) -- ADC_clock -> DI_SYN1 +TIM4_CH3 +Тактирование от APB1 (92 MHz). Желаемая частота -- 2 МГц. => Prescaler = 0, ARR = 45, OCR3=22 +Подключим его к DI_SYN1. +#### PD7 (TASK_TRG) -- trigger -> DI_SYN2 + +![[Pasted image 20250711184438.png]] +![[Pasted image 20250711184407.png]] +## software +1. После перенастройки модуля надо сбрасывать приемный буфер на ПК. Сейчас сброс через полное вычитывание данных вникуда. + + +Логическая таблица задает порядок опроса и параметры опрашиваемых физических каналов. Данные с физических каналов затем поступают по SPORT0 в порядке опроса. + +Алгоритм работы: + 1. Приняли команду о начале работы (напр. усреднение) с ПК. Настроили state machine. + 2. Обработка данных + 3. Отправка данных hdma_send_req_start(). Поднимается флаг **"данные отправляются, передающий буффер занят"** + 4. При окончании отправки вызывается обработчик hdma_send_done(), в котором сбрасываем флаг **"данные отправляются, передающий буффер занят"** + + + +Вернул ПО blackfin в оригинальное состояние (git checkout). Bf не возвращает данные. При попытке запуска через x502studio -- возникает ошибка с каналами: +![[Pasted image 20250916221016.png]] + + +Причем если подключить ноут к сети, то вылетает быстрее. +Однажды перед вылетом была получена такая картина: +![[Pasted image 20250916220932.png]] +Подключение -- syn1 (тактирование АПЦ), syn2 (запуск), X1 -- сигнал (треугольник). Видно, что в процессе поменялись местами каналы 1 и 2. WTF? +Настройки: +![[Pasted image 20250916221400.png]] + +Проблема воспроизводима: ![[Pasted image 20250916221611.png]] +![[Pasted image 20250916221856.png]] +Воспроизведение: + + +| ошибка | sync freq mode | sync start mode | пр. условия | | +| ------ | -------------------------- | --------------- | -------------------------------------------------------------------------- | ---------------------------------------------- | +| да | syn1 rise | syn2 rise | | | +| да | syn1 rise | internal | | | +| нет | internal | internal | | | +| нет | int | syn1 rise | | | +| нет | syn2 rise (низкая частота) | int | | | +| да | syn2 rise (ВЧ) (F>0.5 MHz) | int | | F=730 kHz ![[Pasted image 20250917153156.png]] | +| да | syn2 rise (ВЧ) (F=730 kHz) | int | вход канала 2 -- заземлен (внутренне):![[Pasted image 20250917161724.png]] | ![[Pasted image 20250917161645.png]] | + +Эксперимент: +1. 1 канал подключен к генератору с треугольным сигналом +2. 2,3,4,5 каналы -- заземлены (внешне проводами к GND32) +результат: +3. sync start mode -- internal + +| | sync freq mode | результат | | +| ------------------------------------------------ | -------------- | ------------------------------------------------------------------ | ---------------------------------------------------- | +| | INTernal | всё ОК | | +| | SYN1_RISE | каналы 1-5 путаются. Ранее аналогично путались и все другие каналы | ![[Pasted image 20250917193217.png]]![[newplot.png]] | +| после промежутка времени (неизвестное событие?): | то же | каналы перестали путаться. Большие помехи | ![[Pasted image 20250917193401.png]] | +| | INTernal | всё ОК | ![[newplot(1).png]] | +| | SYN2_RISE | ОК | ![[Pasted image 20250917193951.png]] | +| | SYN1_RISE | | ![[Pasted image 20250917194104.png]] | +| | SYN1_FALL | | ![[Pasted image 20250917194134.png]] | + + + + diff --git a/Bit Setting in C.md b/Bit Setting in C.md new file mode 100644 index 0000000..4d17c0e --- /dev/null +++ b/Bit Setting in C.md @@ -0,0 +1,36 @@ + + +#### Setting a bit +Use the bitwise OR operator ( | ) to set a bit. +```c +number |= 1 << x; +``` +That will set bit x. + +#### Clearing a bit +Use the bitwise AND operator (&) to clear a bit. +```c +number &= ~(1 << x); +``` +That will clear bit x. You must invert the bit string with the bitwise NOT operator (~), then AND it. + +#### Toggling a bit +The XOR operator (^) can be used to toggle a bit. +```c +number ^= 1 << x; +``` +That will toggle bit x. + +### Checking a bit +To check a bit, shift the number x to the right, then bitwise AND it: +```c +bit = (number >> x) & 1; +``` +That will put the value of bit x into the variable bit. + +#### Changing the nth bit to x +Setting the nth bit to either 1 or 0 can be achieved with the following: +```c +number ^= (-x ^ number) & (1 << n); +``` +Bit n will be set if x is 1, and cleared if x is 0. \ No newline at end of file diff --git a/Clippings/big_array_in_SDRAM_BlackFin.html b/Clippings/big_array_in_SDRAM_BlackFin.html new file mode 100644 index 0000000..cd2d58b --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin.html @@ -0,0 +1,1344 @@ + +Массив в SDRAM BlackFinSkip to content
\ No newline at end of file diff --git a/Clippings/big_array_in_SDRAM_BlackFin_files/a.html b/Clippings/big_array_in_SDRAM_BlackFin_files/a.html new file mode 100644 index 0000000..32919a6 --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin_files/a.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Clippings/big_array_in_SDRAM_BlackFin_files/a_data/main.js b/Clippings/big_array_in_SDRAM_BlackFin_files/a_data/main.js new file mode 100644 index 0000000..9d65e70 --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin_files/a_data/main.js @@ -0,0 +1 @@ +window._cf_chl_opt={cFPWv:'b'};~function(c2,E,L,g,m,Z,Y,F){c2=A,function(n,v,ct,c1,y,h){for(ct={n:328,v:294,y:364,h:317,I:402,U:299,R:338,o:304,W:337,d:389},c1=A,y=n();!![];)try{if(h=-parseInt(c1(ct.n))/1+parseInt(c1(ct.v))/2*(-parseInt(c1(ct.y))/3)+parseInt(c1(ct.h))/4*(-parseInt(c1(ct.I))/5)+-parseInt(c1(ct.U))/6+-parseInt(c1(ct.R))/7+-parseInt(c1(ct.o))/8*(parseInt(c1(ct.W))/9)+parseInt(c1(ct.d))/10,h===v)break;else y.push(y.shift())}catch(I){y.push(y.shift())}}(c,748096),E=this||self,L=E[c2(351)],g={},g[c2(385)]='o',g[c2(370)]='s',g[c2(334)]='u',g[c2(344)]='z',g[c2(342)]='n',g[c2(375)]='I',g[c2(343)]='b',m=g,E[c2(376)]=function(y,h,I,U,cI,ch,cz,c7,o,W,C,S,X,B){if(cI={n:352,v:404,y:332,h:355,I:382,U:315,R:355,o:315,W:384,d:325,C:348,b:303,S:327},ch={n:372,v:348,y:379},cz={n:365,v:346,y:367,h:360},c7=c2,null===h||void 0===h)return U;for(o=N(h),y[c7(cI.n)][c7(cI.v)]&&(o=o[c7(cI.y)](y[c7(cI.n)][c7(cI.v)](h))),o=y[c7(cI.h)][c7(cI.I)]&&y[c7(cI.U)]?y[c7(cI.R)][c7(cI.I)](new y[(c7(cI.o))](o)):function(x,c8,s){for(c8=c7,x[c8(ch.n)](),s=0;sX[cn(cW.R)](0)){for(W=0;WW;J=J<<1|1.61&c0,R-1==V?(V=0,T[cn(cW.d)](o(J)),J=0):V++,c0>>=1,W++);}else{for(c0=1,W=0;WW;J=J<<1.83|1.7&c0,R-1==V?(V=0,T[cn(cW.C)](o(J)),J=0):V++,c0>>=1,W++);}B--,0==B&&(B=Math[cn(cW.S)](2,s),s++),delete S[X]}else for(c0=C[X],W=0;W>=1,W++);X=(B--,0==B&&(B=Math[cn(cW.B)](2,s),s++),C[O]=x++,String(P))}if(X!==''){if(Object[cn(cW.e)][cn(cW.x)][cn(cW.s)](S,X)){if(256>X[cn(cW.a)](0)){for(W=0;WW;J=c0&1|J<<1,V==R-1?(V=0,T[cn(cW.T)](o(J)),J=0):V++,c0>>=1,W++);}else{for(c0=1,W=0;WW;J=c0&1.84|J<<1,V==R-1?(V=0,T[cn(cW.J)](o(J)),J=0):V++,c0>>=1,W++);}B--,B==0&&(B=Math[cn(cW.B)](2,s),s++),delete S[X]}else for(c0=C[X],W=0;W>=1,W++);B--,B==0&&s++}for(c0=2,W=0;W>=1,W++);for(;;)if(J<<=1,R-1==V){T[cn(cW.Q)](o(J));break}else V++;return T[cn(cW.P)]('')},'j':function(U,cv){return cv=cA,null==U?'':''==U?null:h.i(U[cv(cC.n)],32768,function(R,cy){return cy=cv,U[cy(cd.n)](R)})},'i':function(U,R,o,cE,W,C,S,X,B,x,s,T,J,V,Q,P,c0,O){for(cE=cA,W=[],C=4,S=4,X=3,B=[],T=o(0),J=R,V=1,x=0;3>x;W[x]=x,x+=1);for(Q=0,P=Math[cE(cb.n)](2,2),s=1;s!=P;O=T&J,J>>=1,J==0&&(J=R,T=o(V++)),Q|=(0>=1,0==J&&(J=R,T=o(V++)),Q|=s*(0>=1,0==J&&(J=R,T=o(V++)),Q|=s*(0U)return'';for(Q=0,P=Math[cE(cb.n)](2,X),s=1;P!=s;O=T&J,J>>=1,0==J&&(J=R,T=o(V++)),Q|=s*(0>=1,0==J&&(J=R,T=o(V++)),Q|=s*(0>=1,J==0&&(J=R,T=o(V++)),Q|=s*(0v}function N(n,cH,c5,v){for(cH={n:332,v:331,y:312},c5=c2,v=[];n!==null;v=v[c5(cH.n)](Object[c5(cH.v)](n)),n=Object[c5(cH.y)](n));return v}function H(cV,cf,cT,cY,n,v,y,h,I){if(cV={n:345,v:350,y:353,h:324,I:396,U:396,R:319,o:368,W:368},cf={n:353,v:324,y:368},cT={n:369},cY=c2,n=E[cY(cV.n)],!n)return;if(!l())return;(v=![],y=n[cY(cV.v)]===!![],h=function(ci,U){(ci=cY,!v)&&(v=!![],U=i(),j(U.r,function(R){z(n,R)}),U.e&&D(ci(cT.n),U.e))},L[cY(cV.y)]!==cY(cV.h))?h():E[cY(cV.I)]?L[cY(cV.U)](cY(cV.R),h):(I=L[cY(cV.o)]||function(){},L[cY(cV.W)]=function(cF){cF=cY,I(),L[cF(cf.n)]!==cF(cf.v)&&(L[cF(cf.y)]=I,h())})}function A(G,n,v){return v=c(),A=function(y,E,L){return y=y-292,L=v[y],L},A(G,n)}function D(h,I,cs,cZ,U,R,o,W,d,C,b,S){if(cs={n:298,v:306,y:345,h:357,I:401,U:311,R:388,o:301,W:323,d:295,C:326,b:392,S:308,X:383,B:383,e:330,x:391,s:401,a:391,T:381,J:307,f:373,V:320,Q:333,P:310,O:297,c0:398},cZ=c2,!M(.01))return![];R=(U={},U[cZ(cs.n)]=h,U[cZ(cs.v)]=I,U);try{o=E[cZ(cs.y)],W=cZ(cs.h)+E[cZ(cs.I)][cZ(cs.U)]+cZ(cs.R)+o.r+cZ(cs.o),d=new E[(cZ(cs.W))](),d[cZ(cs.d)](cZ(cs.C),W),d[cZ(cs.b)]=2500,d[cZ(cs.S)]=function(){},C={},C[cZ(cs.X)]=E[cZ(cs.I)][cZ(cs.B)],C[cZ(cs.e)]=E[cZ(cs.I)][cZ(cs.e)],C[cZ(cs.x)]=E[cZ(cs.s)][cZ(cs.a)],C[cZ(cs.T)]=E[cZ(cs.s)][cZ(cs.J)],b=C,S={},S[cZ(cs.f)]=R,S[cZ(cs.V)]=b,S[cZ(cs.Q)]=cZ(cs.P),d[cZ(cs.O)](F[cZ(cs.c0)](S))}catch(X){}}function z(y,h,cQ,cM,I,U,R){if(cQ={n:393,v:350,y:316,h:333,I:403,U:339,R:316,o:321,W:395,d:403,C:306,b:386},cM=c2,I=cM(cQ.n),!y[cM(cQ.v)])return;h===cM(cQ.y)?(U={},U[cM(cQ.h)]=I,U[cM(cQ.I)]=y.r,U[cM(cQ.U)]=cM(cQ.R),E[cM(cQ.o)][cM(cQ.W)](U,'*')):(R={},R[cM(cQ.h)]=I,R[cM(cQ.d)]=y.r,R[cM(cQ.U)]=cM(cQ.C),R[cM(cQ.b)]=h,E[cM(cQ.o)][cM(cQ.W)](R,'*'))}function K(n,v,y,cD,c4,h){c4=(cD={n:347,v:355,y:405,h:394},c2);try{return v[y][c4(cD.n)](function(){}),'p'}catch(I){}try{if(null==v[y])return void 0===v[y]?'u':'x'}catch(U){return'i'}return n[c4(cD.v)][c4(cD.y)](v[y])?'a':v[y]===n[c4(cD.v)]?'L':!0===v[y]?'T':v[y]===!1?'F':(h=typeof v[y],c4(cD.h)==h?k(n,v[y])?'N':'f':m[h]||'?')}function l(cq,cg,n,v,y,h){return cq={n:345,v:292,y:358},cg=c2,n=E[cg(cq.n)],v=3600,y=Math[cg(cq.v)](+atob(n.t)),h=Math[cg(cq.v)](Date[cg(cq.y)]()/1e3),h-y>v?![]:!![]}function j(n,v,cx,ce,cB,cr,cm,y,h){cx={n:345,v:323,y:295,h:326,I:357,U:401,R:311,o:309,W:350,d:392,C:308,b:400,S:314,X:297,B:398,e:322},ce={n:356},cB={n:340,v:340,y:316,h:380},cr={n:392},cm=c2,y=E[cm(cx.n)],h=new E[(cm(cx.v))](),h[cm(cx.y)](cm(cx.h),cm(cx.I)+E[cm(cx.U)][cm(cx.R)]+cm(cx.o)+y.r),y[cm(cx.W)]&&(h[cm(cx.d)]=5e3,h[cm(cx.C)]=function(ck){ck=cm,v(ck(cr.n))}),h[cm(cx.b)]=function(cK){cK=cm,h[cK(cB.n)]>=200&&h[cK(cB.v)]<300?v(cK(cB.y)):v(cK(cB.h)+h[cK(cB.v)])},h[cm(cx.S)]=function(cN){cN=cm,v(cN(ce.n))},h[cm(cx.X)](F[cm(cx.B)](JSON[cm(cx.e)](n)))}}() \ No newline at end of file diff --git a/Clippings/big_array_in_SDRAM_BlackFin_files/codemirror-nauedrd6.css b/Clippings/big_array_in_SDRAM_BlackFin_files/codemirror-nauedrd6.css new file mode 100644 index 0000000..d445460 --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin_files/codemirror-nauedrd6.css @@ -0,0 +1 @@ +._codemirror_176lt_1 .cm-editor{border:none;border-radius:0;flex:1;font-size:14px}._codemirror_176lt_1 .cm-scroller{scrollbar-color:var(--main-surface-tertiary) transparent}._codemirror_176lt_1 .cm-scroller:hover{scrollbar-color:var(--gray-200) transparent}.dark ._codemirror_176lt_1 .cm-scroller:hover{scrollbar-color:var(--gray-600) transparent}._codemirror_176lt_1 .cm-focused{outline:none}._codemirror_176lt_1._preview_176lt_26 .cm-content{padding:1rem 0 2rem!important}._codemirror_176lt_1:not(._preview_176lt_26) .cm-content{padding:1rem 0 50vh!important}._codemirror_176lt_1 .cm-activeLineGutter{background-color:var(--bg-primary)}._codemirror_176lt_1 .cm-gutters{background-color:transparent;color:var(--text-quaternary)}[dir=ltr] ._codemirror_176lt_1 .cm-gutters{border-right:none;padding-left:12px;padding-right:2px}[dir=rtl] ._codemirror_176lt_1 .cm-gutters{border-left:none;padding-left:2px;padding-right:12px}[dir=ltr] ._codemirror_176lt_1 .cm-gutters .cm-lineNumbers{padding-right:0}[dir=rtl] ._codemirror_176lt_1 .cm-gutters .cm-lineNumbers{padding-left:0}._codemirror_176lt_1 .cm-foldGutter .cm-gutterElement{align-items:center;display:flex;justify-content:center}._codemirror_176lt_1 .cm-line.streaming-line-overlay{position:relative}._codemirror_176lt_1 .cm-line.streaming-line-overlay:before{content:"";height:100%;pointer-events:none;position:absolute;top:0;width:100%;z-index:1}[dir=ltr] ._codemirror_176lt_1 .cm-line.streaming-line-overlay:before{left:0}[dir=rtl] ._codemirror_176lt_1 .cm-line.streaming-line-overlay:before{right:0}._codemirror_176lt_1 .cm-deletedChunk del{text-decoration:none} diff --git a/Clippings/big_array_in_SDRAM_BlackFin_files/comments-plugin-tah3dlup.css b/Clippings/big_array_in_SDRAM_BlackFin_files/comments-plugin-tah3dlup.css new file mode 100644 index 0000000..8769dfe --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin_files/comments-plugin-tah3dlup.css @@ -0,0 +1 @@ +._modelCursor_1knkf_1{display:inline-block;height:0;position:relative;width:0}._modelCursor_1knkf_1:after{content:none} diff --git a/Clippings/big_array_in_SDRAM_BlackFin_files/conversation-small-k592qa8k.css b/Clippings/big_array_in_SDRAM_BlackFin_files/conversation-small-k592qa8k.css new file mode 100644 index 0000000..3202a7d --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin_files/conversation-small-k592qa8k.css @@ -0,0 +1 @@ +@keyframes _slide-up_m3fum_1{0%{opacity:0;translate:0 20vw}}@keyframes _slide-down_m3fum_1{to{opacity:0;translate:0 20vw}}._page-to-page-transition_m3fum_14:not(.active-view-transition){@view-transition{navigation:auto}}._page-to-page-transition_m3fum_14{view-transition-name:none}._page-to-page-transition_m3fum_14 body{view-transition-name:page}@media (prefers-reduced-motion:reduce){._page-to-page-transition_m3fum_14::view-transition{display:none}}._page-to-page-transition_m3fum_14::view-transition-old(header),._page-to-page-transition_m3fum_14::view-transition-old(sidebar){display:none}._page-to-page-transition_m3fum_14::view-transition-new(header),._page-to-page-transition_m3fum_14::view-transition-new(sidebar){animation:none}._page-to-page-transition_m3fum_14::view-transition-image-pair(active-image),._page-to-page-transition_m3fum_14::view-transition-new(active-image),._page-to-page-transition_m3fum_14::view-transition-old(active-image){height:100%}._page-to-page-transition_m3fum_14::view-transition-image-pair(page-title),._page-to-page-transition_m3fum_14::view-transition-new(page-title),._page-to-page-transition_m3fum_14::view-transition-old(page-title){height:100%}._page-to-page-transition_m3fum_14::view-transition-image-pair(acive-image),._page-to-page-transition_m3fum_14::view-transition-new(acive-image),._page-to-page-transition_m3fum_14::view-transition-old(acive-image){height:100%}._page-to-page-transition_m3fum_14::view-transition-group(*),._page-to-page-transition_m3fum_14::view-transition-new(*),._page-to-page-transition_m3fum_14::view-transition-old(*){animation-duration:.4s;animation-timing-function:var(--spring-fast)}._page-to-page-transition_m3fum_14.to-lightbox{--vt-scroll-buttons:scroll-buttons}._page-to-page-transition_m3fum_14.to-lightbox::view-transition-group(scroll-buttons){z-index:3}._page-to-page-transition_m3fum_14from.library.to-conversation,._page-to-page-transition_m3fum_14from.lightbox.to-conversation{--vt-active-image:active-image}._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox{--vt-active-image:active-image;--vt-page-title:page-title;--vt-page-footer:page-footer}:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-new(backdrop){animation:none}:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-group(active-image){z-index:2}:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-group(active-image),:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-group(page-title),:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-new(backdrop),:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-new(page-footer),:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-new(page-title),:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-new(scroll-buttons),:is(._page-to-page-transition_m3fum_14.from-lightbox,._page-to-page-transition_m3fum_14.to-lightbox)::view-transition-old(page-title){animation-duration:.3s}:is(._page-to-page-transition_m3fum_14.to-home,._page-to-page-transition_m3fum_14.from-landing-page)::view-transition-new(composer){animation:none}._page-to-page-transition_m3fum_14.from-landing-page:not(.to-lightbox),._page-to-page-transition_m3fum_14.to-landing-page:not(.to-lightbox){--vt-page-header:header;--vt-splash-screen-headline:page-title;--vt-tool-page-title:page-title;--vt-composer:composer;--sidebar-slideover:sidebar}._page-to-page-transition_m3fum_14.to-landing-page::view-transition-new(page){animation:_slide-up_m3fum_1 .4s var(--spring-fast)}._composer-slide_m3fum_129{--vt-composer:composer}._composer-slide_m3fum_129::view-transition-group(composer),._composer-slide_m3fum_129::view-transition-old(composer){animation-duration:.5s;animation-timing-function:var(--spring-fast)}/*! tailwindcss v4.1.6 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-outline-style:solid;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-leading:initial;--tw-content:""}}}._prosemirror-parent_276o5_2 .ProseMirror[contenteditable]{--tw-outline-style:none;outline-style:var(--tw-outline-style);outline-style:none;outline-width:0}._fallbackTextarea_276o5_2,._prosemirror-parent_276o5_2 .ProseMirror{word-wrap:break-word;font-feature-settings:"liga" 0;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;margin-bottom:calc(var(--spacing,.25rem)*0);margin-top:calc(var(--spacing,.25rem)*4);padding-bottom:calc(var(--spacing,.25rem)*4);padding-top:calc(var(--spacing,.25rem)*0);transform:translateY(-.5px);white-space:pre-wrap;white-space:break-spaces}._fallbackTextarea_276o5_2,._prosemirror-parent_276o5_2 .ProseMirror{padding-inline:calc(var(--spacing,.25rem)*0)}._fallbackTextarea_276o5_2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);background-color:#0000;border-style:var(--tw-border-style);border-width:0;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);box-sizing:content-box;color:var(--text-primary);display:block;height:calc(var(--spacing,.25rem)*10);height:1lh;resize:none;width:100%}._fallbackTextarea_276o5_2::placeholder{color:var(--text-tertiary);padding-inline-start:1px}@container thread (min-width:640px){:is(._prosemirror-parent_276o5_2[data-size=lg] .ProseMirror,._prosemirror-parent_276o5_2[data-size=lg] ._fallbackTextarea_276o5_2){font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,1.55556));margin-top:calc(var(--spacing,.25rem)*3.5);padding-bottom:calc(var(--spacing,.25rem)*3.5);white-space:pre-wrap}:is(._prosemirror-parent_276o5_2[data-size=xl] .ProseMirror,._prosemirror-parent_276o5_2[data-size=xl] ._fallbackTextarea_276o5_2){font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,1.4));margin-top:calc(var(--spacing,.25rem)*3.5);padding-bottom:calc(var(--spacing,.25rem)*3.5);white-space:pre-wrap}}._prosemirror-parent_276o5_2.ProseMirror br{--tw-leading:normal;line-height:normal}._prosemirror-parent_276o5_2.default-browser .placeholder:after{--tw-content:attr(data-placeholder);color:var(--text-tertiary);content:var(--tw-content);cursor:text;pointer-events:none;position:relative}[dir=ltr] ._prosemirror-parent_276o5_2.default-browser .placeholder:after{padding-left:1px}[dir=rtl] ._prosemirror-parent_276o5_2.default-browser .placeholder:after{padding-right:1px}._prosemirror-parent_276o5_2.default-browser .placeholder .ProseMirror-trailingBreak{display:none!important}._prosemirror-parent_276o5_2.firefox .placeholder:before{--tw-content:attr(data-placeholder);color:var(--text-secondary);content:var(--tw-content);cursor:text;pointer-events:none;position:absolute}._prosemirror-parent_276o5_2 p{white-space:pre-wrap}._prosemirror-parent_276o5_2 p.placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.screen-arch ._prosemirror-parent_276o5_2 p.placeholder{view-transition-name:var(--vt-composer-placeholder);width:fit-content}._prosemirror-parent_276o5_2 .ProseMirror-separator{display:none!important}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-leading{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}._wrapper_4j5pz_1{border-radius:8px;cursor:pointer;display:inline-flex;height:44px;-webkit-user-select:none;user-select:none;width:44px}._wrapper_4j5pz_1>input[type=checkbox]{display:none}._wrapper_4j5pz_1{color:var(--icon-secondary)}@media (hover:hover) and (pointer:fine){._wrapper_4j5pz_1:hover{--hover-background:var(--main-surface-secondary)}}._label_4j5pz_22{align-items:center;background-color:var(--hover-background);border-radius:8px;color:var(--text-secondary);display:flex;flex:1;justify-content:center;transition:background-color .1s linear}.ansi-black-fg{color:#000}.ansi-black-bg{background-color:#000}.ansi-red-fg{color:#f66}.ansi-red-bg{background-color:#f66}.ansi-green-fg{color:#94f494}.ansi-green-bg{background-color:#94f494}.ansi-yellow-fg{color:#f4f47b}.ansi-yellow-bg{background-color:#f4f47b}.ansi-blue-fg{color:#9e9eff}.ansi-blue-bg{background-color:#9e9eff}.ansi-magenta-fg{color:#db6bdb}.ansi-magenta-bg{background-color:#db6bdb}.ansi-cyan-fg{color:#81eeee}.ansi-cyan-bg{background-color:#81eeee}.ansi-white-fg{color:#d6d6d6}.ansi-white-bg{background-color:#d6d6d6}.ansi-bright-black-fg{color:#6e6e6e}.ansi-bright-red-fg{color:#ffa8a8}.ansi-bright-green-fg{color:#0f0}.ansi-bright-yellow-fg{color:#ffffa8}.ansi-bright-blue-fg{color:#9494ff}.ansi-bright-magenta-fg{color:#ffb3ff}.ansi-bright-cyan-fg{color:#adffff}.ansi-bright-white-fg{color:#fff}.active-view-transition.close-thread-sidebar,.active-view-transition.open-thread-sidebar{--vt_model_picker:model-picker;--vt_share_chat_wide_button:share-chat-wide-button;--vt_share_chat_compact_button:share-chat-compact-button;--vt_thread_tools:thread-tools;--thread-extended-info-transition-name:thread-extended-info;--vt-disable-screen-column-transition:none;--vt_toggle_sidebar_opened:toggle-sidebar-icon-opened;--vt_toggle_sidebar_closed:toggle-sidebar-icon-closed;--vt-thread-header-open-canvas:open-canvas-button;--vt-composer-speech-button:composer-speech-button;--vt_new_chat_thread:new-chat-thread;--vt-profile-avatar-thread:profile-avatar-active}@media (prefers-reduced-motion:reduce){:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition{display:none}}:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-group(*),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(*),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(*){animation-duration:var(--vt-duration,.3s);animation-timing-function:var(--vt-timing-function,var(--spring-common))}:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(composer-speech-button),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(model-picker),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(open-canvas-button),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(share-chat-compact-button),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(share-chat-wide-button),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(thread-tools),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(toggle-sidebar-icon){display:none}:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(composer-speech-button),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(model-picker),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(open-canvas-button),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(share-chat-compact-button),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(share-chat-wide-button),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(thread-tools),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(toggle-sidebar-icon){animation:none;height:100%}:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-group(profile-avatar-active){animation:none;z-index:2}:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(profile-avatar-active){animation:none}:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(thread-extended-info),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(thread-extended-info){height:100%;object-fit:none;overflow:clip}:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-new(thread),:is(.active-view-transition.open-thread-sidebar,.active-view-transition.close-thread-sidebar)::view-transition-old(thread){height:100%;object-fit:none;overflow:clip}:is(.active-view-transition.open-thread-sidebar)::view-transition-old(thread-extended-info){display:none}:is(.active-view-transition.close-thread-sidebar)::view-transition-new(thread-extended-info){display:none}@keyframes _fade_4f9by_7{to{opacity:1}}._fadeIn_4f9by_7{animation:_fade_4f9by_7 var(--duration,0s) cubic-bezier(.37,.55,.86,.88) forwards var(--delay,0s);animation-iteration-count:1;opacity:0}@media (prefers-reduced-motion:reduce){._fadeIn_4f9by_7{--duration:0s;opacity:1}}._marker_4f9by_21._hidden_4f9by_21{display:none}._marker_4f9by_21._animate_4f9by_25{animation:_fade_4f9by_7 var(--duration,0s) cubic-bezier(.37,.55,.86,.88) forwards var(--delay,0s);animation-iteration-count:1;opacity:0}@media (prefers-reduced-motion:reduce){._marker_4f9by_21._animate_4f9by_25{--duration:0s;opacity:1}}@keyframes _slideUp_1kuxv_21{0%{pointer-events:none;transform:translateY(30vh)}to{pointer-events:auto;transform:translateY(0)}}@keyframes _fadeIn_1kuxv_1{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:no-preference){._slideUp_1kuxv_21{animation:_fadeIn_1kuxv_1 .2s linear forwards,_slideUp_1kuxv_21 .7s var(--spring-common) forwards}}@keyframes _fade-in_m1hgl_1{to{opacity:1}}._root_m1hgl_7 ._fadeIn_m1hgl_8,._root_m1hgl_7 blockquote,._root_m1hgl_7 code,._root_m1hgl_7 hr,._root_m1hgl_7 li,._root_m1hgl_7 pre,._root_m1hgl_7 tr{animation:_fade-in_m1hgl_1 var(--duration,.7s) cubic-bezier(.37,.55,.86,.88) forwards;opacity:0}@media (prefers-reduced-motion:reduce){._root_m1hgl_7 ._fadeIn_m1hgl_8,._root_m1hgl_7 blockquote,._root_m1hgl_7 code,._root_m1hgl_7 hr,._root_m1hgl_7 li,._root_m1hgl_7 pre,._root_m1hgl_7 tr{--duration:0s;opacity:1}}._tableContainer_80l1q_1{--thread-content-width:min(calc(100cqw - var(--thread-content-margin, 0)*2),var(--thread-content-max-width));--thread-gutter-size:calc((100cqw - var(--thread-content-width))/2);margin-inline:calc(var(--thread-gutter-size)*-1);overflow-x:auto;pointer-events:none;scrollbar-width:none;width:100cqw - 2 * var(--mini-thread-content-inset,0)}._tableWrapper_80l1q_14{margin-inline:var(--thread-gutter-size) var(--thread-content-margin);pointer-events:auto}@keyframes _fade_1frq2_1{0%{opacity:0}to{opacity:1}}._markdown_1frq2_10.markdown .katex-error{display:none}._markdown_1frq2_10.markdown .katex-display{animation:_fade_1frq2_1 .4s ease 50ms forwards;opacity:0}._markdown_1frq2_10.markdown p{margin-bottom:0!important}._leadingBar_sbmq2_1{box-shadow:0 1px 0 transparent;@keyframes _add-top-shadow_sbmq2_1{0%{box-shadow:0 1px 0 transparent}0.1%,to{box-shadow:0 1px 0 var(--border-sharp)}}animation-range:0 1px;animation:_add-top-shadow_sbmq2_1 linear both}._leadingBarScrollAnimation_sbmq2_19{animation-timeline:scroll()}._trailingBar_sbmq2_23{box-shadow:0 -1px 0 transparent;@keyframes _add-bottom-shadow_sbmq2_1{0%,99.9%{box-shadow:0 -1px 0 var(--border-sharp)}to{box-shadow:0 -1px 0 transparent}}animation-range:0 1px;animation:_add-bottom-shadow_sbmq2_1 linear both}._trailingBarScrollAnimation_sbmq2_41{animation-timeline:scroll()}._primary_sbmq2_45{background-color:var(--bar-background-color,var(--main-surface-primary))}._screen_c7xqp_1{display:var(--screen-display,grid);grid-template-areas:"leading" "content" "trailing" "keyboard";grid-template-columns:minmax(0,1fr);grid-template-rows:max-content 1fr max-content auto}@supports not (overflow:clip){._screen_c7xqp_1{overflow:var(--screen-overflow,hidden auto)}}@supports (overflow:clip){._screen_c7xqp_1{overflow:var(--screen-overflow,clip auto)}}._screen_c7xqp_1{padding-top:calc(var(--screen-anchor-top) + var(--screen-top-offset, 0px));scrollbar-gutter:var(--screen-scrollbar-gutter-override,stable);width:100%}._screen_c7xqp_1 [slot=content]{grid-area:content;padding-inline:var( --screen-content-inline-padding,var(--screen-inline-padding) );position:var(--screen-content-position,relative)}._screen_c7xqp_1 [slot=leading]{grid-area:leading;min-width:var(--screen-leading-slot-min-width);overflow:var(--screen-leading-slot-overflow);position:sticky;top:var(--screen-leading-slot-top,0);z-index:var(--screen-leading-slot-z-index,20)}._screen_c7xqp_1 [slot=trailing]{bottom:var(--keyboard-safe-area-bottom,0);grid-area:trailing;padding-inline:var( --screen-trailing-inline-padding,var(--screen-inline-padding) );position:sticky;z-index:var(--screen-leading-slot-z-index,20)}._screen_c7xqp_1 [slot=keyboard]{background:#fcfcfc;bottom:0;grid-area:keyboard;height:var(--keyboard-safe-area-bottom,0);position:sticky}._screen_c7xqp_1:where([screen-anchor=vertical],[screen-anchor=top]){--safe-area-top: calc(env(titlebar-area-y, 0px) + env(safe-area-inset-top, 0px)) ;--screen-anchor-top:var(--safe-area-top)}._screen_c7xqp_1:where([screen-anchor=vertical],[screen-anchor=bottom]){--safe-area-bottom:env(safe-area-inset-bottom,0px);--keyboard-safe-area-bottom:max(var(--screen-keyboard-height),env(keyboard-inset-height,0px));--screen-anchor-bottom:var(--safe-area-bottom)}._lightbox_1ruyj_1{transition-behavior:allow-discrete}._lightbox_1ruyj_1::backdrop{transition-behavior:allow-discrete;view-transition-name:backdrop;opacity:0;transition:.4s opacity var(--spring-fast)}@media (prefers-reduced-motion:reduce){._lightbox_1ruyj_1::backdrop{transition-duration:.1s}}._lightbox_1ruyj_1[open]::backdrop{opacity:1}@starting-style{._lightbox_1ruyj_1[open]::backdrop{opacity:0}}._carousel_1ruyj_26::scroll-button(left),._carousel_1ruyj_26::scroll-button(right){position-anchor:--carousel;aspect-ratio:1;background-color:var(--main-surface-primary);border:1px solid var(--color-token-border-default);border-radius:50%;color:var(--marker-color,var(--main-surface-primary-inverse));cursor:pointer;display:grid;margin-inline:12px;padding-block-start:4px;place-items:center;position:fixed;transition:opacity .4s var(--ease-spring-standard);width:44px}@starting-style{._carousel_1ruyj_26::scroll-button(left),._carousel_1ruyj_26::scroll-button(right){opacity:.3}}._carousel_1ruyj_26::scroll-button(right){--_inner:center span-inline-start;--_outer:inline-end center;position-area:var(--_inner);content:url("data:image/svg+xml;utf8,") /"Next"}._carousel_1ruyj_26::scroll-button(*):disabled{opacity:.3}._carousel_1ruyj_26::scroll-button(left){--_inner:center span-inline-end;--_outer:inline-start center;position-area:var(--_inner);content:url("data:image/svg+xml;utf8,") /"Previous";scale:-1 1}._threadRoot_1y3t0_1{--thread-safe-area-height:calc(100lvh - var(--thread-safe-area-inset-top) - var(--thread-safe-area-inset-bottom));--thread-safe-area-inset-top:calc(var(--header-height) + env(safe-area-inset-top, 0px));--thread-safe-area-inset-bottom:calc(var(--thread-footer-height, 150px) + var(--screen-keyboard-height, 0px) + env(safe-area-inset-bottom, 0px))}._threadGutter_1y3t0_22{--thread-end-gutter-active-height:calc(var(--thread-safe-area-height) - var(--thread-stream-context-height) - var(--thread-turn-vertical-padding)*2);--thread-stream-context-height:max(2.75rem + 2 * var(--thread-turn-vertical-padding),1/3 * var(--thread-safe-area-height));--thread-turn-vertical-padding:1.25rem} diff --git a/Clippings/big_array_in_SDRAM_BlackFin_files/cot-message-n4x930jt.css b/Clippings/big_array_in_SDRAM_BlackFin_files/cot-message-n4x930jt.css new file mode 100644 index 0000000..4a0c581 --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin_files/cot-message-n4x930jt.css @@ -0,0 +1 @@ +@keyframes fade-in{0%{opacity:0}to{opacity:1}}.teleprompter{overflow:visible;position:relative}.teleprompter-inner{align-content:flex-start;display:flex;flex-wrap:wrap;inset:0;position:absolute}.teleprompter-word{animation:fade-in var(--fade,.5s) cubic-bezier(.37,.55,.86,.88) forwards;opacity:0;white-space:pre}@keyframes dot-fade{0%,to{opacity:.5}50%{opacity:1}}.animate-dot-fade{animation:dot-fade 1s ease-in-out infinite} diff --git a/Clippings/big_array_in_SDRAM_BlackFin_files/prosemirror-eh65ggsy.css b/Clippings/big_array_in_SDRAM_BlackFin_files/prosemirror-eh65ggsy.css new file mode 100644 index 0000000..15f2acc --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin_files/prosemirror-eh65ggsy.css @@ -0,0 +1 @@ +._override-strong-color_y6grp_1 strong{color:inherit!important}._main_5jn6z_1.ProseMirror li p{margin:0}._main_5jn6z_1.ProseMirror:focus-visible{outline:none}._main_5jn6z_1.ProseMirror .ProseMirror-separator{display:none}._main_5jn6z_1.ProseMirror td p,._main_5jn6z_1.ProseMirror th p{margin:0}[dir=ltr] ._main_5jn6z_1.ProseMirror td{padding-left:.75rem}[dir=rtl] ._main_5jn6z_1.ProseMirror td{padding-right:.75rem}._main_5jn6z_1.ProseMirror h1,._main_5jn6z_1.ProseMirror h2,._main_5jn6z_1.ProseMirror h3{line-height:normal}._main_5jn6z_1.ProseMirror p .selection-highlight{padding-bottom:.28em;padding-top:.28em}._main_5jn6z_1.ProseMirror pre:has(>code){border-radius:4px;font-size:1rem;line-height:1.4;padding-bottom:calc(.5rem + 4px);padding-top:calc(.5rem + 4px)}[dir=ltr] ._main_5jn6z_1.ProseMirror pre:has(>code){padding-left:calc(.5rem + 6px);padding-right:calc(.5rem + 2px)}[dir=rtl] ._main_5jn6z_1.ProseMirror pre:has(>code){padding-left:calc(.5rem + 2px);padding-right:calc(.5rem + 6px)}._main_5jn6z_1.ProseMirror:is(.dark *) pre:has(>code){background-color:#1e1e1e}._main_5jn6z_1.ProseMirror:not(.dark *) pre:has(>code){background-color:var(--main-surface-secondary)} diff --git a/Clippings/big_array_in_SDRAM_BlackFin_files/root-h5ova026.css b/Clippings/big_array_in_SDRAM_BlackFin_files/root-h5ova026.css new file mode 100644 index 0000000..7e52424 --- /dev/null +++ b/Clippings/big_array_in_SDRAM_BlackFin_files/root-h5ova026.css @@ -0,0 +1 @@ +.composer-parent{--composer-footer_height:var(--composer-bar_footer-current-height,32px);--composer-bar_height:var(--composer-bar_current-height,52px);--composer-bar_width:var(--composer-bar_current-width,768px);--mask-fill:linear-gradient(180deg,#fff 0%,#fff);--mask-erase:linear-gradient(180deg,#000 0%,#000)}.masked-content{--content-gradient:linear-gradient(0deg,color(display-p3 .851 .851 .851),color(display-p3 .8488 .8488 .8488/.99) 8.07%,color(display-p3 .8423 .8423 .8423/.98) 15.54%,color(display-p3 .8317 .8317 .8317/.95) 22.5%,color(display-p3 .8171 .8171 .8171/.92) 29.04%,color(display-p3 .7988 .7988 .7988/.87) 35.26%,color(display-p3 .777 .777 .777/.82) 41.25%,color(display-p3 .7518 .7518 .7518/.75) 47.1%,color(display-p3 .7234 .7234 .7234/.68) 52.9%,color(display-p3 .692 .692 .692/.6) 58.75%,color(display-p3 .6578 .6578 .6578/.52) 64.74%,color(display-p3 .621 .621 .621/.42) 70.96%,color(display-p3 .5817 .5817 .5817/.33) 77.5%,color(display-p3 .5401 .5401 .5401/.22) 84.46%,color(display-p3 .4965 .4965 .4965/.11) 91.93%,color(display-p3 .451 .451 .451/0));--composer-bar_safe-margins:20px;-webkit-mask-composite:source-out;mask-composite:subtract;-webkit-mask-image:var(--mask-fill),var(--content-gradient),var(--composer-bar_skeleton);mask-image:var(--mask-fill),var(--content-gradient),var(--composer-bar_skeleton);mask-mode:luminance;-webkit-mask-position:top center,center calc(100% - var(--composer-footer_height)),center calc(100% - var(--composer-footer_height));mask-position:top center,center calc(100% - var(--composer-footer_height)),center calc(100% - var(--composer-footer_height));-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:auto,calc(100% - var(--composer-bar_safe-margins)) calc(var(--composer-bar_height) + var(--composer-bar_mask-grace-area)),var(--composer-bar_width) var(--composer-bar_height);mask-size:auto,calc(100% - var(--composer-bar_safe-margins)) calc(var(--composer-bar_height) + var(--composer-bar_mask-grace-area)),var(--composer-bar_width) var(--composer-bar_height)}@media (prefers-reduced-transparency:reduce){.masked-content{-webkit-mask-image:none;mask-image:none}}.mask-scrollbars{--scrollbar-width:10px;clip-path:inset(-100vh var(--scrollbar-width) 0 0);clip-path:inset(-100svh var(--scrollbar-width) 0 0)}.bg-thread--header{background:linear-gradient(to bottom,transparent 0,transparent 50%,var(--main-surface-primary) 50%,var(--main-surface-primary) 100%);height:var(--composer-bar_height);-webkit-mask-composite:source-out;mask-composite:subtract;-webkit-mask-image:var(--mask-fill),var(--composer-bar_skeleton);mask-image:var(--mask-fill),var(--composer-bar_skeleton);mask-mode:luminance;-webkit-mask-position:top center,top center;mask-position:top center,top center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:auto;mask-size:auto}@media (prefers-reduced-transparency:reduce){.bg-thread--header{-webkit-mask-image:none;mask-image:none}}.bg-thread--footer{background:var(--main-surface-primary);flex:1}:root{--spring-fast-duration:667ms;--spring-fast:linear(0,.01942 1.83%,.07956 4.02%,.47488 13.851%,.65981 19.572%,.79653 25.733%,.84834 29.083%,.89048 32.693%,.9246 36.734%,.95081 41.254%,.97012 46.425%,.98361 52.535%,.99665 68.277%,.99988);--spring-common-duration:667ms;--spring-common:linear(0,.00506 1.18%,.02044 2.46%,.08322 5.391%,.46561 17.652%,.63901 24.342%,.76663 31.093%,.85981 38.454%,.89862 42.934%,.92965 47.845%,.95366 53.305%,.97154 59.516%,.99189 74.867%,.9991);--spring-standard:var(--spring-common);--spring-slow-bounce-duration:1167ms;--spring-slow-bounce:linear(0,.00172 .51%,.00682 1.03%,.02721 2.12%,.06135 3.29%,.11043 4.58%,.21945 6.911%,.59552 14.171%,.70414 16.612%,.79359 18.962%,.86872 21.362%,.92924 23.822%,.97589 26.373%,1.01 29.083%,1.0264 31.043%,1.03767 33.133%,1.04411 35.404%,1.04597 37.944%,1.04058 42.454%,1.01119 55.646%,1.00137 63.716%,.99791 74.127%,.99988);--spring-bounce-duration:833ms;--spring-bounce:linear(0,.00541 1.29%,.02175 2.68%,.04923 4.19%,.08852 5.861%,.17388 8.851%,.48317 18.732%,.57693 22.162%,.65685 25.503%,.72432 28.793%,.78235 32.163%,.83182 35.664%,.87356 39.354%,.91132 43.714%,.94105 48.455%,.96361 53.705%,.97991 59.676%,.9903 66.247%,.99664 74.237%,.99968 84.358%,1.00048);--spring-fast-bounce-duration:1s;--spring-fast-bounce:linear(0,.00683 1.14%,.02731 2.35%,.11137 5.091%,.59413 15.612%,.78996 20.792%,.92396 25.953%,.97109 28.653%,1.00624 31.503%,1.03801 36.154%,1.0477 41.684%,1.00242 68.787%,.99921);--easing-common:ease-in-out;--easing-common:linear(0,0,.0001,.0002,.0003,.0005,.0007,.001,.0013,.0016,.002,.0024,.0029,.0033,.0039,.0044,.005,.0057,.0063,.007,.0079,.0086,.0094,.0103,.0112,.0121,.0132 1.84%,.0153,.0175,.0201,.0226,.0253,.0283,.0313,.0345,.038,.0416,.0454,.0493,.0535,.0576,.0621,.0667,.0714,.0764,.0816 5.04%,.0897,.098 5.62%,.1071,.1165,.1263 6.56%,.137,.1481 7.25%,.1601 7.62%,.1706 7.94%,.1819 8.28%,.194,.2068 9.02%,.2331 9.79%,.2898 11.44%,.3151 12.18%,.3412 12.95%,.3533,.365 13.66%,.3786,.3918,.4045,.4167,.4288,.4405,.452,.4631 16.72%,.4759,.4884,.5005,.5124,.5242,.5354,.5467,.5576,.5686,.5791,.5894,.5995,.6094,.6194,.6289,.6385,.6477,.6569,.6659 24.45%,.6702,.6747,.6789,.6833,.6877,.6919,.696,.7002,.7043,.7084,.7125,.7165,.7205,.7244,.7283,.7321,.7358,.7396,.7433,.7471,.7507,.7544,.7579,.7615,.7649,.7685,.7718,.7752,.7786,.782,.7853,.7885,.7918,.7951,.7982,.8013,.8043,.8075,.8104,.8135,.8165,.8195,.8224,.8253,.8281,.8309,.8336,.8365,.8391,.8419,.8446,.8472,.8499,.8524,.855,.8575,.8599,.8625 37.27%,.8651,.8678,.8703,.8729,.8754,.8779,.8803,.8827,.8851,.8875,.8898,.892,.8942,.8965,.8987,.9009,.903,.9051,.9071,.9092,.9112,.9132,.9151,.9171,.919,.9209,.9227,.9245,.9262,.928,.9297,.9314,.9331,.9347,.9364,.9379,.9395,.941,.9425,.944,.9454,.9469,.9483,.9497,.951,.9524,.9537,.955,.9562,.9574,.9586,.9599,.961,.9622,.9633,.9644,.9655,.9665,.9676,.9686,.9696,.9705,.9715,.9724,.9733,.9742,.975,.9758,.9766,.9774,.9782,.9789,.9796,.9804,.9811,.9817,.9824,.9831,.9837,.9843,.9849,.9855,.986,.9866,.9871,.9877,.9882,.9887,.9892,.9896 70.56%,.9905 71.67%,.9914 72.82%,.9922,.9929 75.2%,.9936 76.43%,.9942 77.71%,.9948 79.03%,.9954 80.39%,.9959 81.81%,.9963 83.28%,.9968 84.82%,.9972 86.41%,.9975 88.07%,.9979 89.81%,.9982 91.64%,.9984 93.56%,.9987 95.58%,.9989 97.72%,.9991)}@supports not (white-space-collapse:collapse){:root :root{--easing-common:ease-in-out;--spring-common:ease-in-out;--spring-bounce:ease-in-out;--spring-fast:ease-in-out;--spring-fast-bounce:ease-in-out;--spring-slow-bounce:ease-in-out}}@supports not (transition-timing-function:linear(0,0 0%)){:root :root{--easing-common:ease-in-out;--spring-common:ease-in-out;--spring-bounce:ease-in-out;--spring-fast:ease-in-out;--spring-fast-bounce:ease-in-out;--spring-slow-bounce:ease-in-out}}@font-face{font-display:swap;font-family:Circle;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMk9UVE8AAAM0AAkAAAAABcgAAALuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYJIBmAAfgE2AiQDDAQGBYRyByAbIwVRlKvJFsDPBJtObcFDgzooFmKOOuZpZMG4Jg7aB8Nn8fzDvXrufz9r8tgCAU4XFVvjosSo0yqWv9Z+b8++or6Y3y3ikk0laqIkfBkSQzINien2vweAH79N8JdohCbbWndr/HZ5v86kXxrEqV+cqnlKNBcLjY0Bj8Ka512LSgsolgt1Wa1Wr27atM/jBW21RrW55g21jw81IoJNHn2c/z24BlCQTVVvW09zVvtAY1dzeOZwYxugoDCNO2g8kMZDDRpPRuPFajC3qWY31RzV9+loj/h/e6ud/0/bfxcbEILkKpVrQNhwTzuJycoVI0S9RjZZES7WjkQvApCsAhsUn3SuWdP3UZ0zRZT+X1OW1h0OGr9NflM3xRvmiClHqQORzvz/tQbQb7L8b7XUFdZrb+h13MhqctFw/8PP+snI1CnebrExOvET/Fh/hn+knPwQZw89wnNvi+62ERUZoHLr9BC1nCwROqghul1go6hTCVTs54ZppNw6x+jkYtzYdoEMTuGT8KCP/A/hDIeWUloqM4VXWm2g5T0CrvPF5g3kAs04zXJGkI7P96za7LmtKwgBAmhGzB07gBpPeEUAKyzEwwWJxIBzFaQeHZwg6BYQxo6W2Qwz739fUTpv+v/c+Xy3Sv6VF/uN3w8uFpdbNkDuXnWVGkBhvGn75R1LYEgq295Z+QHimbpBIbxAAQtPAhA2QAAaMjYQQHHzONnK8R1EFN9lrZmfUxvmFzjzl5dsLLNQqwDEx+49z7B0yrNi3SQ58LwmAy/AqeOtOWduzoY8+2s/wMFgbxAWiEesMNZAalIE2r8JllitrXeokZEbwVJpR0hSXFLwa+wftjSPNWMSERMRGxMrEi0DVYcfdnhxQ66Eqt62nmYsq32gsaspM4cb2ypPtQ531Q+IIoj9J0lKy0pzkjTFKxoOtd8ODLb39mD0t/UONT71Ry6QDBlaIonr767vbJaUtzSPNQOBmOXFihFLROyYXvXnrUOTszoAAA==) format("woff2")}@font-face{font-display:swap;font-family:Circle;font-style:normal;font-weight:600;src:url(data:font/woff2;base64,d09GMk9UVE8AAANIAAkAAAAABkwAAAMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYJQBmAAfgE2AiQDDAQGBYVwByAbqQVRlMVNBfiRkLl5oxlVNKr4xQKiOJqYMp0zZd4iyiabvWs/aWpaEhyiBiMQGoNCIoys0xiDZnJteLRGXET3IpoQq697VFOmBlImcVhpy3pWuy6ZGDJnDoFpIwM96olCINQDUebsKzfc8cml+mMBP82Lfx5kKvx3Td2DFtCONwWq1Ru/VIs7/gTVpl7hgkiHscva/P1RKvnkOj2uDshaX5Id6vvRLs7Q7ZY7RUIphhAYQskQ6gJDmGIIZ4YIVbgw4aJK86iJ8ai2EeK+a2PFayPSEw4h7uwclpQxdejLyi11M9Iy2h0j4eJMBI28mehJINkCFioovm/Yah6VpgBJUm48kUyWnPA1xAhNmKY1S5qwFaT01WKAtvHEg6QZc9todjOVtRlP+hmjzDDS5vtMPD748Cgn0q2zV69y9Mytow/50QcHH4tnHBQWHuslA/3B8O2e6uPdV9vO1B/lSKo5WCl4o2ahQUcDvW2kuxvh3SOtegPX6+drRCVHhYM1R9HgaP3ZtqvIQwHcGn6o8wf644VngrsJ4QBWcbQHGrW2K7XgmT5uPpAHTOivlgPGIeL+mbnYY7xhj5AEAtSqfMIBaNDgjWfcMFRmHIrAIqAO7J4cqgRylIjSHx27HeBe+8o/qp1Xbb/IqsC9ZI03+w/fbWoexLpPI+sf04PMBbjGKDw6XInbdQiytiHo/3RWkeUd9IkyXjTYfUMA4QsCKCpfBGjhAhFgEqQAAWZZygUw+FhGgI2LIwiw404iwEWQixiaHEGSvMqDgqv5QpHqDyV0WChLs4GKVj5Q18zvoKFe1Xk/BxaI0I2NKfxfK8J/W710UVzebArQ6NFEpCWN1fGWFBQegKAjSBCctI7wij+coRcCJGQgy7A42Q3Te14v7+6FuamjlQMEsKxdJHYlel9kJ5adv7kxHe2kcBAeviIZGBpwSO2aZ7b9TXUzD/i7C8jF1drRAeiL2ZWjm6Rq8sFp4jKIQOBI9iJbyNGt7alX974oJIgBsRgsHDkMjr/FbPeiAAAA) format("woff2")}@font-face{font-display:swap;font-family:OpenAI Sans;font-weight:300 700;src:url(https://cdn.openai.com/common/fonts/openai-sans-variable/OpenAISansVariableVF.woff2) format("woff2"),url(https://cdn.openai.com/common/fonts/openai-sans-variable/OpenAISansVariableVF.woff) format("woff")}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-border-style:solid;--tw-font-weight:initial;--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-divide-y-reverse:0;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial;--tw-content:""}}}@layer theme{:host,:root{--spacing:.25rem;--breakpoint-md:48rem;--breakpoint-lg:64rem;--breakpoint-xl:80rem;--breakpoint-2xl:96rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:1.33333;--text-sm:.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--text-xl:1.25rem;--text-xl--line-height:1.4;--text-2xl:1.5rem;--text-2xl--line-height:1.33333;--text-3xl:1.875rem;--text-3xl--line-height:1.2;--text-4xl:2.25rem;--text-4xl--line-height:1.11111;--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-xs:0 1px 1px #0000000d;--drop-shadow-md:0 3px 3px #0000001f;--drop-shadow-lg:0 4px 4px #00000026;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--animate-bounce:bounce 1s infinite;--blur-xs:4px;--blur-sm:8px;--blur-md:12px;--blur-lg:16px;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--text-heading-2:1.5rem;--text-heading-2--line-height:1.75rem;--text-heading-2--letter-spacing:-.015625rem;--text-heading-2--font-weight:600;--text-heading-3:1.125rem;--text-heading-3--line-height:1.625rem;--text-heading-3--letter-spacing:-.028125rem;--text-heading-3--font-weight:600;--text-body-small-regular:.875rem;--text-body-small-regular--line-height:1.125rem;--text-body-small-regular--letter-spacing:-.01875rem;--text-body-small-regular--font-weight:400;--text-monospace:.9375rem;--text-monospace--line-height:1.375rem;--text-monospace--letter-spacing:-.025rem;--text-monospace--font-weight:400;--text-caption-regular:.75rem;--text-caption-regular--line-height:1rem;--text-caption-regular--letter-spacing:-.00625rem;--text-caption-regular--font-weight:400}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,Helvetica,Apple Color Emoji,Arial,sans-serif,Segoe UI Emoji,Segoe UI Symbol;font-variation-settings:normal;line-height:1.5;tab-size:4}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{font-feature-settings:inherit;background-color:#0000;border-radius:0;color:inherit;font:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{font-feature-settings:inherit;background-color:#0000;border-radius:0;color:inherit;font:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:where([data-silk~=b0]:not([data-silk~=g0])){--silk-defaults:initial;position:var(--silk-defaults,relative)}:where([data-silk~=g0]){--silk-defaults:initial;--x-collapsed-scrollbar-thickness:0px;--y-collapsed-scrollbar-thickness:0px;position:var(--silk-defaults,fixed)}:where([data-silk~=a1]){--silk-defaults:initial;--x-collapsed-scrollbar-thickness:0px;--y-collapsed-scrollbar-thickness:0px;bottom:var(--silk-defaults,var(--silk-default-bottom,initial));height:var(--silk-defaults,100%);position:var(--silk-defaults,fixed);top:var(--silk-defaults,var(--silk-default-top,initial));width:var(--silk-defaults,100%)}[dir=ltr] :where([data-silk~=a1]){left:var(--silk-defaults,var(--silk-default-left,initial));right:var(--silk-defaults,var(--silk-default-right,initial))}[dir=rtl] :where([data-silk~=a1]){left:var(--silk-defaults,var(--silk-default-right,initial));right:var(--silk-defaults,var(--silk-default-left,initial))}:where([data-silk~=a1]>*){--NOTE: ;--silk-default-top:initial;--silk-default-bottom:initial;--silk-default-left:initial;--silk-default-right:initial}:where([data-silk~=a2]){--silk-defaults:initial;background-color:var(--silk-defaults,#000);bottom:var(--silk-defaults,0);left:var(--silk-defaults,0);opacity:var(--silk-defaults,.5);right:var(--silk-defaults,0);top:var(--silk-defaults,0)}:where([data-silk~=a11]){--silk-defaults:initial;background-color:var(--silk-defaults,#fff);height:var(--silk-defaults,var(--silk-default-height,initial));width:var(--silk-defaults,var(--silk-default-width,initial))}[data-silk~="0af"],[data-silk~=a11]:has(:where([data-silk~=a12])){background-color:initial}:where([data-silk~=f0]){--silk-defaults:initial;height:var(--silk-defaults,100%);width:var(--silk-defaults,100%)}:where([data-silk~=a12]){--silk-defaults:initial;background-color:var(--silk-defaults,#fff);border-radius:var(--silk-defaults,inherit)}:where([data-silk~=a16]){--silk-defaults:initial;position:var(--silk-defaults,relative)}:where([data-silk~=a16]):before{--silk-defaults:initial;content:var(--silk-defaults,"");display:var(--silk-defaults,block);height:var(--silk-defaults,max(100%,48px));position:var(--silk-defaults,absolute);top:var(--silk-defaults, calc(max(100%,48px)/-2 + 50%) );width:var(--silk-defaults,max(100%,48px))}[dir=ltr] :where([data-silk~=a16]):before{left:var(--silk-defaults, calc(max(100%,48px)/-2 + 50%) )}[dir=rtl] :where([data-silk~=a16]):before{right:var(--silk-defaults, calc(max(100%,48px)/-2 + 50%) )}:where([data-silk~=a17]){--silk-defaults:initial;appearance:var(--silk-defaults,none);background-color:var(--silk-defaults,#cbd5e1);height:var(--silk-defaults,5.5px);width:var(--silk-defaults,48px)}[data-silk~=b0][data-silk~=bBf]{overflow:hidden auto!important;overscroll-behavior-y:none!important}[data-silk~=b0][data-silk~=bBe]{overflow:auto hidden!important;overscroll-behavior-x:none!important}[data-silk~=b0][data-silk~=bBg]{overflow:auto!important;overscroll-behavior:none!important}[data-silk~="0aj"] [data-silk~=b0][data-silk~=bCa][data-silk]{overflow:clip!important}[data-silk~=b0]:not(#\#):not(#\#){--NOTE:"Must not have `position: static`"}[data-silk~=b0]>*{--NOTE: }[data-silk~=b0]{scrollbar-width:none!important}[data-silk~=b0]::-webkit-scrollbar{display:none!important}[data-silk~=b0]:before{content:""!important;height:calc(100% + 600px)!important;position:absolute!important;top:0!important;width:calc(100% + 600px)!important}[dir=ltr] [data-silk~=b0]:before{left:0!important}[dir=rtl] [data-silk~=b0]:before{right:0!important}[data-silk~="0aj"] [data-silk~=b0][data-silk~=bCa][data-silk]:before,[data-silk~=b0][data-silk~=bAb][data-silk]:before{display:none!important}[data-silk~=b1]{height:100%!important;position:sticky!important;top:0!important;width:100%!important}[dir=ltr] [data-silk~=b1]{left:0!important}[dir=rtl] [data-silk~=b1]{right:0!important}:root{--silk-100-lvh-dvh-pct:max(100%,100vh)}@supports (width:1dvh){:root{--silk-100-lvh-dvh-pct:max(100dvh,100lvh)}}[data-silk~=a0]{--silk-aY:1}[data-silk~=a1][data-silk~=aGf],[data-silk~=a1][data-silk~=aGk]{--silk-default-top:0;--silk-default-left:0}[data-silk~=a1][data-silk~=aGg]{--silk-default-bottom:0;--silk-default-left:0}[data-silk~=a1][data-silk~=aGh],[data-silk~=a1][data-silk~=aGj]{--silk-default-top:0;--silk-default-left:0}[data-silk~=a1][data-silk~=aGi]{--silk-default-top:0;--silk-default-right:0}[data-silk~=a1]{--silk-aL:var(--silk-aL-from-props,1px);--silk-aJ:1px;--silk-aN:10px;--silk-aD:initial;--silk-aE:initial;--silk-aF:initial;--silk-aG:initial;--silk-aH:initial;--silk-aI:initial;--silk-aK:initial;--silk-aO:var(--silk-aD,100%);--silk-aP:var(--silk-aE,100%);--silk-aQ:min(300px,var(--silk-aO));--silk-aR:2px;--silk-aS:calc((var(--silk-aQ) - var(--silk-aR))*-1);border-width:0!important;overflow:clip!important}[data-silk~=a1][data-silk~=aAc]{opacity:0!important}[data-silk~=a1][data-silk~=aCs]{clip:rect(0 0 0 0)!important;border:0!important;clip-path:inset(0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:fixed!important;top:0!important;white-space:nowrap!important;width:1px!important}[dir=ltr] [data-silk~=a1][data-silk~=aCs]{left:0!important}[dir=rtl] [data-silk~=a1][data-silk~=aCs]{right:0!important}[data-silk~=a1][data-silk~=aNo]{pointer-events:none!important;-webkit-user-select:none!important;user-select:none!important}[data-silk~=a1]:not(#\#):not(#\#){--NOTE:"Must not have `position: static`"}[data-silk~=a1]>*{position:absolute}[data-silk~=a1]:not([data-silk~=aBaj]) *{caret-color:#0000}[data-silk~=a2]{position:absolute!important;z-index:-1!important}[data-silk~=a2][data-silk~=aNo]{pointer-events:none!important;-webkit-user-select:none!important;user-select:none!important}[data-silk~=a4][data-silk]{position:absolute}[data-silk~=a4][data-silk~=aGh],[data-silk~=a4][data-silk~=aGi],[data-silk~=a4][data-silk~=aGj]{height:var(--silk-aP);width:var(--silk-aO)}[data-silk~=a4][data-silk~=aGf],[data-silk~=a4][data-silk~=aGg],[data-silk~=a4][data-silk~=aGk]{height:var(--silk-aO);width:var(--silk-aP)}[data-silk~=a4].scrollContainerShouldBePassThrough\:true>[data-silk~=b1]>*{pointer-events:auto;-webkit-user-select:auto;user-select:auto}[data-silk~=a5][data-silk]{inset:0;position:absolute;z-index:-1}[data-silk~="0aj"] [data-silk~=a5][data-silk~=aNp]{pointer-events:auto!important;z-index:1}[data-silk~=a6]{--silk-aT:calc(var(--silk-aO)*2);display:flex;flex-wrap:nowrap;inset:0;place-items:center;position:absolute;z-index:1}[data-silk~=a6][data-silk~=aGh],[data-silk~=a6][data-silk~=aGi],[data-silk~=a6][data-silk~=aGj]{flex-direction:row;height:100%;overflow:auto hidden;scroll-snap-type:x mandatory;width:var(--silk-aT)}[data-silk~=a6][data-silk~=aGf],[data-silk~=a6][data-silk~=aGg],[data-silk~=a6][data-silk~=aGk]{flex-direction:column;height:var(--silk-aT);overflow:hidden auto;scroll-snap-type:y mandatory;width:100%}[dir=ltr] [data-silk~=a6][data-silk~=aGh]{left:calc(var(--silk-aO)*-1)}[dir=rtl] [data-silk~=a6][data-silk~=aGh],[dir=ltr] [data-silk~=a6][data-silk~=aGi]{right:calc(var(--silk-aO)*-1)}[dir=rtl] [data-silk~=a6][data-silk~=aGi]{left:calc(var(--silk-aO)*-1)}[data-silk~=a6][data-silk~=aGf]{top:calc(var(--silk-aO)*-1)}[data-silk~=a6][data-silk~=aGg]{bottom:calc(var(--silk-aO)*-1)}[dir=ltr] [data-silk~=a6][data-silk~=aGj]{left:calc(var(--silk-aO)*-.5)}[dir=rtl] [data-silk~=a6][data-silk~=aGj]{right:calc(var(--silk-aO)*-.5)}[data-silk~=a6][data-silk~=aGk]{top:calc(var(--silk-aO)*-.5)}[data-silk~=a6][data-silk~=aNo][data-silk]{pointer-events:none;-webkit-user-select:none;user-select:none}[data-silk~=a6][data-silk~=aHo][data-silk]{overflow:hidden}[data-silk~=a6][data-silk~=aMj]{overscroll-behavior-x:contain}[data-silk~=a6][data-silk~=aMk]{overscroll-behavior-y:contain}[data-silk~=a6][data-silk~=aMai]{overscroll-behavior:contain}[data-silk~=a6][data-silk~=aJo][data-silk~=aGh],[data-silk~=a6][data-silk~=aJo][data-silk~=aGi],[data-silk~=a6][data-silk~=aJo][data-silk~=aGj]{overscroll-behavior-x:none}[data-silk~=a6][data-silk~=aJo][data-silk~=aGf],[data-silk~=a6][data-silk~=aJo][data-silk~=aGg],[data-silk~=a6][data-silk~=aJo][data-silk~=aGk]{overscroll-behavior-y:none}[data-silk~="0aj"] [data-silk~=a6][data-silk]{overflow:hidden}[data-silk~=a6]{scrollbar-width:none}[data-silk~=a6]::-webkit-scrollbar{display:none}[data-silk~=a6]>*{--silk-aO:var(--silk-aD,50%);flex-grow:0;flex-shrink:0}.Sheet_edgeMarker{overflow:hidden;position:absolute;z-index:1}.Sheet_edgeMarker[data-silk~=aFh],.Sheet_edgeMarker[data-silk~=aFi]{height:100%;width:30px}[dir=ltr] .Sheet_edgeMarker[data-silk~=aFh]{right:-2px}[dir=rtl] .Sheet_edgeMarker[data-silk~=aFh]{left:-2px}[dir=ltr] .Sheet_edgeMarker[data-silk~=aFi]{left:calc(var(--silk-aJ) + var(--silk-aN) + var(--silk-aO) - var(--silk-aO) + var(--silk-aF) - 2px)}[dir=rtl] .Sheet_edgeMarker[data-silk~=aFi]{right:calc(var(--silk-aJ) + var(--silk-aN) + var(--silk-aO) - var(--silk-aO) + var(--silk-aF) - 2px)}[data-silk~=a7]{pointer-events:none!important;-webkit-user-select:none!important;user-select:none!important}[data-silk~=a7][data-silk~=aGf],[data-silk~=a7][data-silk~=aGh]{order:3}[data-silk~=a7][data-silk~=aGg],[data-silk~=a7][data-silk~=aGi],[data-silk~=a7][data-silk~=aGj],[data-silk~=a7][data-silk~=aGk]{order:1}[data-silk~=a7][data-silk~=aGh],[data-silk~=a7][data-silk~=aGi],[data-silk~=a7][data-silk~=aGj]{height:1px;width:var(--silk-aH)}[data-silk~=a7][data-silk~=aGf],[data-silk~=a7][data-silk~=aGg],[data-silk~=a7][data-silk~=aGk]{height:var(--silk-aH);width:1px}[data-silk~=a7][data-silk~=aGg],[data-silk~=a7][data-silk~=aGi],[data-silk~=a7][data-silk~=aGj],[data-silk~=a7][data-silk~=aGk]{scroll-snap-align:start}[data-silk~=a7][data-silk~=aGf],[data-silk~=a7][data-silk~=aGh]{scroll-snap-align:end}[data-silk~=a10]{display:flex;order:2;pointer-events:none;position:sticky;-webkit-user-select:text;user-select:text;z-index:1}[data-silk~=a10][data-silk~=aFr][data-silk~=aGj],[data-silk~=a10][data-silk~=aFr][data-silk~=aGk]{position:relative}[data-silk~=a10][data-silk~=aGh],[data-silk~=a10][data-silk~=aGi],[data-silk~=a10][data-silk~=aGj]{align-items:center;height:100%;width:var(--silk-aO)}[data-silk~=a10][data-silk~=aFh]{justify-content:flex-start}[data-silk~=a10][data-silk~=aFi]{justify-content:flex-end}[data-silk~=a10][data-silk~=aGf],[data-silk~=a10][data-silk~=aGg],[data-silk~=a10][data-silk~=aGk]{height:var(--silk-aO);justify-content:center;width:100%}[data-silk~=a10][data-silk~=aFf]{align-items:flex-start}[data-silk~=a10][data-silk~=aFg]{align-items:flex-end}[data-silk~=a10][data-silk~=aFr]{align-items:center;justify-content:center}[data-silk~=a10][data-silk~=aGf],[data-silk~=a10][data-silk~=aGg],[data-silk~=a10][data-silk~=aGh],[data-silk~=a10][data-silk~=aGi]{--silk-aV:calc(var(--silk-aO) - var(--silk-aF) - var(--silk-aL))}[data-silk~=a10][data-silk~=aGf][data-silk~=aFr],[data-silk~=a10][data-silk~=aGg][data-silk~=aFr],[data-silk~=a10][data-silk~=aGh][data-silk~=aFr],[data-silk~=a10][data-silk~=aGi][data-silk~=aFr]{--silk-aV:calc((var(--silk-aO) - var(--silk-aF))/2 - var(--silk-aL))}[data-silk~=a10][data-silk~=aGj],[data-silk~=a10][data-silk~=aGk]{--silk-aV:calc((var(--silk-aO) - var(--silk-aF))/2 - var(--silk-aO)/2 - var(--silk-aL))}[dir=ltr] [data-silk~=a10][data-silk~=aGh]{left:var(--silk-aV)}[dir=rtl] [data-silk~=a10][data-silk~=aGh],[dir=ltr] [data-silk~=a10][data-silk~=aGi]{right:var(--silk-aV)}[dir=rtl] [data-silk~=a10][data-silk~=aGi]{left:var(--silk-aV)}[data-silk~=a10][data-silk~=aGf]{top:var(--silk-aV)}[data-silk~=a10][data-silk~=aGg]{bottom:var(--silk-aV)}[data-silk~=a10][data-silk~=aGj]:not([data-silk~=aFr]){left:var(--silk-aV);right:var(--silk-aV)}[data-silk~=a10][data-silk~=aGk]:not([data-silk~=aFr]){bottom:var(--silk-aV);top:var(--silk-aV)}[data-silk~=a15]{--INFO:This element prevents “swipe from edge to go back“ on iOS.See the Silk Sheet docs.;bottom:0;height:100%;pointer-events:auto;position:absolute;top:0;-webkit-user-select:none;user-select:none;width:30px;will-change:transform}[dir=ltr] [data-silk~=a15]{left:-2px}[dir=rtl] [data-silk~=a15]{right:-2px}[data-silk~=a15][data-silk~=aGf],[data-silk~=a15][data-silk~=aGg],[data-silk~=a15][data-silk~=aGk]{height:calc(100% + var(--silk-aH) + var(--silk-aI))}[data-silk~=a15][data-silk~=aGg],[data-silk~=a15][data-silk~=aGk]{bottom:calc(var(--silk-aI)*-1);top:calc(var(--silk-aH)*-1)}[data-silk~=a15][data-silk~=aGf]{bottom:calc(var(--silk-aH)*-1);top:calc(var(--silk-aI)*-1)}[data-silk~=a10][data-silk~=aJo][data-silk~=aIo]{--silk-aV:calc(var(--silk-aO) - var(--silk-aF) + var(--silk-aK))}[dir=ltr] [data-silk~=a10][data-silk~=aJo][data-silk~=aGh]{right:0}[dir=rtl] [data-silk~=a10][data-silk~=aJo][data-silk~=aGh],[dir=ltr] [data-silk~=a10][data-silk~=aJo][data-silk~=aGi]{left:0}[dir=rtl] [data-silk~=a10][data-silk~=aJo][data-silk~=aGi]{right:0}[data-silk~=a10][data-silk~=aJo][data-silk~=aGf]{bottom:0}[data-silk~=a10][data-silk~=aJo][data-silk~=aGg]{top:0}[dir=ltr] [data-silk~=a10][data-silk~=aJp][data-silk~=aGh]{right:var(--silk-aS)}[dir=rtl] [data-silk~=a10][data-silk~=aJp][data-silk~=aGh],[dir=ltr] [data-silk~=a10][data-silk~=aJp][data-silk~=aGi]{left:var(--silk-aS)}[dir=rtl] [data-silk~=a10][data-silk~=aJp][data-silk~=aGi]{right:var(--silk-aS)}[data-silk~=a10][data-silk~=aJp][data-silk~=aGf]{bottom:var(--silk-aS)}[data-silk~=a10][data-silk~=aJp][data-silk~=aGg]{top:var(--silk-aS)}[data-silk~=a11][data-silk~=aFf],[data-silk~=a11][data-silk~=aFg],[data-silk~=a11][data-silk~=aFr][data-silk~=aGf],[data-silk~=a11][data-silk~=aFr][data-silk~=aGg],[data-silk~=a11][data-silk~=aFr][data-silk~=aGk]{--silk-default-width:100%;--silk-default-height:50%}[data-silk~=a11][data-silk~=aFh],[data-silk~=a11][data-silk~=aFi],[data-silk~=a11][data-silk~=aFr][data-silk~=aGh],[data-silk~=a11][data-silk~=aFr][data-silk~=aGi],[data-silk~=a11][data-silk~=aFr][data-silk~=aGj]{--silk-default-width:50%;--silk-default-height:100%}[data-silk~=a11]{box-sizing:border-box!important;margin:0!important;overflow:visible!important;pointer-events:auto;position:relative!important;-webkit-user-select:auto;user-select:auto}[data-silk~=a11][data-silk~=aNo]{pointer-events:auto}[data-silk~=a11]:not(#\#):not(#\#){--NOTE:"Must not have `position: static`"}[data-silk~=a11]>*{--NOTE: ;--silk-default-width:initial;--silk-default-height:initial}[data-silk~=a12]{box-sizing:border-box!important;position:absolute!important;z-index:-1!important}[data-silk~=a12][data-silk~=aFh],[data-silk~=a12][data-silk~=aFi]{height:100%!important;width:calc(100% + var(--silk-aQ))!important}[data-silk~=a12][data-silk~=aKo][data-silk~=aFh],[data-silk~=a12][data-silk~=aKo][data-silk~=aFi]{width:100%!important}[data-silk~=a12][data-silk~=aFh]{top:0!important}[dir=ltr] [data-silk~=a12][data-silk~=aFh]{right:0!important}[dir=rtl] [data-silk~=a12][data-silk~=aFh]{left:0!important}[data-silk~=a12][data-silk~=aFi],[data-silk~=a12][data-silk~=aFr][data-silk~=aGj]{top:0!important}[dir=ltr] [data-silk~=a12][data-silk~=aFi],[dir=ltr] [data-silk~=a12][data-silk~=aFr][data-silk~=aGj]{left:0!important}[dir=rtl] [data-silk~=a12][data-silk~=aFi],[dir=rtl] [data-silk~=a12][data-silk~=aFr][data-silk~=aGj]{right:0!important}[data-silk~=a12][data-silk~=aFf],[data-silk~=a12][data-silk~=aFg]{height:calc(100% + var(--silk-aQ))!important;width:100%!important}[data-silk~=a12][data-silk~=aKo][data-silk~=aFf],[data-silk~=a12][data-silk~=aKo][data-silk~=aFg]{height:100%!important}[data-silk~=a12][data-silk~=aFf]{bottom:0!important}[dir=ltr] [data-silk~=a12][data-silk~=aFf]{left:0!important}[dir=rtl] [data-silk~=a12][data-silk~=aFf]{right:0!important}[data-silk~=a12][data-silk~=aFg],[data-silk~=a12][data-silk~=aFr][data-silk~=aGk]{top:0!important}[dir=ltr] [data-silk~=a12][data-silk~=aFg],[dir=ltr] [data-silk~=a12][data-silk~=aFr][data-silk~=aGk]{left:0!important}[dir=rtl] [data-silk~=a12][data-silk~=aFg],[dir=rtl] [data-silk~=a12][data-silk~=aFr][data-silk~=aGk]{right:0!important}[data-silk~=a12][data-silk~=aFr]{height:100%!important;width:100%!important}[data-silk~=a12]:not([data-silk~=aBaj])[data-silk~=aFf],[data-silk~=a12]:not([data-silk~=aBaj])[data-silk~=aFg]{height:calc(100% + 50px)!important}[data-silk~=a12]:not([data-silk~=aBaj])[data-silk~=aFh],[data-silk~=a12]:not([data-silk~=aBaj])[data-silk~=aFi]{width:calc(100% + 50px)!important}[data-silk~=a8]{pointer-events:none!important;position:relative;-webkit-user-select:none!important;user-select:none!important}[data-silk~=a8][data-silk~=aGf],[data-silk~=a8][data-silk~=aGh]{order:1;scroll-snap-align:start}[data-silk~=a8][data-silk~=aGg],[data-silk~=a8][data-silk~=aGi]{order:3;scroll-snap-align:end}[data-silk~=a8][data-silk~=aGh],[data-silk~=a8][data-silk~=aGi],[data-silk~=a8][data-silk~=aGj]{height:1px;width:var(--silk-aI)}[data-silk~=a8][data-silk~=aGf],[data-silk~=a8][data-silk~=aGg],[data-silk~=a8][data-silk~=aGk]{height:var(--silk-aI);width:1px}[data-silk~=a8][data-silk~=aGj],[data-silk~=a8][data-silk~=aGk]{order:3;scroll-snap-align:end}[data-silk~=a9]{--silk-aW:calc(100% + var(--silk-aF) - var(--silk-aB));--silk-aX:calc(var(--silk-aO) - var(--silk-aB) + var(--silk-aA));--debug-color:#209928;counter-increment:count 1;display:grid;place-items:center;position:absolute}[data-silk~=a9][data-silk~=aGh],[data-silk~=a9][data-silk~=aGi],[data-silk~=a9][data-silk~=aGj]{height:1px;width:calc(var(--silk-aB) - var(--silk-aA))}[data-silk~=a9][data-silk~=aGf],[data-silk~=a9][data-silk~=aGg],[data-silk~=a9][data-silk~=aGk]{height:calc(var(--silk-aB) - var(--silk-aA));width:1px}[data-silk~=a9][data-silk~=aGf],[data-silk~=a9][data-silk~=aGh]{scroll-snap-align:end}[data-silk~=a9][data-silk~=aGg],[data-silk~=a9][data-silk~=aGi]{scroll-snap-align:start}[data-silk~=a9][data-silk~=aGj],[data-silk~=a9][data-silk~=aGk]{scroll-snap-align:center}[dir=ltr] [data-silk~=a9][data-silk~=aGj]{right:calc(100% + (var(--silk-aO) - var(--silk-aB))/2)}[dir=rtl] [data-silk~=a9][data-silk~=aGj]{left:calc(100% + (var(--silk-aO) - var(--silk-aB))/2)}[data-silk~=a9][data-silk~=aGk]{bottom:calc(100% + (var(--silk-aO) - var(--silk-aB))/2)}[data-silk~=a9][data-silk~=aGh]{top:calc(var(--silk-aC)*10px)}[dir=ltr] [data-silk~=a9][data-silk~=aGh]{left:var(--silk-aW);scroll-margin-right:var(--silk-aX)}[dir=rtl] [data-silk~=a9][data-silk~=aGh]{right:var(--silk-aW);scroll-margin-left:var(--silk-aX)}@supports not (scroll-margin-right:1px){[dir=ltr] [data-silk~=a9][data-silk~=aGh]{scroll-snap-margin-right:var(--silk-aX)}[dir=rtl] [data-silk~=a9][data-silk~=aGh]{scroll-snap-margin-left:var(--silk-aX)}}[data-silk~=a9][data-silk~=aGi]{top:calc(var(--silk-aC)*10px)}[dir=ltr] [data-silk~=a9][data-silk~=aGi]{right:var(--silk-aW);scroll-margin-left:var(--silk-aX)}[dir=rtl] [data-silk~=a9][data-silk~=aGi]{left:var(--silk-aW);scroll-margin-right:var(--silk-aX)}@supports not (scroll-margin-left:1px){[dir=ltr] [data-silk~=a9][data-silk~=aGi]{scroll-snap-margin-left:var(--silk-aX)}[dir=rtl] [data-silk~=a9][data-silk~=aGi]{scroll-snap-margin-right:var(--silk-aX)}}[data-silk~=a9][data-silk~=aGf]{scroll-margin-bottom:var(--silk-aX);top:var(--silk-aW)}[dir=ltr] [data-silk~=a9][data-silk~=aGf]{left:calc(var(--silk-aC)*10px)}[dir=rtl] [data-silk~=a9][data-silk~=aGf]{right:calc(var(--silk-aC)*10px)}@supports not (scroll-margin-bottom:1px){[data-silk~=a9][data-silk~=aGf]{scroll-snap-margin-bottom:var(--silk-aX)}}[data-silk~=a9][data-silk~=aGg]{bottom:var(--silk-aW);scroll-margin-top:var(--silk-aX)}[dir=ltr] [data-silk~=a9][data-silk~=aGg]{left:calc(var(--silk-aC)*10px)}[dir=rtl] [data-silk~=a9][data-silk~=aGg]{right:calc(var(--silk-aC)*10px)}@supports not (scroll-margin-top:1px){[data-silk~=a9][data-silk~=aGg]{scroll-snap-margin-top:var(--silk-aX)}}[data-silk~=a9]:not(:only-child):last-child,[data-silk~=a9][data-silk~=aGf]:only-child,[data-silk~=a9][data-silk~=aGg]:only-child,[data-silk~=a9][data-silk~=aGh]:only-child,[data-silk~=a9][data-silk~=aGi]:only-child,[data-silk~=a9][data-silk~=aIo]:first-child{scroll-snap-align:none}[data-silk~=a9]:after{background-color:#fff;border-radius:100%;color:var(--debug-color);display:grid;font-size:18px;height:24px;padding:2px;place-items:center;width:24px}[dir=ltr] [data-silk~=a9]:after{margin-left:12px}[dir=rtl] [data-silk~=a9]:after{margin-right:12px}[data-silk~=e0]{word-wrap:normal!important;clip:rect(0,0,0,0)!important;border:0!important;clip-path:inset(0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}html[data-silk-native-page-scroll-replaced=true]{height:100dvh!important;overflow:hidden!important;width:100dvw!important}[data-standalone=true][data-silk-native-page-scroll-replaced=true]{height:100vh!important;overscroll-behavior:none!important}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cEb][data-silk~=cAc]){overscroll-behavior-x:none!important}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cEb][data-silk~=cAd]){overscroll-behavior-y:none!important}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cKa]){scroll-behavior:auto}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cKb]),html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cKk]){scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cKk]){scroll-behavior:auto}}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cLb]){overflow-anchor:none}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cMq]){scroll-snap-type:y proximity}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cMp]){scroll-snap-type:x proximity}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cMo]){scroll-snap-type:y mandatory}html[data-silk-native-page-scroll-replaced=false]:has([data-silk~=c2][data-silk~=cHa][data-silk~=cMn]){scroll-snap-type:x mandatory}[data-silk-native-page-scroll-replaced=true]>body{height:100dvh!important;overflow:hidden!important;width:100dvw!important}[data-standalone=true][data-silk-native-page-scroll-replaced=true]>body{height:100vh!important;overscroll-behavior:none!important}[data-standalone=false][data-silk-native-page-scroll-replaced=true]>body{position:fixed!important;top:0!important}[data-silk~=c4]{height:50px;overflow-y:scroll;pointer-events:none;position:fixed;top:-200px;width:50px}[data-silk~=c1]{--NOTE:"`display` can only be set to `none` or `grid`";display:grid;position:relative}html:not([data-silk-native-page-scroll-replaced=true]) [data-silk~=c1][data-silk~=cHa][data-silk~=cAc]{width:auto!important}html:not([data-silk-native-page-scroll-replaced=true]) [data-silk~=c1][data-silk~=cHa][data-silk~=cAd]{height:auto!important}[data-silk-native-page-scroll-replaced=true] [data-silk~=c1][data-silk~=cHa]{height:100dvh!important;width:100dvw!important}[data-standalone=true][data-silk-native-page-scroll-replaced=true] [data-silk~=c1][data-silk~=cHa]{height:100vh!important}[data-silk~=c1]>*{position:absolute!important}[data-silk~=c1][data-silk~=cQa] [contenteditable=true],[data-silk~=c1][data-silk~=cQa] input,[data-silk~=c1][data-silk~=cQa] textarea{caret-color:#0000!important}[data-silk~=c2]{display:grid!important;outline:none!important;padding:0!important;position:relative!important;scrollbar-color:inherit;scrollbar-gutter:inherit}[data-silk~=c2]:focus{outline:none}[data-silk-native-page-scroll-replaced=false] [data-silk~=c2][data-silk~=cHa]{overflow:visible!important}[data-silk~=c2][data-silk~=cAd]{overflow:hidden auto!important}[data-silk~=c2][data-silk~=cAc]{overflow:auto hidden!important}[data-silk~=c2][data-silk~=cAe]{overflow:auto!important}[data-silk~=c2]{--grid-template:0px max-content 0px max-content 0px max-content 0px!important}[data-silk~=c2][data-silk~=cAd]{grid-template-rows:var(--grid-template)}[data-silk~=c2][data-silk~=cAc]{grid-template-columns:var(--grid-template)}[data-silk~=c2][data-silk~=cCa]{overscroll-behavior-x:contain!important}[data-silk~=c2][data-silk~=cCa][data-silk~=cIb]{overscroll-behavior-x:none!important}[data-silk~=c2][data-silk~=cDa]{overscroll-behavior-y:contain!important}[data-silk~=c2][data-silk~=cDa][data-silk~=cJb]{overscroll-behavior-y:none!important}[data-silk~=c2][data-silk~=cCa][data-silk~=cIb][data-silk~=cJb]{overflow-x:auto!important}[data-silk~=c2][data-silk~=cDa][data-silk~=cIb][data-silk~=cJb]{overflow-y:auto!important}[data-silk~=c2][data-silk~=cEb][data-silk~=cAc]{overscroll-behavior-x:none!important}[data-silk~=c2][data-silk~=cEb][data-silk~=cAd]{overscroll-behavior-y:none!important}[data-silk~="0aj"] [data-silk~=c2],[data-silk~=c2][data-silk~=cFa]{overflow:hidden!important;overflow-anchor:none}[data-silk~="0aj"] [data-silk~=c2][data-silk~=cPa][data-silk~=cIa],[data-silk~=c2][data-silk~=cFa][data-silk~=cIa]{padding-bottom:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=ltr] [data-silk~="0aj"] [data-silk~=c2][data-silk~=cJa]:not(:lang(ae)):not(:lang(ar)):not(:lang(arc)):not(:lang(bcc)):not(:lang(bqi)):not(:lang(ckb)):not(:lang(dv)):not(:lang(fa)):not(:lang(glk)):not(:lang(he)):not(:lang(ku)):not(:lang(mzn)):not(:lang(nqo)):not(:lang(pnb)):not(:lang(ps)):not(:lang(sd)):not(:lang(ug)):not(:lang(ur)):not(:lang(yi)),[dir=ltr] [data-silk~=c2][data-silk~=cFa][data-silk~=cJa]:not(:lang(ae)):not(:lang(ar)):not(:lang(arc)):not(:lang(bcc)):not(:lang(bqi)):not(:lang(ckb)):not(:lang(dv)):not(:lang(fa)):not(:lang(glk)):not(:lang(he)):not(:lang(ku)):not(:lang(mzn)):not(:lang(nqo)):not(:lang(pnb)):not(:lang(ps)):not(:lang(sd)):not(:lang(ug)):not(:lang(ur)):not(:lang(yi)){padding-right:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=rtl] [data-silk~="0aj"] [data-silk~=c2][data-silk~=cJa]:not(:lang(ae)):not(:lang(ar)):not(:lang(arc)):not(:lang(bcc)):not(:lang(bqi)):not(:lang(ckb)):not(:lang(dv)):not(:lang(fa)):not(:lang(glk)):not(:lang(he)):not(:lang(ku)):not(:lang(mzn)):not(:lang(nqo)):not(:lang(pnb)):not(:lang(ps)):not(:lang(sd)):not(:lang(ug)):not(:lang(ur)):not(:lang(yi)),[dir=rtl] [data-silk~=c2][data-silk~=cFa][data-silk~=cJa]:not(:lang(ae)):not(:lang(ar)):not(:lang(arc)):not(:lang(bcc)):not(:lang(bqi)):not(:lang(ckb)):not(:lang(dv)):not(:lang(fa)):not(:lang(glk)):not(:lang(he)):not(:lang(ku)):not(:lang(mzn)):not(:lang(nqo)):not(:lang(pnb)):not(:lang(ps)):not(:lang(sd)):not(:lang(ug)):not(:lang(ur)):not(:lang(yi)){padding-left:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=ltr] :is([data-silk~=c2][data-silk~=cFa][data-silk~=cJa]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){padding-left:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=rtl] :is([data-silk~=c2][data-silk~=cFa][data-silk~=cJa]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){padding-right:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=ltr] [data-silk~=c2][data-silk~=cFa][data-silk~=cJa]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){padding-left:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=rtl] [data-silk~=c2][data-silk~=cFa][data-silk~=cJa]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){padding-right:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=ltr] :is([data-silk~="0aj"] [data-silk~=c2][data-silk~=cJa]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){padding-left:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=rtl] :is([data-silk~="0aj"] [data-silk~=c2][data-silk~=cJa]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){padding-right:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=ltr] [data-silk~="0aj"] [data-silk~=c2][data-silk~=cJa]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){padding-left:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[dir=rtl] [data-silk~="0aj"] [data-silk~=c2][data-silk~=cJa]:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){padding-right:var(--silk-cA,var(--ua-scrollbar-thickness))!important}[data-silk~=c2][data-silk~=cKa]{scroll-behavior:auto}[data-silk~=c2][data-silk~=cKb],[data-silk~=c2][data-silk~=cKk]{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){[data-silk~=c2][data-silk~=cKk]{scroll-behavior:auto}}[data-silk~=c2][data-silk~=cLb]{overflow-anchor:none}[data-silk~=c2][data-silk~=cMq]{scroll-snap-type:y proximity}[data-silk~=c2][data-silk~=cMp]{scroll-snap-type:x proximity}[data-silk~=c2][data-silk~=cMo]{scroll-snap-type:y mandatory}[data-silk~=c2][data-silk~=cMn]{scroll-snap-type:x mandatory}[data-silk~=c2][data-silk~=cPb]{scrollbar-width:none}[data-silk~=c2][data-silk~=cPb]::-webkit-scrollbar{display:none}[data-silk~=c2][data-silk~=cCa][data-silk~=cIb][data-silk~=cJb],[data-silk~=c2][data-silk~=cDa][data-silk~=cIb][data-silk~=cJb]{scrollbar-width:none!important}[data-silk~=c2][data-silk~=cCa][data-silk~=cIb][data-silk~=cJb]::-webkit-scrollbar{display:none!important}[data-silk~=c2][data-silk~=cDa][data-silk~=cIb][data-silk~=cJb]::-webkit-scrollbar{display:none!important}[data-silk~=c2][data-silk~=cCa][data-silk~=cIb][data-silk~=cJb]:before{content:"";height:1px;pointer-events:none!important;position:absolute;top:0;-webkit-user-select:none!important;user-select:none!important;width:101%}[dir=ltr] [data-silk~=c2][data-silk~=cCa][data-silk~=cIb][data-silk~=cJb]:before{left:0}[dir=rtl] [data-silk~=c2][data-silk~=cCa][data-silk~=cIb][data-silk~=cJb]:before{right:0}[data-silk~=c2][data-silk~=cDa][data-silk~=cIb][data-silk~=cJb]:after{content:"";height:101%;pointer-events:none!important;position:absolute;top:0;-webkit-user-select:none!important;user-select:none!important;width:1px}[dir=ltr] [data-silk~=c2][data-silk~=cDa][data-silk~=cIb][data-silk~=cJb]:after{left:0}[dir=rtl] [data-silk~=c2][data-silk~=cDa][data-silk~=cIb][data-silk~=cJb]:after{right:0}[data-silk~=c5]{height:1px;margin-bottom:-1px;width:1px}[dir=ltr] [data-silk~=c5]{margin-right:-1px}[dir=rtl] [data-silk~=c5]{margin-left:-1px}[data-silk~=c5][data-silk~=cAd][data-silk~=cGh]{grid-row:1}[data-silk~=c5][data-silk~=cAd][data-silk~=cGi]{grid-row:-1}[data-silk~=c5][data-silk~=cAc][data-silk~=cGh]{grid-column:-1}[data-silk~=c5][data-silk~=cAd][data-silk~=cGi]{margin-top:-2px}[dir=ltr] [data-silk~=c5][data-silk~=cAc][data-silk~=cGi]{margin-left:-2px}[dir=rtl] [data-silk~=c5][data-silk~=cAc][data-silk~=cGi]{margin-right:-2px}[data-silk~=c6][data-silk~=cAd]{height:0;width:1px}[data-silk~=c6][data-silk~=cAc]{height:1px;width:0}[data-silk~=c6][data-silk~=cAd]{grid-row:2}[data-silk~=c6][data-silk~=cAc]{grid-column:2}html:not([data-silk-native-page-scroll-replaced=true]) [data-silk~=c6][data-silk~=cHa]{height:0!important;width:0!important}[data-silk~=c7][data-silk~=cAd]{height:0;width:1px}[data-silk~=c7][data-silk~=cAc]{height:1px;width:0}html:not([data-silk-native-page-scroll-replaced=true]) [data-silk~=c7][data-silk~=cHa]{height:0!important;width:0!important}[data-silk~=c7][data-silk~=cAd]{grid-row:6}[data-silk~=c7][data-silk~=cAc]{grid-column:6}[data-silk~=c3]{position:relative!important}[data-silk~=c3][data-silk~=cAd]{grid-row:4!important}[data-silk~=c3][data-silk~=cAc]{grid-column:4!important}[data-silk~=c3][data-silk~=cCa][data-silk~=cIb]{left:0!important;position:sticky!important;right:0!important}[data-silk~=c3][data-silk~=cDa][data-silk~=cJb]{bottom:0!important;position:sticky!important;top:0!important}*,::backdrop,:after,:before{border-color:var(--border-light,currentColor)}::file-selector-button{border-color:var(--border-light,currentColor)}[role=button]:not(:disabled),button:not(:disabled){cursor:pointer}body,html{background-color:var(--bg-primary);color:var(--text-primary)}h1{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}h1,h2,h3{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}h2,h3{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.mask-fade{-webkit-mask-image:none;mask-image:none;transition:-webkit-mask-image .2s,mask-image .2s}.active-mask-fade,.group:hover .mask-fade{-webkit-mask-image:linear-gradient(90deg,#000 0 75%,#0000 100%);mask-image:linear-gradient(90deg,#000 0 75%,#0000)}@keyframes hive-log-fadeout{0%{background:#0285ff1a}to{background-color:#0000}}.hive-log{--tw-font-weight:var(--font-weight-medium);background-color:#0000000d;border-radius:3.40282e+38px;color:#8f8f8f;cursor:pointer;font-size:10px;font-weight:var(--font-weight-medium);padding-block:calc(var(--spacing)*.5);padding-inline:calc(var(--spacing)*1.5)}@media (hover:hover){.hive-log:hover{background-color:var(--main-surface-tertiary);color:var(--text-primary)}}:root,[dir=ltr]{--start:left;--end:right;--to-end-unit:1;--is-ltr:unset;--is-rtl: }[dir=rtl]{--start:right;--end:left;--to-end-unit:-1;--is-ltr: ;--is-rtl:unset}[data-rtl-flip]:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-scale-x:-1;scale:var(--tw-scale-x)var(--tw-scale-y);transform-origin:50%}:root{--user-chat-width:70%;--sidebar-width:260px;--sidebar-section-margin-top:1.25rem;--sidebar-section-first-margin-top:.5rem;--sidebar-rail-width:calc(var(--spacing)*13);--header-height:calc(var(--spacing)*13);--white:#fff;--black:#000;--gray-50:#f9f9f9;--gray-100:#ececec;--gray-200:#e3e3e3;--gray-300:#cdcdcd;--gray-400:#b4b4b4;--gray-500:#9b9b9b;--gray-600:#676767;--gray-700:#424242;--gray-750:#2f2f2f;--gray-800:#212121;--gray-900:#171717;--gray-950:#0d0d0d;--red-500:#e02e2a;--red-700:#911e1b;--brand-purple:#ab68ff;--yellow-900:#4d3b00}@media (pointer:coarse){:root{--sidebar-rail-width:calc(var(--spacing)*14);--header-height:calc(var(--spacing)*14)}}@media (-o-min-device-pixel-ratio:2),(-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(min-device-pixel-ratio:2),(min-resolution:192dpi),(min-resolution:2x){:root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}.dark .light,.light,html{--main-surface-background:#fffffff2;--message-surface:#e9e9e980;--composer-surface:var(--message-surface);--composer-blue-bg:#daeeff;--composer-blue-hover:#bddcf4;--composer-blue-hover-tint:#0084ff24;--composer-surface-primary:var(--main-surface-primary);--dot-color:var(--black);--text-primary:var(--gray-950);--icon-surface:13 13 13;--text-primary-inverse:var(--gray-100);--content-primary:#01172b;--content-secondary:#44505b;--text-secondary:#5d5d5d;--text-tertiary:var(--gray-400);--text-quaternary:var(--gray-300);--text-placeholder:#000000b3;--tag-blue:#08f;--tag-blue-light:#0af;--text-error:#f93a37;--text-danger:var(--red-500);--surface-error:249 58 55;--border-xlight:#0000000d;--border-light:#0000001a;--border-medium:#00000026;--border-heavy:#0003;--border-xheavy:#00000040;--hint-text:#08f;--hint-bg:#b3dbff;--border-sharp:#0000000d;--icon-secondary:#676767;--main-surface-primary:var(--white);--main-surface-primary-inverse:var(--gray-800);--main-surface-secondary:var(--gray-50);--main-surface-secondary-selected:#0000001a;--main-surface-tertiary:var(--gray-100);--sidebar-surface-primary:var(--gray-50);--sidebar-surface-secondary:var(--gray-100);--sidebar-surface-tertiary:var(--gray-200);--sidebar-title-primary:#28282880;--sidebar-surface:#fcfcfc;--sidebar-body-primary:#0d0d0d;--sidebar-icon:#7d7d7d;--surface-hover:#00000012;--link:#2964aa;--link-hover:#749ac8;--selection:#007aff}@supports (color:oklch(.99 0 0)){.dark .light,.light,html{--sidebar-surface-floating-lightness:1;--sidebar-surface-floating-alpha:1;--sidebar-surface-pinned-lightness:.99;--sidebar-surface-pinned-alpha:1}}@media (prefers-reduced-transparency:reduce){.dark .light,.light,html{--message-surface:#f4f4f4}}.dark{--main-surface-background:#212121e6;--message-surface:#323232d9;--composer-blue-bg:#2a4a6d;--composer-blue-hover:#1a416a;--composer-blue-text:#48aaff;--composer-surface-primary:#303030;--dot-color:var(--white);--text-primary:var(--gray-100);--icon-surface:240 240 240;--text-primary-inverse:var(--gray-950);--text-secondary:var(--gray-400);--text-tertiary:var(--gray-500);--text-quaternary:var(--gray-600);--text-placeholder:#fffc;--content-primary:#f2f6fa;--content-secondary:#dbe2e8;--text-error:#f93a37;--border-xlight:#ffffff0d;--border-light:#ffffff1a;--border-medium:#ffffff26;--border-heavy:#fff3;--border-xheavy:#ffffff40;--border-sharp:#ffffff0d;--main-surface-primary:var(--gray-800);--main-surface-primary-inverse:var(--white);--main-surface-secondary:var(--gray-750);--main-surface-secondary-selected:#ffffff26;--main-surface-tertiary:var(--gray-700);--sidebar-surface-primary:var(--gray-900);--sidebar-surface-secondary:var(--gray-800);--sidebar-surface-tertiary:var(--gray-750);--sidebar-title-primary:#f0f0f080;--sidebar-surface:#2b2b2b;--sidebar-body-primary:#ededed;--sidebar-icon:#a4a4a4;--surface-hover:#ffffff26;--link:#7ab7ff;--link-hover:#5e83b3;--surface-error:249 58 55}@supports (color:oklch(.99 0 0)){.dark{--sidebar-surface-floating-lightness:.3;--sidebar-surface-floating-alpha:1;--sidebar-surface-pinned-lightness:.29;--sidebar-surface-pinned-alpha:1}}@media (prefers-reduced-transparency:reduce){.dark{--message-surface:#2f2f2f}}.dark :not(.light).popover,.dark.popover,.popover .dark{--main-surface-primary:var(--gray-750);--main-surface-secondary:var(--gray-700);--main-surface-tertiary:var(--gray-600);--sidebar-surface-primary:var(--gray-750)}.dark .light.popover,.light .popover,.light.popover,.popover{--main-surface-primary:var(--white);--main-surface-secondary:var(--gray-100);--main-surface-tertiary:var(--gray-200);--sidebar-surface-primary:var(--white)}.dark .popover.sidebar{--main-surface-secondary:#393939!important}.light .canvas-open{--main-surface-primary:#f9f9f9;--message-surface:#eee}textarea:focus{border-color:inherit;box-shadow:none;outline:none}@supports (height:100cqh){:root{--cqh-full:100cqh;--cqw-full:100cqw}}@supports not (height:100cqh){:root{--cqh-full:100dvh;--cqw-full:100dvw}}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{--tw-shadow:0 0 #0000;appearance:none;background-color:#fff;border-color:#9b9b9b;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}:is([type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select):focus{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#004f99;--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);border-color:#004f99;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}input::placeholder,textarea::placeholder{color:#9b9b9b;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-bottom:0;padding-top:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-bottom:0;padding-top:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-bottom:0;padding-top:0}::-webkit-datetime-edit-meridiem-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%239B9B9B' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:1.5em 1.5em;-webkit-print-color-adjust:exact;print-color-adjust:exact}[dir=ltr] select{background-position:right .5rem center;padding-right:2.5rem}[dir=rtl] select{background-position:left .5rem center;padding-left:2.5rem}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;-webkit-print-color-adjust:unset;print-color-adjust:unset}[dir=ltr] [multiple]{padding-right:.75rem}[dir=rtl] [multiple]{padding-left:.75rem}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;appearance:none;background-color:#fff;background-origin:border-box;border-color:#9b9b9b;border-width:1px;color:#004f99;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#004f99;--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:#0000}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid buttontext;outline:1px auto -webkit-focus-ring-color}}@layer components{@property --top-fade{syntax:"";inherits:false;initial-value:0}@property --bottom-fade{syntax:"";inherits:false;initial-value:0}@property --edge-fade-distance{syntax:"";inherits:false;initial-value:.5lh}@keyframes edge-fade{0%{--top-fade:0}3%,to{--top-fade:var(--edge-fade-distance,.5lh)}0%,97%{--bottom-fade:var(--edge-fade-distance,.5lh)}to{--bottom-fade:0}}@supports (scroll-timeline:--scroll-fade){.vertical-scroll-fade-mask{scroll-timeline:--scroll-fade y;-webkit-mask:linear-gradient(to bottom in oklch,oklch(.6 0 0/0),oklch(.85 0 0/1)var(--top-fade)calc(100% - var(--bottom-fade)),oklch(.6 0 0/0));mask:linear-gradient(to bottom in oklch,oklch(.6 0 0/0),oklch(.85 0 0/1)var(--top-fade)calc(100% - var(--bottom-fade)),oklch(.6 0 0/0))}.horizontal-scroll-fade-mask,.vertical-scroll-fade-mask{animation-timeline:--scroll-fade;animation-fill-mode:both;animation-name:edge-fade;animation-timing-function:linear}.horizontal-scroll-fade-mask{scroll-timeline:--scroll-fade x;-webkit-mask:linear-gradient(to right in oklch,oklch(.6 0 0/0),oklch(.85 0 0/1)var(--top-fade)calc(100% - var(--bottom-fade)),oklch(.6 0 0/0));mask:linear-gradient(to right in oklch,oklch(.6 0 0/0),oklch(.85 0 0/1)var(--top-fade)calc(100% - var(--bottom-fade)),oklch(.6 0 0/0))}}.icon{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}.icon,.icon-sm{flex-grow:0;flex-shrink:0}.icon-sm{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.icon-xs{height:calc(var(--spacing)*3);width:calc(var(--spacing)*3)}.icon-lg,.icon-xs{flex-grow:0;flex-shrink:0}.icon-lg{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.icon-xl{height:calc(var(--spacing)*7);width:calc(var(--spacing)*7)}.icon-2xl,.icon-xl{flex-grow:0;flex-shrink:0}.icon-2xl{height:calc(var(--spacing)*8);width:calc(var(--spacing)*8)}.loading-shimmer,.loading-shimmer-pure-text{--shimmer-contrast:#ffffffbf}.dark .loading-shimmer,.dark .loading-shimmer-pure-text{--shimmer-contrast:#0009}.loading-shimmer,.loading-shimmer-pure-text{text-fill-color:transparent;-webkit-text-fill-color:transparent;animation-delay:.5s;animation-duration:3s;animation-iteration-count:infinite;animation-name:loading-shimmer;background:var(--text-secondary)linear-gradient(to right,var(--text-secondary)0,var(--shimmer-contrast)40%,var(--shimmer-contrast)60%,var(--text-secondary)100%);background:var(--text-secondary)-webkit-gradient(linear,100% 0,0 0,from(var(--text-secondary)),color-stop(.4,var(--shimmer-contrast)),color-stop(.6,var(--shimmer-contrast)),to(var(--text-secondary)));-webkit-background-clip:text;background-clip:text;background-repeat:no-repeat;background-size:50% 200%;display:inline-block}[dir=ltr] .loading-shimmer,[dir=ltr] .loading-shimmer-pure-text{background-position:-100% 0}[dir=rtl] .loading-shimmer,[dir=rtl] .loading-shimmer-pure-text{background-position:200% 0}@media (prefers-reduced-motion:reduce){:is(.loading-shimmer-pure-text,.loading-shimmer){animation:none}}.loading-shimmer:hover{-webkit-text-fill-color:var(--text-primary);animation:none}[dir=ltr] .loading-shimmer:hover{background:0 0}[dir=rtl] .loading-shimmer:hover{background:100% 0}.loading-shimmer-pure-text-inverted{text-fill-color:transparent;-webkit-text-fill-color:transparent;animation-delay:.5s;animation-duration:3s;animation-iteration-count:infinite;animation-name:loading-shimmer;background:var(--text-primary)gradient(linear,100% 0,0 0,from(var(--text-primary)),color-stop(.5,var(--text-quaternary)),to(var(--text-primary)));background:var(--text-primary)-webkit-gradient(linear,100% 0,0 0,from(var(--text-primary)),color-stop(.5,var(--text-quaternary)),to(var(--text-primary)));-webkit-background-clip:text;background-clip:text;background-repeat:no-repeat;background-size:50% 200%;display:inline-block}[dir=ltr] .loading-shimmer-pure-text-inverted{background-position:-100% 0}[dir=rtl] .loading-shimmer-pure-text-inverted{background-position:200% 0}@media (prefers-reduced-motion:reduce){.loading-shimmer-pure-text-inverted{animation:none}}.gizmo-shadow-stroke{position:relative}.gizmo-shadow-stroke:after{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,#0000001a);border-radius:3.40282e+38px;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:"";inset:calc(var(--spacing)*0);position:absolute}.dark .gizmo-shadow-stroke:after{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,#fff3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.__menu-item{--menu-item-highlighted:#0000000a;--menu-item-active:#0000000f;--menu-item-open:#00000006;align-items:center;border-radius:10px;display:flex;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));min-height:calc(var(--spacing)*9);padding-block:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2.5);position:relative;-webkit-user-select:none;user-select:none;width:auto}.__menu-item:not([data-orientation=horizontal]){margin-inline:calc(var(--spacing)*1.5)}.__menu-item:focus-visible{outline-style:var(--tw-outline-style);outline-width:0}.__menu-item[data-has-submenu]{padding-inline-end:calc(var(--spacing)*1.5)}.__menu-item[data-size=large]{min-height:calc(var(--spacing)*10);padding-inline-start:calc(var(--spacing)*2)}@media (hover:hover){.__menu-item{cursor:pointer}}@media (pointer:coarse){.__menu-item{min-height:calc(var(--spacing)*10)}}.__menu-item:has(.trailing),.__menu-item[data-has-submenu]{gap:calc(var(--spacing)*6);justify-content:space-between}:is(.__menu-item[data-has-submenu],.__menu-item:has(.trailing))[data-fill]{gap:calc(var(--spacing)*2)}.__menu-item:not([data-fill],[data-has-submenu],:has(.trailing),[data-orientation=horizontal]){padding-inline-end:calc(var(--spacing)*8)}.dark .__menu-item{--menu-item-highlighted:var(--interactive-bg-secondary-hover);--menu-item-active:var(--interactive-bg-secondary-press);--menu-item-open:var(--interactive-bg-secondary-press)}.__menu-item[data-color=selected]{color:var(--interactive-label-accent-default)}.__menu-item[data-color=danger]{--menu-item-highlighted:#e02e2a13;--menu-item-active:#e02e2a1f;--menu-item-open:#e02e2a0f;color:var(--text-status-error)}.dark .__menu-item[data-color=danger]{--menu-item-highlighted:#e02e2a23;--menu-item-active:#e02e2a2f;--menu-item-open:#e02e2a16}.__menu-item:where(:disabled,[data-disabled]){color:var(--text-tertiary);pointer-events:none}.__menu-item:not(:disabled):not([data-disabled]):where(:has(:focus-visible),[data-state=open],:has([data-state=open])){background-color:var(--menu-item-open)}.__menu-item:not(:disabled):not([data-disabled]):focus,.__menu-item:not(:disabled):not([data-disabled])[data-highlighted],.__menu-item:not(:disabled):not([data-disabled])[data-state=active]{background-color:var(--menu-item-highlighted)}@media (hover:hover){.__menu-item:not(:disabled):not([data-disabled]).hoverable:hover{background-color:var(--menu-item-highlighted)}}.__menu-item:not(:disabled):not([data-disabled]):active:not(:has([data-trailing-button]:hover)),.__menu-item:not(:disabled):not([data-disabled])[data-active]{background-color:var(--menu-item-active)}.__menu-item .trailing{align-items:center;align-self:stretch;display:flex;flex-shrink:0;justify-content:center;min-width:calc(var(--spacing)*5)}.__menu-item .trailing-pair{align-self:stretch;display:inline-grid;grid-template-columns:max-content;place-items:center end}.__menu-item .trailing-pair>*{align-items:center;align-self:stretch;display:flex;grid-column-start:1;grid-row-start:1}@media (pointer:coarse){.__menu-item .trailing-pair>.trailing:not(.highlight){display:none}}@media (hover:hover){.__menu-item .trailing.highlight{opacity:0}.__menu-item[data-fill] .trailing.highlight{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;min-width:unset;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.__menu-item:is([data-highlighted],[data-state=active],.hoverable:hover,:focus-visible,:has(:focus-visible),[data-state=open],:has([data-state=open])) .trailing-pair>.trailing:not(.highlight){visibility:hidden}.__menu-item:is([data-highlighted],[data-state=active],.hoverable:hover,:focus-visible,:has(:focus-visible),[data-state=open],:has([data-state=open])) .trailing.highlight{opacity:unset}.__menu-item:is([data-highlighted],[data-state=active],.hoverable:hover,:focus-visible,:has(:focus-visible),[data-state=open],:has([data-state=open]))[data-fill] .trailing.highlight{clip:auto;height:auto;margin:0;min-width:calc(var(--spacing)*5);overflow:visible;padding:0;position:static;white-space:normal;width:auto}}.__menu-item-badge{--tw-leading:calc(var(--spacing)*3);--tw-font-weight:var(--font-weight-semibold);border-color:var(--border-heavy);border-radius:3.40282e+38px;border-style:var(--tw-border-style);border-width:1px;flex-shrink:0;font-size:8px;font-weight:var(--font-weight-semibold);line-height:calc(var(--spacing)*3);padding-block:1px;padding-inline:5px;text-transform:uppercase}.__menu-item-badge:not(:is(:where(.group)[data-disabled] *)){color:var(--text-tertiary)}.__menu-item-badge:is(:where(.group)[data-disabled] *){opacity:.8}.__menu-item-trailing-btn{align-items:center;align-self:stretch;border-end-end-radius:10px;border-start-end-radius:10px;color:var(--text-primary);display:flex;isolation:isolate;margin-block:calc(var(--spacing)*-2);margin-inline-end:calc(var(--spacing)*-2.5);margin-inline-start:calc(var(--spacing)*-1);min-height:calc(var(--spacing)*9);padding-inline-end:calc(var(--spacing)*1.5);padding-inline-start:calc(var(--spacing)*1);pointer-events:auto;position:relative}.__menu-item-trailing-btn:disabled{color:var(--text-tertiary);pointer-events:none}.__menu-item-trailing-btn:focus-visible{outline-style:var(--tw-outline-style);outline-width:0}:is(.__menu-item-trailing-btn:focus-visible>*){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (pointer:coarse){.__menu-item-trailing-btn{min-height:calc(var(--spacing)*10)}}[data-has-submenu] .__menu-item-trailing-btn{margin-inline-end:calc(var(--spacing)*-6.5);padding-inline-end:calc(var(--spacing)*5.5)}@media (hover:hover){:is(.__menu-item-trailing-btn:is(:where(.group)[data-disabled] *):hover>*){background-color:var(--menu-item-highlighted)}}:is(.__menu-item-trailing-btn:is(:where(.group)[data-disabled] *):active:active>*){background-color:var(--menu-item-active)}.__menu-item-trailing-btn>*{align-items:center;border-radius:var(--radius-lg);display:flex;justify-content:center;padding:calc(var(--spacing)*1)}.__menu-label{--tw-font-weight:var(--font-weight-normal);color:var(--text-tertiary);display:block;font-size:var(--text-sm);font-weight:var(--font-weight-normal);line-height:var(--tw-leading,var(--text-sm--line-height));margin-block:calc(var(--spacing)*0);margin-inline:calc(var(--spacing)*1.5);overflow:hidden;padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*2.5);text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}}@layer utilities{.\@container\/sheet-content{container:sheet-content/inline-size}.\@container\/thread{container:thread/inline-size}.\@container{container-type:inline-size}.btn{--tw-font-weight:var(--font-weight-medium);align-items:center;border-color:#0000;border-radius:3.40282e+38px;border-style:var(--tw-border-style);border-width:1px;display:inline-flex;flex-shrink:0;font-size:var(--text-sm);font-weight:var(--font-weight-medium);justify-content:center;line-height:var(--tw-leading,var(--text-sm--line-height));min-height:calc(var(--spacing)*9);padding-inline:calc(var(--spacing)*3);pointer-events:auto}.btn:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.btn:focus{outline:2px solid #0000;outline-offset:2px}}.btn:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.btn:focus-visible{outline:2px solid #0000;outline-offset:2px}}.btn:disabled{cursor:not-allowed;opacity:.5}@media (pointer:coarse){.btn{min-height:calc(var(--spacing)*10)}}.btn:active:not(:disabled){opacity:.8}.pointer-events-auto{pointer-events:auto}.pointer-events-auto\!{pointer-events:auto!important}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.sr-only\!{clip:rect(0,0,0,0)!important;border-width:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.static\!{position:static!important}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-5{inset:calc(var(--spacing)*5)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-x-4{inset-inline:calc(var(--spacing)*4)}.inset-x-px{inset-inline:1px}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-start-1{inset-inline-start:calc(var(--spacing)*-1)}.-start-2{inset-inline-start:calc(var(--spacing)*-2)}.-start-4{inset-inline-start:calc(var(--spacing)*-4)}.-start-96{inset-inline-start:calc(var(--spacing)*-96)}.start-0{inset-inline-start:calc(var(--spacing)*0)}.start-1{inset-inline-start:calc(var(--spacing)*1)}.start-1\/2{inset-inline-start:50%}.start-2{inset-inline-start:calc(var(--spacing)*2)}.start-2\.5{inset-inline-start:calc(var(--spacing)*2.5)}.start-3{inset-inline-start:calc(var(--spacing)*3)}.start-4{inset-inline-start:calc(var(--spacing)*4)}.start-5{inset-inline-start:calc(var(--spacing)*5)}.start-6{inset-inline-start:calc(var(--spacing)*6)}.start-10{inset-inline-start:calc(var(--spacing)*10)}.start-\[-2px\]{inset-inline-start:-2px}.start-\[-4px\]{inset-inline-start:-4px}.start-\[-150\%\]{inset-inline-start:-150%}.start-\[0\.81rem\]{inset-inline-start:.81rem}.start-\[3\.25rem\]{inset-inline-start:3.25rem}.start-\[calc\(\(\(100vw-450px-min\(100vw-450px\,850px\)\)\/2\)\)\]{inset-inline-start:calc(50vw - 225px + min(100vw - 450px,850px)/-2)}.start-full{inset-inline-start:100%}.-end-0\.5{inset-inline-end:calc(var(--spacing)*-.5)}.-end-1{inset-inline-end:calc(var(--spacing)*-1)}.-end-2{inset-inline-end:calc(var(--spacing)*-2)}.-end-3{inset-inline-end:calc(var(--spacing)*-3)}.-end-4{inset-inline-end:calc(var(--spacing)*-4)}.end-\(--thread-content-margin\){inset-inline-end:var(--thread-content-margin)}.end-0{inset-inline-end:calc(var(--spacing)*0)}.end-1{inset-inline-end:calc(var(--spacing)*1)}.end-1\.5{inset-inline-end:calc(var(--spacing)*1.5)}.end-1\/2{inset-inline-end:50%}.end-2{inset-inline-end:calc(var(--spacing)*2)}.end-2\.5{inset-inline-end:calc(var(--spacing)*2.5)}.end-3{inset-inline-end:calc(var(--spacing)*3)}.end-4{inset-inline-end:calc(var(--spacing)*4)}.end-5{inset-inline-end:calc(var(--spacing)*5)}.end-6{inset-inline-end:calc(var(--spacing)*6)}.end-14{inset-inline-end:calc(var(--spacing)*14)}.end-\[-1px\]{inset-inline-end:-1px}.end-\[-3px\]{inset-inline-end:-3px}.end-\[-4px\]{inset-inline-end:-4px}.end-\[-8px\]{inset-inline-end:-8px}.end-\[-135px\]{inset-inline-end:-135px}.end-\[4\.8px\]{inset-inline-end:4.8px}.end-\[12px\]{inset-inline-end:12px}.end-full{inset-inline-end:100%}.end-snc-1{inset-inline-end:var(--snc-1)}.-top-0\.5{top:calc(var(--spacing)*-.5)}.-top-1{top:calc(var(--spacing)*-1)}.-top-2{top:calc(var(--spacing)*-2)}.-top-3\!{top:calc(var(--spacing)*-3)!important}.-top-4{top:calc(var(--spacing)*-4)}.-top-5{top:calc(var(--spacing)*-5)}.-top-96{top:calc(var(--spacing)*-96)}.top-0{top:calc(var(--spacing)*0)}.top-0\.5{top:calc(var(--spacing)*.5)}.top-1{top:calc(var(--spacing)*1)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-2\.5{top:calc(var(--spacing)*2.5)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-5{top:calc(var(--spacing)*5)}.top-6{top:calc(var(--spacing)*6)}.top-8{top:calc(var(--spacing)*8)}.top-9{top:calc(var(--spacing)*9)}.top-14{top:calc(var(--spacing)*14)}.top-24{top:calc(var(--spacing)*24)}.top-46{top:calc(var(--spacing)*46)}.top-48{top:calc(var(--spacing)*48)}.top-\[-0\.094rem\]{top:-.094rem}.top-\[-1px\]{top:-1px}.top-\[-2px\]{top:-2px}.top-\[-4px\]{top:-4px}.top-\[-6px\]{top:-6px}.top-\[-8px\]{top:-8px}.top-\[-150\%\]{top:-150%}.top-\[0\.1rem\]{top:.1rem}.top-\[0\.2rem\]{top:.2rem}.top-\[0\.55rem\]{top:.55rem}.top-\[1px\]{top:1px}.top-\[20px\]{top:20px}.top-\[21\.5px\]{top:21.5px}.top-\[100\%\],.top-full{top:100%}[dir=ltr] .right-0{right:calc(var(--spacing)*0)}[dir=rtl] .right-0{left:calc(var(--spacing)*0)}[dir=ltr] .right-0\!{right:calc(var(--spacing)*0)!important}[dir=rtl] .right-0\!{left:calc(var(--spacing)*0)!important}[dir=ltr] .right-3{right:calc(var(--spacing)*3)}[dir=rtl] .right-3{left:calc(var(--spacing)*3)}[dir=ltr] .right-\[-8px\]{right:-8px}[dir=rtl] .right-\[-8px\]{left:-8px}.-bottom-0\.5{bottom:calc(var(--spacing)*-.5)}.-bottom-1{bottom:calc(var(--spacing)*-1)}.-bottom-2{bottom:calc(var(--spacing)*-2)}.-bottom-4{bottom:calc(var(--spacing)*-4)}.-bottom-4\.5{bottom:calc(var(--spacing)*-4.5)}.-bottom-5{bottom:calc(var(--spacing)*-5)}.-bottom-8{bottom:calc(var(--spacing)*-8)}.-bottom-px{bottom:-1px}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-1\.5{bottom:calc(var(--spacing)*1.5)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-2\.5{bottom:calc(var(--spacing)*2.5)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-5{bottom:calc(var(--spacing)*5)}.bottom-6{bottom:calc(var(--spacing)*6)}.bottom-8{bottom:calc(var(--spacing)*8)}.bottom-\[-2px\]{bottom:-2px}.bottom-\[-3px\]{bottom:-3px}.bottom-\[-8px\]{bottom:-8px}.bottom-\[1px\]{bottom:1px}.bottom-\[8px\]{bottom:8px}.bottom-\[20px\]{bottom:20px}.bottom-\[64px\]{bottom:64px}.bottom-\[160px\]{bottom:160px}.bottom-\[calc\(var\(--composer-overlap-px\)\+--spacing\(6\)\)\]{bottom:calc(var(--composer-overlap-px) + var(--spacing)*6)}.bottom-\[initial\]{bottom:auto}.bottom-full{bottom:100%}.bottom-snc-1{bottom:var(--snc-1)}[dir=ltr] .left-0{left:calc(var(--spacing)*0)}[dir=rtl] .left-0{right:calc(var(--spacing)*0)}[dir=ltr] .left-0\!{left:calc(var(--spacing)*0)!important}[dir=rtl] .left-0\!{right:calc(var(--spacing)*0)!important}[dir=ltr] .left-\[-8px\]{left:-8px}[dir=rtl] .left-\[-8px\]{right:-8px}[dir=ltr] .left-\[50\%\]\!{left:50%!important}[dir=rtl] .left-\[50\%\]\!{right:50%!important}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}.z-9{z-index:9}.z-10{z-index:10}.z-11{z-index:11}.z-20{z-index:20}.z-21{z-index:21}.z-25{z-index:25}.z-26{z-index:26}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-60{z-index:60}.z-61{z-index:61}.z-70{z-index:70}.z-100{z-index:100}.z-1000{z-index:1000}.z-9999{z-index:9999}.z-10000{z-index:10000}.z-11000{z-index:11000}.z-\[-1\]{z-index:-1}.z-\[51\]{z-index:51}.z-\[1000\]{z-index:1000}.z-\[2000\]{z-index:2000}.z-\[10000\]{z-index:10000}.order-1{order:1}.order-2{order:2}.order-4{order:4}.order-5{order:5}.order-10{order:10}.order-last{order:9999}.col-\[1\]{grid-column:1}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-10{grid-column:span 10/span 10}.col-span-12{grid-column:span 12/span 12}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-end-2{grid-column-end:2}.col-end-\[-1\]{grid-column-end:-1}.row-\[1\]{grid-row:1}.row-auto{grid-row:auto}.row-span-1{grid-row:span 1/span 1}.row-span-2{grid-row:span 2/span 2}.row-span-4{grid-row:span 4/span 4}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.row-end-2{grid-row-end:2}.float-end{float:inline-end}[dir=ltr] .float-left{float:left}[dir=rtl] .float-left,[dir=ltr] .float-right{float:right}[dir=rtl] .float-right{float:left}.float-start{float:inline-start}.clear-end{clear:inline-end}[dir=ltr] .clear-left{clear:left}[dir=rtl] .clear-left,[dir=ltr] .clear-right{clear:right}[dir=rtl] .clear-right{clear:left}.clear-start{clear:inline-start}@media (min-width:480px){.container{max-width:480px}}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.prose{--tw-prose-body:var(--text-primary);--tw-prose-headings:var(--text-primary);--tw-prose-lead:var(--text-primary);--tw-prose-links:var(--text-primary);--tw-prose-bold:var(--text-primary);--tw-prose-counters:var(--text-primary);--tw-prose-bullets:var(--text-primary);--tw-prose-hr:var(--border-xheavy);--tw-prose-quotes:var(--text-primary);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:var(--text-secondary);--tw-prose-code:var(--text-primary);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:var(--text-primary);--tw-prose-invert-headings:var(--text-primary);--tw-prose-invert-lead:var(--text-primary);--tw-prose-invert-links:var(--text-primary);--tw-prose-invert-bold:var(--text-primary);--tw-prose-invert-counters:var(--text-primary);--tw-prose-invert-bullets:var(--text-primary);--tw-prose-invert-hr:var(--border-xheavy);--tw-prose-invert-quotes:var(--text-primary);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:var(--text-secondary);--tw-prose-invert-code:var(--text-primary);--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);color:var(--tw-prose-body);font-size:1rem;line-height:1.75;max-width:65ch}.prose :where([class~=lead]):not(:where([class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em}[dir=ltr] .prose :where(ol):not(:where([class~=not-prose] *)){padding-left:1.625em}[dir=rtl] .prose :where(ol):not(:where([class~=not-prose] *)){padding-right:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em}[dir=ltr] .prose :where(ul):not(:where([class~=not-prose] *)){padding-left:1.625em}[dir=rtl] .prose :where(ul):not(:where([class~=not-prose] *)){padding-right:1.625em}.prose :where(ol>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose] *)){color:var(--tw-prose-quotes);font-style:normal;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;quotes:"“""”""‘""’"}[dir=ltr] .prose :where(blockquote):not(:where([class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;padding-left:1em}[dir=rtl] .prose :where(blockquote):not(:where([class~=not-prose] *)){border-right-color:var(--tw-prose-quote-borders);border-right-width:.25rem;padding-right:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.11111;margin-bottom:.888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.33333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(figure>*):not(:where([class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.42857;margin-top:.857143em}.prose :where(code):not(:where([class~=not-prose] *)){background-color:var(--gray-100);border-radius:.25rem;color:var(--tw-prose-code);font-size:.875em;font-weight:500;padding:.15rem .3rem}.prose :where(code):not(:where([class~=not-prose] *)):after,.prose :where(code):not(:where([class~=not-prose] *)):before{content:none}.prose :where(a code):not(:where([class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(blockquote code):not(:where([class~=not-prose] *)),.prose :where(h4 code):not(:where([class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose] *)){background-color:#0000;border-radius:.375rem;color:currentColor;font-size:.875em;font-weight:400;line-height:1.71429;margin:0;overflow-x:auto;padding:0}.prose :where(pre code):not(:where([class~=not-prose] *)){background-color:#0000;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose] *)):after,.prose :where(pre code):not(:where([class~=not-prose] *)):before{content:none}.prose :where(table):not(:where([class~=not-prose] *)){font-size:.875em;line-height:1.71429;margin-bottom:2em;margin-top:2em;table-layout:auto;width:100%}[dir=ltr] .prose :where(table):not(:where([class~=not-prose] *)){text-align:left}[dir=rtl] .prose :where(table):not(:where([class~=not-prose] *)){text-align:right}.prose :where(thead):not(:where([class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.571429em;padding-left:.571429em;padding-right:.571429em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose] *)){vertical-align:top}.prose :where(p):not(:where([class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(figure):not(:where([class~=not-prose] *)),.prose :where(video):not(:where([class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .prose :where(ol>li):not(:where([class~=not-prose] *)),[dir=ltr] .prose :where(ul>li):not(:where([class~=not-prose] *)){padding-left:.375em}[dir=rtl] .prose :where(ol>li):not(:where([class~=not-prose] *)),[dir=rtl] .prose :where(ul>li):not(:where([class~=not-prose] *)){padding-right:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(h2+*):not(:where([class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose] *)),.prose :where(hr+*):not(:where([class~=not-prose] *)){margin-top:0}[dir=ltr] .prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-left:0}[dir=rtl] .prose :where(thead th:first-child):not(:where([class~=not-prose] *)){padding-right:0}[dir=ltr] .prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-right:0}[dir=rtl] .prose :where(thead th:last-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose] *)){padding:.571429em}[dir=ltr] .prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-left:0}[dir=rtl] .prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose] *)){padding-right:0}[dir=ltr] .prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-right:0}[dir=rtl] .prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose] *)){padding-left:0}.prose :where(.prose>:first-child):not(:where([class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose] *)){margin-bottom:0}.-m-1{margin:calc(var(--spacing)*-1)}.-m-1\!{margin:calc(var(--spacing)*-1)!important}.-m-2{margin:calc(var(--spacing)*-2)}.m-0{margin:calc(var(--spacing)*0)}.m-1{margin:calc(var(--spacing)*1)}.m-1\.5{margin:calc(var(--spacing)*1.5)}.m-2{margin:calc(var(--spacing)*2)}.m-3{margin:calc(var(--spacing)*3)}.m-4{margin:calc(var(--spacing)*4)}.m-8{margin:calc(var(--spacing)*8)}.m-\[-1px\]{margin:-1px}.m-\[3px\]{margin:3px}.m-\[24px\]{margin:24px}.m-auto{margin:auto}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.-mx-2{margin-inline:calc(var(--spacing)*-2)}.-mx-3{margin-inline:calc(var(--spacing)*-3)}.-mx-6{margin-inline:calc(var(--spacing)*-6)}.-mx-px{margin-inline:-1px}.mx-0{margin-inline:calc(var(--spacing)*0)}.mx-0\!{margin-inline:calc(var(--spacing)*0)!important}.mx-0\.5{margin-inline:calc(var(--spacing)*.5)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-1\.5{margin-inline:calc(var(--spacing)*1.5)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-3\!{margin-inline:calc(var(--spacing)*3)!important}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-5{margin-inline:calc(var(--spacing)*5)}.mx-6{margin-inline:calc(var(--spacing)*6)}.mx-8{margin-inline:calc(var(--spacing)*8)}.mx-10{margin-inline:calc(var(--spacing)*10)}.mx-16{margin-inline:calc(var(--spacing)*16)}.mx-24{margin-inline:calc(var(--spacing)*24)}.mx-\[-1rem\]{margin-inline:-1rem}.mx-\[-16px\]{margin-inline:-16px}.mx-\[32px\]{margin-inline:32px}.mx-\[calc\(--spacing\(-2\)-1px\)\]{margin-inline:calc(var(--spacing)*-2 - 1px)}.mx-\[calc\(var\(--spacing\)\*1\.5\)\]{margin-inline:calc(var(--spacing)*1.5)}.mx-\[var\(--mini-thread-content-inset\)\]{margin-inline:var(--mini-thread-content-inset)}.mx-auto{margin-inline:auto}.mx-snc-results-padding{margin-inline:var(--snc-results-padding)}.-my-0\.5{margin-block:calc(var(--spacing)*-.5)}.-my-1{margin-block:calc(var(--spacing)*-1)}.-my-2{margin-block:calc(var(--spacing)*-2)}.-my-2\.5{margin-block:calc(var(--spacing)*-2.5)}.-my-3{margin-block:calc(var(--spacing)*-3)}.-my-\[1px\]{margin-block:-1px}.my-0{margin-block:calc(var(--spacing)*0)}.my-0\.5{margin-block:calc(var(--spacing)*.5)}.my-1{margin-block:calc(var(--spacing)*1)}.my-1\.5{margin-block:calc(var(--spacing)*1.5)}.my-2{margin-block:calc(var(--spacing)*2)}.my-2\.5{margin-block:calc(var(--spacing)*2.5)}.my-3{margin-block:calc(var(--spacing)*3)}.my-4{margin-block:calc(var(--spacing)*4)}.my-6{margin-block:calc(var(--spacing)*6)}.my-8{margin-block:calc(var(--spacing)*8)}.my-10{margin-block:calc(var(--spacing)*10)}.my-12{margin-block:calc(var(--spacing)*12)}.my-16{margin-block:calc(var(--spacing)*16)}.my-\[-0\.2rem\]{margin-block:-.2rem}.my-\[15px\]{margin-block:15px}.my-\[32px\]{margin-block:32px}.my-auto{margin-block:auto}.-ms-0\.5{margin-inline-start:calc(var(--spacing)*-.5)}.-ms-1{margin-inline-start:calc(var(--spacing)*-1)}.-ms-1\.5{margin-inline-start:calc(var(--spacing)*-1.5)}.-ms-2{margin-inline-start:calc(var(--spacing)*-2)}.-ms-2\.5{margin-inline-start:calc(var(--spacing)*-2.5)}.-ms-3{margin-inline-start:calc(var(--spacing)*-3)}.-ms-3\.5{margin-inline-start:calc(var(--spacing)*-3.5)}.-ms-4{margin-inline-start:calc(var(--spacing)*-4)}.-ms-6{margin-inline-start:calc(var(--spacing)*-6)}.-ms-\[3px\]{margin-inline-start:-3px}.ms-0{margin-inline-start:calc(var(--spacing)*0)}.ms-0\.5{margin-inline-start:calc(var(--spacing)*.5)}.ms-1{margin-inline-start:calc(var(--spacing)*1)}.ms-1\.5{margin-inline-start:calc(var(--spacing)*1.5)}.ms-2{margin-inline-start:calc(var(--spacing)*2)}.ms-3{margin-inline-start:calc(var(--spacing)*3)}.ms-4{margin-inline-start:calc(var(--spacing)*4)}.ms-4\.5{margin-inline-start:calc(var(--spacing)*4.5)}.ms-5{margin-inline-start:calc(var(--spacing)*5)}.ms-6{margin-inline-start:calc(var(--spacing)*6)}.ms-7{margin-inline-start:calc(var(--spacing)*7)}.ms-8{margin-inline-start:calc(var(--spacing)*8)}.ms-10{margin-inline-start:calc(var(--spacing)*10)}.ms-14{margin-inline-start:calc(var(--spacing)*14)}.ms-24{margin-inline-start:calc(var(--spacing)*24)}.ms-\[-2px\]{margin-inline-start:-2px}.ms-\[-6px\]{margin-inline-start:-6px}.ms-\[-12px\]{margin-inline-start:-12px}.ms-\[-16px\]{margin-inline-start:-16px}.ms-\[2px\]{margin-inline-start:2px}.ms-\[3px\]{margin-inline-start:3px}.ms-\[4px\]{margin-inline-start:4px}.ms-\[5px\]{margin-inline-start:5px}.ms-\[11px\]{margin-inline-start:11px}.ms-\[calc\(\(100vw-450px-min\(100vw-450px\,900px\)\)\/2\)\]{margin-inline-start:calc(50vw - 225px + min(100vw - 450px,900px)/-2)}.ms-auto{margin-inline-start:auto}.-me-1{margin-inline-end:calc(var(--spacing)*-1)}.-me-1\.5{margin-inline-end:calc(var(--spacing)*-1.5)}.-me-2{margin-inline-end:calc(var(--spacing)*-2)}.-me-3\.5{margin-inline-end:calc(var(--spacing)*-3.5)}.-me-6{margin-inline-end:calc(var(--spacing)*-6)}.me-0{margin-inline-end:calc(var(--spacing)*0)}.me-0\.5{margin-inline-end:calc(var(--spacing)*.5)}.me-1{margin-inline-end:calc(var(--spacing)*1)}.me-1\.5{margin-inline-end:calc(var(--spacing)*1.5)}.me-2{margin-inline-end:calc(var(--spacing)*2)}.me-3{margin-inline-end:calc(var(--spacing)*3)}.me-4{margin-inline-end:calc(var(--spacing)*4)}.me-5{margin-inline-end:calc(var(--spacing)*5)}.me-6{margin-inline-end:calc(var(--spacing)*6)}.me-8{margin-inline-end:calc(var(--spacing)*8)}.me-12{margin-inline-end:calc(var(--spacing)*12)}.me-\[1px\]{margin-inline-end:1px}.me-\[2px\]{margin-inline-end:2px}.me-\[30px\]{margin-inline-end:30px}.me-px{margin-inline-end:1px}.-mt-0\.5{margin-top:calc(var(--spacing)*-.5)}.-mt-1{margin-top:calc(var(--spacing)*-1)}.-mt-2{margin-top:calc(var(--spacing)*-2)}.-mt-3{margin-top:calc(var(--spacing)*-3)}.-mt-4{margin-top:calc(var(--spacing)*-4)}.-mt-5{margin-top:calc(var(--spacing)*-5)}.-mt-6{margin-top:calc(var(--spacing)*-6)}.-mt-16{margin-top:calc(var(--spacing)*-16)}.-mt-\[100px\]{margin-top:-100px}.mt-\(--sidebar-section-first-margin-top\){margin-top:var(--sidebar-section-first-margin-top)}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-0\!{margin-top:calc(var(--spacing)*0)!important}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-0\.25{margin-top:calc(var(--spacing)*.25)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-2\.5{margin-top:calc(var(--spacing)*2.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-7{margin-top:calc(var(--spacing)*7)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-15{margin-top:calc(var(--spacing)*15)}.mt-36{margin-top:calc(var(--spacing)*36)}.mt-\[-1px\]{margin-top:-1px}.mt-\[-2px\]{margin-top:-2px}.mt-\[-3px\]{margin-top:-3px}.mt-\[-4px\]{margin-top:-4px}.mt-\[-10px\]{margin-top:-10px}.mt-\[-32px\]{margin-top:-32px}.mt-\[-100px\]{margin-top:-100px}.mt-\[0\.5px\],.mt-\[\.5px\]{margin-top:.5px}.mt-\[0\.225rem\]{margin-top:.225rem}.mt-\[0\.425rem\]{margin-top:.425rem}.mt-\[0\.0625em\]{margin-top:.0625em}.mt-\[0px\]{margin-top:0}.mt-\[1px\]{margin-top:1px}.mt-\[2px\]{margin-top:2px}.mt-\[3px\]{margin-top:3px}.mt-\[5px\]{margin-top:5px}.mt-\[calc\(var\(--spacing\)\*11\)\]{margin-top:calc(var(--spacing)*11)}.mt-\[calc\(var\(--threadFlyOut-leading-height\,57px\)\*-1\)\]{margin-top:calc(var(--threadFlyOut-leading-height,57px)*-1)}.mt-\[var\(--screen-optical-compact-offset-amount\)\]{margin-top:var(--screen-optical-compact-offset-amount)}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.mt-snc-1{margin-top:var(--snc-1)}[dir=ltr] .mr-0\.5{margin-right:calc(var(--spacing)*.5)}[dir=rtl] .mr-0\.5{margin-left:calc(var(--spacing)*.5)}[dir=ltr] .mr-1{margin-right:calc(var(--spacing)*1)}[dir=rtl] .mr-1{margin-left:calc(var(--spacing)*1)}[dir=ltr] .mr-2{margin-right:calc(var(--spacing)*2)}[dir=rtl] .mr-2{margin-left:calc(var(--spacing)*2)}.-mb-\(--composer-overlap-px\){margin-bottom:calc(var(--composer-overlap-px)*-1)}.-mb-0\.5{margin-bottom:calc(var(--spacing)*-.5)}.-mb-1{margin-bottom:calc(var(--spacing)*-1)}.-mb-2{margin-bottom:calc(var(--spacing)*-2)}.-mb-4{margin-bottom:calc(var(--spacing)*-4)}.-mb-6{margin-bottom:calc(var(--spacing)*-6)}.-mb-10{margin-bottom:calc(var(--spacing)*-10)}.-mb-\[0\.5px\]{margin-bottom:-.5px}.mb-0{margin-bottom:calc(var(--spacing)*0)}.mb-0\!{margin-bottom:calc(var(--spacing)*0)!important}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-2\.5{margin-bottom:calc(var(--spacing)*2.5)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-4\.5{margin-bottom:calc(var(--spacing)*4.5)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-7{margin-bottom:calc(var(--spacing)*7)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-9{margin-bottom:calc(var(--spacing)*9)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.mb-14{margin-bottom:calc(var(--spacing)*14)}.mb-20{margin-bottom:calc(var(--spacing)*20)}.mb-36{margin-bottom:calc(var(--spacing)*36)}.mb-64{margin-bottom:calc(var(--spacing)*64)}.mb-\[-1px\]{margin-bottom:-1px}.mb-\[-2px\]{margin-bottom:-2px}.mb-\[-5px\]{margin-bottom:-5px}.mb-\[-6px\]{margin-bottom:-6px}.mb-\[0\.25rem\]{margin-bottom:.25rem}.mb-\[0\.225rem\]{margin-bottom:.225rem}.mb-\[0\.425rem\]{margin-bottom:.425rem}.mb-\[0\.3125rem\]{margin-bottom:.3125rem}.mb-\[1px\]{margin-bottom:1px}.mb-\[4px\]{margin-bottom:4px}.mb-\[6px\]{margin-bottom:6px}.mb-snc-1{margin-bottom:var(--snc-1)}[dir=ltr] .-ml-1{margin-left:calc(var(--spacing)*-1)}[dir=rtl] .-ml-1{margin-right:calc(var(--spacing)*-1)}[dir=ltr] .ml-1{margin-left:calc(var(--spacing)*1)}[dir=rtl] .ml-1{margin-right:calc(var(--spacing)*1)}[dir=ltr] .ml-2{margin-left:calc(var(--spacing)*2)}[dir=rtl] .ml-2{margin-right:calc(var(--spacing)*2)}[dir=ltr] .ml-4{margin-left:calc(var(--spacing)*4)}[dir=rtl] .ml-4{margin-right:calc(var(--spacing)*4)}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{-webkit-line-clamp:3}.line-clamp-3,.line-clamp-4{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4}.line-clamp-5{-webkit-line-clamp:5}.line-clamp-5,.line-clamp-6{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6}.line-clamp-8{-webkit-line-clamp:8}.line-clamp-12,.line-clamp-8{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-12{-webkit-line-clamp:12}.line-clamp-none{-webkit-line-clamp:unset;-webkit-box-orient:horizontal;display:block;overflow:visible}.\[display\:var\(--display-hidden-until-loaded\,block\)\]{display:var(--display-hidden-until-loaded,block)}.\[display\:var\(--display-hidden-until-loaded\,flex\)\]{display:var(--display-hidden-until-loaded,flex)}.\[display\:var\(--force-hide-label\)\]{display:var(--force-hide-label)}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.grid\!{display:grid!important}.hidden{display:none}.hidden\!{display:none!important}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.aspect-3\/2{aspect-ratio:3/2}.aspect-4\/7{aspect-ratio:4/7}.aspect-7\/4{aspect-ratio:7/4}.aspect-16\/9{aspect-ratio:16/9}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-\[614\/493\]{aspect-ratio:614/493}.aspect-\[1024\/698\]{aspect-ratio:1024/698}.aspect-\[1024\/755\]{aspect-ratio:1024/755}.aspect-\[1024\/760\]{aspect-ratio:1024/760}.aspect-\[1024\/764\]{aspect-ratio:1024/764}.aspect-\[1024\/768\]{aspect-ratio:1024/768}.aspect-\[1200\/630\]{aspect-ratio:1200/630}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-1\.5{height:calc(var(--spacing)*1.5);width:calc(var(--spacing)*1.5)}.size-3{height:calc(var(--spacing)*3);width:calc(var(--spacing)*3)}.size-4{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.size-5{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}.size-6{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.size-6\.5{height:calc(var(--spacing)*6.5);width:calc(var(--spacing)*6.5)}.size-8{height:calc(var(--spacing)*8);width:calc(var(--spacing)*8)}.size-48{height:calc(var(--spacing)*48);width:calc(var(--spacing)*48)}.size-\[10px\]{height:10px;width:10px}.size-full{height:100%;width:100%}.size-min{height:min-content;width:min-content}.h-0{height:calc(var(--spacing)*0)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-1\/4{height:25%}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-2\/3{height:66.6667%}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-4\.5{height:calc(var(--spacing)*4.5)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-6\!{height:calc(var(--spacing)*6)!important}.h-7{height:calc(var(--spacing)*7)}.h-7\!{height:calc(var(--spacing)*7)!important}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-14\.5{height:calc(var(--spacing)*14.5)}.h-15{height:calc(var(--spacing)*15)}.h-16{height:calc(var(--spacing)*16)}.h-18{height:calc(var(--spacing)*18)}.h-20{height:calc(var(--spacing)*20)}.h-20\!{height:calc(var(--spacing)*20)!important}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-36{height:calc(var(--spacing)*36)}.h-40{height:calc(var(--spacing)*40)}.h-42{height:calc(var(--spacing)*42)}.h-48{height:calc(var(--spacing)*48)}.h-60{height:calc(var(--spacing)*60)}.h-64{height:calc(var(--spacing)*64)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-96{height:calc(var(--spacing)*96)}.h-120{height:calc(var(--spacing)*120)}.h-\[0\.6rem\]{height:.6rem}.h-\[0\.75rem\]{height:.75rem}.h-\[1px\]{height:1px}.h-\[2px\]{height:2px}.h-\[3px\]{height:3px}.h-\[4px\]{height:4px}.h-\[6px\]{height:6px}.h-\[9px\]{height:9px}.h-\[10px\]{height:10px}.h-\[11px\]{height:11px}.h-\[13px\]{height:13px}.h-\[14px\]{height:14px}.h-\[15dvh\]{height:15dvh}.h-\[15px\]{height:15px}.h-\[16px\]{height:16px}.h-\[18px\]{height:18px}.h-\[20px\]{height:20px}.h-\[22px\]{height:22px}.h-\[23px\]{height:23px}.h-\[24px\]{height:24px}.h-\[24rem\]{height:24rem}.h-\[25px\]{height:25px}.h-\[26px\]{height:26px}.h-\[27px\]{height:27px}.h-\[28px\]{height:28px}.h-\[30px\]{height:30px}.h-\[30vh\]{height:30vh}.h-\[34px\]{height:34px}.h-\[38px\]{height:38px}.h-\[38px\]\!{height:38px!important}.h-\[40px\]{height:40px}.h-\[42px\]{height:42px}.h-\[44px\]{height:44px}.h-\[45px\]{height:45px}.h-\[50dvh\]{height:50dvh}.h-\[50px\]{height:50px}.h-\[50vh\]{height:50vh}.h-\[54px\]{height:54px}.h-\[60px\]{height:60px}.h-\[60vh\]{height:60vh}.h-\[62px\]{height:62px}.h-\[64px\]{height:64px}.h-\[70px\]{height:70px}.h-\[70vh\]{height:70vh}.h-\[76px\]{height:76px}.h-\[90px\]{height:90px}.h-\[100\%\]{height:100%}.h-\[100dvh\]{height:100dvh}.h-\[100px\]{height:100px}.h-\[100vh\]{height:100vh}.h-\[104px\]{height:104px}.h-\[116px\]{height:116px}.h-\[120px\]{height:120px}.h-\[132px\]{height:132px}.h-\[147px\]{height:147px}.h-\[150px\]{height:150px}.h-\[160px\]{height:160px}.h-\[200px\]{height:200px}.h-\[205px\]{height:205px}.h-\[213px\]{height:213px}.h-\[250px\]{height:250px}.h-\[300px\]{height:300px}.h-\[340px\]{height:340px}.h-\[378px\]{height:378px}.h-\[388px\]{height:388px}.h-\[400\%\]{height:400%}.h-\[400px\]{height:400px}.h-\[404px\]{height:404px}.h-\[424px\]{height:424px}.h-\[600px\]{height:600px}.h-\[650px\]{height:650px}.h-\[860px\]{height:860px}.h-\[calc\(100\%\+var\(--snc-1\)\)\]{height:calc(100% + var(--snc-1))}.h-\[calc\(100\%-max\(env\(safe-area-inset-top\)\,6px\)\)\]{height:calc(100% - max(env(safe-area-inset-top),6px))}.h-\[calc\(100vh-25rem\)\]{height:calc(100vh - 25rem)}.h-\[calc\(100vh-54px\)\]{height:calc(100vh - 54px)}.h-\[calc\(100vh-325px\)\]{height:calc(100vh - 325px)}.h-\[calc\(100vh-theme\(spacing\.header-height\)-80px\)\]{height:calc(100vh - var(--header-height) - 80px)}.h-\[calc\(clamp\(150px\,1\/4\*var\(--thread-safe-area-height\,100lvh\)\,400px\)\)\]{height:clamp(150px,1/4*var(--thread-safe-area-height,100lvh),400px)}.h-\[calc\(var\(--header-height\,3\.5rem\)\+1px\)\]{height:calc(var(--header-height,3.5rem) + 1px)}.h-\[max\(3rem\,18vh\)\]{height:max(3rem,18vh)}.h-\[max\(100dvh\,100\%\)\]{height:max(100dvh,100%)}.h-\[max-content\]{height:max-content}.h-\[var\(--mini-tab-height\)\]{height:var(--mini-tab-height)}.h-\[var\(--screen-height-override\,calc\(var\(--cqh-full\)-var\(--screen-height-offset\,0px\)\)\)\]{height:var(--screen-height-override,calc(var(--cqh-full) - var(--screen-height-offset,0px)))}.h-auto{height:auto}.h-auto\!{height:auto!important}.h-dvh{height:100dvh}.h-fit{height:fit-content}.h-fit\!{height:fit-content!important}.h-full{height:100%}.h-header-height{height:var(--header-height)}.h-max{height:max-content}.h-min{height:min-content}.h-px{height:1px}.h-screen{height:100vh}.h-snc-input-height{height:var(--snc-input-height)}.h-svh{height:100svh}.max-h-0{max-height:calc(var(--spacing)*0)}.max-h-2\/3{max-height:66.6667%}.max-h-6{max-height:calc(var(--spacing)*6)}.max-h-9{max-height:calc(var(--spacing)*9)}.max-h-12{max-height:calc(var(--spacing)*12)}.max-h-14{max-height:calc(var(--spacing)*14)}.max-h-16{max-height:calc(var(--spacing)*16)}.max-h-28{max-height:calc(var(--spacing)*28)}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-36{max-height:calc(var(--spacing)*36)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-52{max-height:calc(var(--spacing)*52)}.max-h-56{max-height:calc(var(--spacing)*56)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-80{max-height:calc(var(--spacing)*80)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[25dvh\]{max-height:25dvh}.max-h-\[28rem\]{max-height:28rem}.max-h-\[50dvh\]{max-height:50dvh}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60dvh\]{max-height:60dvh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[64px\]{max-height:64px}.max-h-\[75vh\]{max-height:75vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[95\%\]{max-height:95%}.max-h-\[100vh\]{max-height:100vh}.max-h-\[100vh\]\!{max-height:100vh!important}.max-h-\[200px\]{max-height:200px}.max-h-\[240px\]{max-height:240px}.max-h-\[280px\]{max-height:280px}.max-h-\[294px\]{max-height:294px}.max-h-\[300px\]{max-height:300px}.max-h-\[350px\]{max-height:350px}.max-h-\[400px\]{max-height:400px}.max-h-\[440px\]{max-height:440px}.max-h-\[500px\]{max-height:500px}.max-h-\[550px\]{max-height:550px}.max-h-\[600px\]{max-height:600px}.max-h-\[700px\]{max-height:700px}.max-h-\[calc\(100\%-max\(env\(safe-area-inset-top\)\,6px\)\)\]{max-height:calc(100% - max(env(safe-area-inset-top),6px))}.max-h-\[calc\(100vh-46px\)\]{max-height:calc(100vh - 46px)}.max-h-\[calc\(100vh-150px\)\]{max-height:calc(100vh - 150px)}.max-h-\[calc\(100vh-300px\)\]{max-height:calc(100vh - 300px)}.max-h-\[calc\(clamp\(20px\,1\/4\*var\(--thread-safe-area-height\,100lvh\)\,400px\)\)\]{max-height:clamp(20px,1/4*var(--thread-safe-area-height,100lvh),400px)}.max-h-\[calc\(clamp\(20px\,1\/8\*var\(--thread-safe-area-height\,100lvh\)\,200px\)\)\]{max-height:clamp(20px,1/8*var(--thread-safe-area-height,100lvh),200px)}.max-h-\[calc\(var\(--radix-popper-available-height\)-2rem\)\]{max-height:calc(var(--radix-popper-available-height) - 2rem)}.max-h-\[max\(10rem\,min\(calc\(100dvh-29rem\)\,10rem\)\)\]{max-height:max(10rem,min(100dvh - 29rem,10rem))}.max-h-\[max\(10rem\,min\(calc\(100dvh-29rem\)\,50dvh\)\)\]{max-height:max(10rem,min(100dvh - 29rem,50dvh))}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-dvh{max-height:100dvh}.max-h-fit{max-height:fit-content}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.max-h-svh{max-height:100svh}.btn-small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));min-height:calc(var(--spacing)*7);padding-inline:calc(var(--spacing)*2.5)}.btn-large{min-height:calc(var(--spacing)*11);padding-inline:calc(var(--spacing)*4)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-0\!{min-height:calc(var(--spacing)*0)!important}.min-h-4{min-height:calc(var(--spacing)*4)}.min-h-5{min-height:calc(var(--spacing)*5)}.min-h-6{min-height:calc(var(--spacing)*6)}.min-h-8{min-height:calc(var(--spacing)*8)}.min-h-9{min-height:calc(var(--spacing)*9)}.min-h-10{min-height:calc(var(--spacing)*10)}.min-h-10\.5{min-height:calc(var(--spacing)*10.5)}.min-h-12{min-height:calc(var(--spacing)*12)}.min-h-14{min-height:calc(var(--spacing)*14)}.min-h-15{min-height:calc(var(--spacing)*15)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-18{min-height:calc(var(--spacing)*18)}.min-h-20{min-height:calc(var(--spacing)*20)}.min-h-24{min-height:calc(var(--spacing)*24)}.min-h-32{min-height:calc(var(--spacing)*32)}.min-h-36{min-height:calc(var(--spacing)*36)}.min-h-60{min-height:calc(var(--spacing)*60)}.min-h-64{min-height:calc(var(--spacing)*64)}.min-h-72{min-height:calc(var(--spacing)*72)}.min-h-80{min-height:calc(var(--spacing)*80)}.min-h-96{min-height:calc(var(--spacing)*96)}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-\[18rem\]{min-height:18rem}.min-h-\[20px\]{min-height:20px}.min-h-\[36px\]{min-height:36px}.min-h-\[36px\]\!{min-height:36px!important}.min-h-\[38px\]{min-height:38px}.min-h-\[40\%\]{min-height:40%}.min-h-\[40px\]{min-height:40px}.min-h-\[40vh\]{min-height:40vh}.min-h-\[44px\]{min-height:44px}.min-h-\[46px\]{min-height:46px}.min-h-\[48px\]{min-height:48px}.min-h-\[50dvh\]{min-height:50dvh}.min-h-\[50px\]{min-height:50px}.min-h-\[50vh\]{min-height:50vh}.min-h-\[56px\]{min-height:56px}.min-h-\[60px\]{min-height:60px}.min-h-\[62px\]{min-height:62px}.min-h-\[64px\]{min-height:64px}.min-h-\[75vh\]{min-height:75vh}.min-h-\[80px\]{min-height:80px}.min-h-\[80vh\]{min-height:80vh}.min-h-\[96px\]{min-height:96px}.min-h-\[100dvh\]{min-height:100dvh}.min-h-\[100px\]{min-height:100px}.min-h-\[104px\]{min-height:104px}.min-h-\[108px\]{min-height:108px}.min-h-\[132px\]{min-height:132px}.min-h-\[160px\]{min-height:160px}.min-h-\[200px\]{min-height:200px}.min-h-\[250px\]{min-height:250px}.min-h-\[320px\]{min-height:320px}.min-h-\[350px\]{min-height:350px}.min-h-\[360px\]{min-height:360px}.min-h-\[400px\]{min-height:400px}.min-h-\[440px\]{min-height:440px}.min-h-\[480px\]{min-height:480px}.min-h-\[560px\]{min-height:560px}.min-h-\[600px\]{min-height:600px}.min-h-\[755px\]{min-height:755px}.min-h-\[calc\(var\(--header-height\,3\.5rem\)\+1px\)\]{min-height:calc(var(--header-height,3.5rem) + 1px)}.min-h-\[max\(var\(--gutter-min-height\,0px\)\,var\(--gutter-remaining-height\,0px\)\)\]{min-height:max(var(--gutter-min-height,0px),var(--gutter-remaining-height,0px))}.min-h-\[unset\]{min-height:unset}.min-h-bloop{min-height:227px}.min-h-dvh{min-height:100dvh}.min-h-fit{min-height:fit-content}.min-h-full{min-height:100%}.min-h-header-height{min-height:var(--header-height)}.min-h-screen{min-height:100vh}.\!w-full{width:100%!important}.\[width\:min\(90cqw\,var\(--thread-content-max-width\)\)\]{width:min(90cqw,var(--thread-content-max-width))}.w-\(--sidebar-rail-width\){width:var(--sidebar-rail-width)}.w-0{width:calc(var(--spacing)*0)}.w-0\!{width:calc(var(--spacing)*0)!important}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-2\/3{width:66.6667%}.w-2\/5{width:40%}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-3\/4{width:75%}.w-3xl{width:var(--container-3xl)}.w-4{width:calc(var(--spacing)*4)}.w-4\.5{width:calc(var(--spacing)*4.5)}.w-4\/5{width:80%}.w-4xl{width:var(--container-4xl)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-6\!{width:calc(var(--spacing)*6)!important}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-10\/12{width:83.3333%}.w-11{width:calc(var(--spacing)*11)}.w-11\.5{width:calc(var(--spacing)*11.5)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-14\.5{width:calc(var(--spacing)*14.5)}.w-15{width:calc(var(--spacing)*15)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-20\!{width:calc(var(--spacing)*20)!important}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-44{width:calc(var(--spacing)*44)}.w-48{width:calc(var(--spacing)*48)}.w-50{width:calc(var(--spacing)*50)}.w-52{width:calc(var(--spacing)*52)}.w-56{width:calc(var(--spacing)*56)}.w-60{width:calc(var(--spacing)*60)}.w-64{width:calc(var(--spacing)*64)}.w-70{width:calc(var(--spacing)*70)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-90{width:calc(var(--spacing)*90)}.w-96{width:calc(var(--spacing)*96)}.w-\[0\.75rem\]{width:.75rem}.w-\[1px\]{width:1px}.w-\[3px\]{width:3px}.w-\[4px\]{width:4px}.w-\[6px\]{width:6px}.w-\[7\.5rem\]{width:7.5rem}.w-\[8rem\]{width:8rem}.w-\[10rem\]{width:10rem}.w-\[11px\]{width:11px}.w-\[14px\]{width:14px}.w-\[15px\]{width:15px}.w-\[16px\]{width:16px}.w-\[20\%\]{width:20%}.w-\[20px\]{width:20px}.w-\[22px\]{width:22px}.w-\[23px\]{width:23px}.w-\[24px\]{width:24px}.w-\[25vw\]{width:25vw}.w-\[27px\]{width:27px}.w-\[28px\]{width:28px}.w-\[30\%\]{width:30%}.w-\[30px\]{width:30px}.w-\[40px\]{width:40px}.w-\[42px\]{width:42px}.w-\[44px\]{width:44px}.w-\[48\%\]{width:48%}.w-\[48px\]{width:48px}.w-\[50\%\]{width:50%}.w-\[50vw\]{width:50vw}.w-\[55\%\]{width:55%}.w-\[60\%\]{width:60%}.w-\[60px\]{width:60px}.w-\[64\%\]{width:64%}.w-\[66\%\]{width:66%}.w-\[70\%\]{width:70%}.w-\[75\%\]{width:75%}.w-\[75px\]{width:75px}.w-\[80\%\]{width:80%}.w-\[88px\]{width:88px}.w-\[90\%\]{width:90%}.w-\[90px\]{width:90px}.w-\[90vw\]{width:90vw}.w-\[100\%\]{width:100%}.w-\[100cqw\]{width:100cqw}.w-\[100px\]{width:100px}.w-\[100vw\]{width:100vw}.w-\[104px\]{width:104px}.w-\[105px\]{width:105px}.w-\[160px\]{width:160px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[210px\]{width:210px}.w-\[222px\]{width:222px}.w-\[230px\]{width:230px}.w-\[232px\]{width:232px}.w-\[240px\]{width:240px}.w-\[250px\]{width:250px}.w-\[256px\]{width:256px}.w-\[272px\]{width:272px}.w-\[280px\]{width:280px}.w-\[286px\]{width:286px}.w-\[290px\]{width:290px}.w-\[294px\]{width:294px}.w-\[300px\]{width:300px}.w-\[304px\]{width:304px}.w-\[328px\]{width:328px}.w-\[345px\]{width:345px}.w-\[350px\]{width:350px}.w-\[378px\]{width:378px}.w-\[400\%\]{width:400%}.w-\[400px\]{width:400px}.w-\[400px\]\!{width:400px!important}.w-\[420px\]\!{width:420px!important}.w-\[450px\]{width:450px}.w-\[600px\]{width:600px}.w-\[620px\]{width:620px}.w-\[640px\]{width:640px}.w-\[700px\]{width:700px}.w-\[768px\]{width:768px}.w-\[calc\(100\%\+--spacing\(2\.5\)\)\]{width:calc(100% + var(--spacing)*2.5)}.w-\[calc\(100\%---spacing\(3\)\)\]{width:calc(100% - var(--spacing)*3)}.w-\[calc\(100\%-1\.5rem\)\]{width:calc(100% - 1.5rem)}.w-\[calc\(100\%-1rem\)\]{width:calc(100% - 1rem)}.w-\[calc\(100\%-var\(--sidebar-width\)\)\]{width:calc(100% - var(--sidebar-width))}.w-\[calc\(100\%_-_32px\)\]{width:calc(100% - 32px)}.w-\[calc\(100vw-450px\)\]{width:calc(100vw - 450px)}.w-\[fit-content\]{width:fit-content}.w-\[max\(95vw\,300px\)\]{width:max(95vw,300px)}.w-\[max-content\]{width:max-content}.w-\[min\(90vw\,600px\)\]{width:min(90vw,600px)}.w-\[min\(320px\,95vw\)\]{width:min(320px,95vw)}.w-\[min\(400px\,100dvw\)\]{width:min(400px,100dvw)}.w-\[var\(--radix-popper-anchor-width\)\]{width:var(--radix-popper-anchor-width)}.w-\[var\(--sidebar-width\)\]{width:var(--sidebar-width)}.w-\[var\(--user-chat-width\,70\%\)\]{width:var(--user-chat-width,70%)}.w-auto{width:auto}.w-dvw{width:100dvw}.w-fit{width:fit-content}.w-full{width:100%}.w-full\!{width:100%!important}.w-max{width:max-content}.w-min{width:min-content}.w-px{width:1px}.w-screen{width:100vw}.w-sm{width:var(--container-sm)}.w-xl{width:var(--container-xl)}.max-w-\(--breakpoint-2xl\){max-width:var(--breakpoint-2xl)}.max-w-\(--breakpoint-md\){max-width:var(--breakpoint-md)}.max-w-\(--sidebar-width\){max-width:var(--sidebar-width)}.max-w-\(--thread-content-max-width\){max-width:var(--thread-content-max-width)}.max-w-1\/2{max-width:50%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-2xs\!{max-width:240px!important}.max-w-3\/4{max-width:75%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-3xs{max-width:256px}.max-w-4\/5{max-width:80%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-9xl{max-width:1536px}.max-w-16{max-width:calc(var(--spacing)*16)}.max-w-20{max-width:calc(var(--spacing)*20)}.max-w-28{max-width:calc(var(--spacing)*28)}.max-w-32{max-width:calc(var(--spacing)*32)}.max-w-48{max-width:calc(var(--spacing)*48)}.max-w-50{max-width:calc(var(--spacing)*50)}.max-w-52{max-width:calc(var(--spacing)*52)}.max-w-60{max-width:calc(var(--spacing)*60)}.max-w-64{max-width:calc(var(--spacing)*64)}.max-w-72{max-width:calc(var(--spacing)*72)}.max-w-80{max-width:calc(var(--spacing)*80)}.max-w-96{max-width:calc(var(--spacing)*96)}.max-w-100{max-width:25rem}.max-w-\[8rem\]{max-width:8rem}.max-w-\[22\%\]{max-width:22%}.max-w-\[48rem\]{max-width:48rem}.max-w-\[60\%\]{max-width:60%}.max-w-\[64px\]{max-width:64px}.max-w-\[70\%\]{max-width:70%}.max-w-\[70dvw\]{max-width:70dvw}.max-w-\[75\%\]{max-width:75%}.max-w-\[75dvw\]{max-width:75dvw}.max-w-\[80\%\]{max-width:80%}.max-w-\[80vw\]\!{max-width:80vw!important}.max-w-\[88px\]{max-width:88px}.max-w-\[90\%\]{max-width:90%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[100px\]{max-width:100px}.max-w-\[100vw\]{max-width:100vw}.max-w-\[160px\]{max-width:160px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[270px\]{max-width:270px}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[328px\]{max-width:328px}.max-w-\[360px\]{max-width:360px}.max-w-\[373px\]{max-width:373px}.max-w-\[380px\]{max-width:380px}.max-w-\[390px\]{max-width:390px}.max-w-\[400px\]{max-width:400px}.max-w-\[402px\]{max-width:402px}.max-w-\[412px\]{max-width:412px}.max-w-\[416px\]{max-width:416px}.max-w-\[420px\]{max-width:420px}.max-w-\[440px\]{max-width:440px}.max-w-\[448px\]{max-width:448px}.max-w-\[450px\]{max-width:450px}.max-w-\[460px\]{max-width:460px}.max-w-\[480px\]{max-width:480px}.max-w-\[500px\]{max-width:500px}.max-w-\[530px\]\!{max-width:530px!important}.max-w-\[550px\]{max-width:550px}.max-w-\[552px\]{max-width:552px}.max-w-\[555px\]{max-width:555px}.max-w-\[560px\]{max-width:560px}.max-w-\[596px\]{max-width:596px}.max-w-\[600px\]{max-width:600px}.max-w-\[640px\]{max-width:640px}.max-w-\[664px\]{max-width:664px}.max-w-\[680px\]{max-width:680px}.max-w-\[700px\]{max-width:700px}.max-w-\[720px\]{max-width:720px}.max-w-\[768px\]{max-width:768px}.max-w-\[800px\]{max-width:800px}.max-w-\[820px\]{max-width:820px}.max-w-\[850px\]{max-width:850px}.max-w-\[900px\]{max-width:900px}.max-w-\[1000px\]{max-width:1000px}.max-w-\[1200px\]{max-width:1200px}.max-w-\[1300px\]{max-width:1300px}.max-w-\[1800px\]{max-width:1800px}.max-w-\[calc\(0\.8\*var\(--thread-content-max-width\,40rem\)\)\]{max-width:calc(var(--thread-content-max-width,40rem)*.8)}.max-w-\[calc\(2\*var\(--thread-content-max-width\)\)\]{max-width:calc(var(--thread-content-max-width)*2)}.max-w-\[calc\(100vw-1\.5rem\)\]{max-width:calc(100vw - 1.5rem)}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-\[var\(--user-chat-width\,70\%\)\]{max-width:var(--user-chat-width,70%)}.max-w-fit{max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-screen{max-width:100vw}.max-w-screen-2xl{max-width:var(--breakpoint-2xl)}.max-w-screen-lg{max-width:var(--breakpoint-lg)}.max-w-screen-xl{max-width:var(--breakpoint-xl)}.max-w-screen-xs{max-width:480px}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--thread-content-width\){min-width:var(--thread-content-width)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-2{min-width:calc(var(--spacing)*2)}.min-w-4{min-width:calc(var(--spacing)*4)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-6{min-width:calc(var(--spacing)*6)}.min-w-7{min-width:calc(var(--spacing)*7)}.min-w-8{min-width:calc(var(--spacing)*8)}.min-w-9{min-width:calc(var(--spacing)*9)}.min-w-10{min-width:calc(var(--spacing)*10)}.min-w-11{min-width:calc(var(--spacing)*11)}.min-w-14{min-width:calc(var(--spacing)*14)}.min-w-20{min-width:calc(var(--spacing)*20)}.min-w-24{min-width:calc(var(--spacing)*24)}.min-w-28{min-width:calc(var(--spacing)*28)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-36{min-width:calc(var(--spacing)*36)}.min-w-40{min-width:calc(var(--spacing)*40)}.min-w-48{min-width:calc(var(--spacing)*48)}.min-w-60{min-width:calc(var(--spacing)*60)}.min-w-64{min-width:calc(var(--spacing)*64)}.min-w-72{min-width:calc(var(--spacing)*72)}.min-w-80{min-width:calc(var(--spacing)*80)}.min-w-96{min-width:calc(var(--spacing)*96)}.min-w-\[1ch\]{min-width:1ch}.min-w-\[2em\]{min-width:2em}.min-w-\[7\.5rem\]{min-width:7.5rem}.min-w-\[25vw\]{min-width:25vw}.min-w-\[32px\]{min-width:32px}.min-w-\[50px\]{min-width:50px}.min-w-\[62px\]{min-width:62px}.min-w-\[64px\]{min-width:64px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[210px\]{min-width:210px}.min-w-\[220px\]{min-width:220px}.min-w-\[224px\]{min-width:224px}.min-w-\[240px\]{min-width:240px}.min-w-\[260px\]{min-width:260px}.min-w-\[280px\]{min-width:280px}.min-w-\[320px\]{min-width:320px}.min-w-\[400px\]{min-width:400px}.min-w-\[600px\]{min-width:600px}.min-w-\[680px\]{min-width:680px}.min-w-\[calc\(100vw-1\.5rem\)\]{min-width:calc(100vw - 1.5rem)}.min-w-\[calc\(var\(--sidebar-width\)-12px\)\]{min-width:calc(var(--sidebar-width) - 12px)}.min-w-\[min\(95dvw\,840px\)\]{min-width:min(95dvw,840px)}.min-w-\[min\(125px\,95vw\)\]{min-width:min(125px,95vw)}.min-w-\[min\(200px\,95vw\)\]{min-width:min(200px,95vw)}.min-w-\[min\(280px\,95vw\)\]{min-width:min(280px,95vw)}.min-w-\[min\(350px\,95vw\)\]{min-width:min(350px,95vw)}.min-w-\[min\(450px\,80cqw\,80vw\)\]{min-width:min(450px,80cqw,80vw)}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-bloop{min-width:227px}.min-w-fit{min-width:fit-content}.min-w-full{min-width:100%}.min-w-min{min-width:min-content}.min-w-screen{min-width:100vw}.flex-0{flex:0}.flex-1{flex:1}.flex-2{flex:2}.flex-6{flex:6}.flex-\[0_0_100\%\]{flex:0 0 100%}.flex-\[1_0_0\]{flex:1 0 0}.flex-auto{flex:auto}.flex-initial{flex:0 auto}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.flex-grow-1,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-0{flex-basis:calc(var(--spacing)*0)}.basis-20{flex-basis:calc(var(--spacing)*20)}.basis-\[32px\]{flex-basis:32px}.basis-auto{flex-basis:auto}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)}.flip{--tw-scale-x:-1;scale:var(--tw-scale-x)var(--tw-scale-y);transform-origin:50%}.origin-\[14px_50\%\]{transform-origin:14px}.origin-\[50\%_50\%\]{transform-origin:50%}.origin-bottom{transform-origin:bottom}[dir=ltr] .origin-bottom-left{transform-origin:0 100%}[dir=rtl] .origin-bottom-left{transform-origin:100% 100%}.origin-center{transform-origin:50%}[dir=ltr] .origin-left{transform-origin:0}[dir=rtl] .origin-left{transform-origin:100%}[dir=ltr] .origin-top-left{transform-origin:0 0}[dir=rtl] .origin-top-left,[dir=ltr] .origin-top-right{transform-origin:100% 0}[dir=rtl] .origin-top-right{transform-origin:0 0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-2{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-2{--tw-translate-x:calc(var(--spacing)*-2)}.-translate-x-52{--tw-translate-x:calc(var(--spacing)*-52)}.-translate-x-52,.-translate-x-96{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-96{--tw-translate-x:calc(var(--spacing)*-96)}.-translate-x-\[30\%\]{--tw-translate-x:-30%}.-translate-x-\[30\%\],.-translate-x-full{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%}.translate-x-1\/2{--tw-translate-x:50%}.translate-x-1\/2,.translate-x-52{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-52{--tw-translate-x:calc(var(--spacing)*52)}.translate-x-96{--tw-translate-x:calc(var(--spacing)*96)}.translate-x-96,.translate-x-\[-50\%\]{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-full{--tw-translate-x:100%}.-translate-y-1,.translate-x-full{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing)*-1)}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-2{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-2{--tw-translate-y:calc(var(--spacing)*-2)}.-translate-y-12{--tw-translate-y:calc(var(--spacing)*-12)}.-translate-y-12,.-translate-y-\[55\%\]{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-\[55\%\]{--tw-translate-y:-55%}.-translate-y-full{--tw-translate-y:-100%}.-translate-y-full,.translate-y-0{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0)}.translate-y-2{--tw-translate-y:calc(var(--spacing)*2)}.translate-y-10,.translate-y-2{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-10{--tw-translate-y:calc(var(--spacing)*10)}.translate-y-\[-100\%\]{--tw-translate-y:-100%}.translate-y-\[-100\%\],.translate-y-\[-100lvh\]{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-100lvh\]{--tw-translate-y:-100lvh}.translate-y-\[1px\]{--tw-translate-y:1px}.translate-y-\[10px\],.translate-y-\[1px\]{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[10px\]{--tw-translate-y:10px}.translate-y-\[100\%\]{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[translate\:0_16px\]{translate:0 16px}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%}.scale-100,.scale-75{scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%}.-scale-x-100,.scale-110{scale:var(--tw-scale-x)var(--tw-scale-y)}.-scale-x-100{--tw-scale-x:-100%}.scale-x-75{--tw-scale-x:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-\[0\.6\]{scale:.6}.scale-\[0\.7\]{scale:.7}.scale-\[0\.9\]{scale:.9}.scale-\[0\.85\]{scale:.85}.scale-\[1\.75\]{scale:1.75}.-rotate-90{rotate:-90deg}.-rotate-180{rotate:-180deg}.rotate-0{rotate:none}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-90deg\]{rotate:-90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.transform-gpu{transform:translateZ(0)var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\[hive-log-fadeout_0\.3s_1\.5s_forwards\]{animation:hive-log-fadeout .3s 1.5s forwards}.animate-\[pulse_2s_ease-in-out_infinite\]{animation:pulse 2s ease-in-out infinite}.animate-\[show_150ms_ease-in\]{animation:show .15s ease-in}.animate-\[slide-in-left_0\.2s_forwards\]{animation:slide-in-left .2s forwards}.animate-\[slide-in-right_0\.2s_forwards\]{animation:slide-in-right .2s forwards}.animate-\[slide-out-left_0\.2s_forwards\]{animation:slide-out-left .2s forwards}.animate-\[slide-out-right_0\.2s_forwards\]{animation:slide-out-right .2s forwards}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-pulsing{animation:pulsing 2s ease-in-out infinite forwards}.animate-show{animation:show .1s cubic-bezier(.16,1,.3,1)}.animate-spin{animation:var(--animate-spin)}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-e-resize{cursor:e-resize}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.cursor-text{cursor:text}.cursor-w-resize{cursor:w-resize}.cursor-wait{cursor:wait}.cursor-zoom-in{cursor:zoom-in}.cursor-zoom-out{cursor:zoom-out}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-y{scroll-snap-type:y var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-proximity{--tw-scroll-snap-strictness:proximity}.snap-center{scroll-snap-align:center}.snap-start{scroll-snap-align:start}.snap-always{scroll-snap-stop:always}.scroll-m-5{scroll-margin:calc(var(--spacing)*5)}.scroll-mx-5{scroll-margin-inline:calc(var(--spacing)*5)}.scroll-mt-28{scroll-margin-top:calc(var(--spacing)*28)}.scroll-ps-4{scroll-padding-inline-start:calc(var(--spacing)*4)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.form-textarea{--tw-shadow:0 0 #0000;appearance:none;background-color:#fff;border-color:#9b9b9b;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.form-textarea:focus{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#004f99;--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);border-color:#004f99;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.form-textarea::placeholder{color:#9b9b9b;opacity:1}.appearance-none{appearance:none}.columns-1{column-count:1}.break-inside-avoid{break-inside:avoid}.grid-flow-col{grid-auto-flow:column}.grid-flow-row{grid-auto-flow:row}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[1fr_min-content\]{grid-template-columns:1fr min-content}.grid-cols-\[10px_1fr_10px\]{grid-template-columns:10px 1fr 10px}.grid-cols-\[50\%_50\%\]{grid-template-columns:50% 50%}.grid-cols-\[180px_1fr_32px\]{grid-template-columns:180px 1fr 32px}.grid-cols-\[200px_1fr_1fr\]{grid-template-columns:200px 1fr 1fr}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.grid-cols-\[auto_auto\]{grid-template-columns:auto auto}.grid-cols-\[auto_auto_1fr\]{grid-template-columns:auto auto 1fr}.grid-cols-\[auto_max-content\]{grid-template-columns:auto max-content}.grid-cols-\[minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[repeat\(4\,max-content\)\]{grid-template-columns:repeat(4,max-content)}.grid-cols-\[repeat\(auto-fit\,minmax\(200px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.grid-cols-\[repeat\(auto-fit\,minmax\(250px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.\[grid-template-rows\:repeat\(5\,min-content\)\]{grid-template-rows:repeat(5,min-content)}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.grid-rows-\[10px_auto_minmax\(10px\,1fr\)\]{grid-template-rows:10px auto minmax(10px,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.grid-rows-\[min-content_1fr_min-content\]{grid-template-rows:min-content 1fr min-content}.grid-rows-\[min-content_min-content_1fr_min-content\]{grid-template-rows:min-content min-content 1fr min-content}.grid-rows-\[minmax\(0\,1fr\)_auto\]{grid-template-rows:minmax(0,1fr) auto}.grid-rows-\[minmax\(10px\,1fr\)_auto_10px\]{grid-template-rows:minmax(10px,1fr) auto 10px}.grid-rows-\[minmax\(10px\,1fr\)_auto_minmax\(10px\,1fr\)\]{grid-template-rows:minmax(10px,1fr) auto minmax(10px,1fr)}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.place-content-center{place-content:center}.place-items-center{place-items:center}.content-center{align-content:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-normal{justify-content:normal}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-start{justify-items:start}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\!{gap:calc(var(--spacing)*2)!important}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-3\.5{gap:calc(var(--spacing)*3.5)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-7{gap:calc(var(--spacing)*7)}.gap-8{gap:calc(var(--spacing)*8)}.gap-9{gap:calc(var(--spacing)*9)}.gap-10{gap:calc(var(--spacing)*10)}.gap-12{gap:calc(var(--spacing)*12)}.gap-16{gap:calc(var(--spacing)*16)}.gap-\[0\.3em\]{gap:.3em}.gap-\[2px\]{gap:2px}.gap-\[6px\]{gap:6px}.gap-\[10px\]{gap:10px}.gap-\[16px\]{gap:16px}.gap-\[18px\]{gap:18px}.gap-\[min\(10dvw\,_200px\)\]{gap:min(10dvw,200px)}.gap-bar{gap:var(--bar-gap,.25rem)}.gap-snc-1{gap:var(--snc-1)}.gap-snc-results-padding{gap:var(--snc-results-padding)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*0*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*0*var(--tw-space-y-reverse))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*1*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*1*var(--tw-space-y-reverse))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*1.5*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*1.5*var(--tw-space-y-reverse))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*4*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*4*var(--tw-space-y-reverse))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*5*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*5*var(--tw-space-y-reverse))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*6*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*6*var(--tw-space-y-reverse))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*8*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*8*var(--tw-space-y-reverse))}:where(.space-y-\[6px\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(6px*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(6px*var(--tw-space-y-reverse))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}.gap-x-1{column-gap:calc(var(--spacing)*1)}.gap-x-1\.5{column-gap:calc(var(--spacing)*1.5)}.gap-x-2{column-gap:calc(var(--spacing)*2)}.gap-x-3{column-gap:calc(var(--spacing)*3)}.gap-x-4{column-gap:calc(var(--spacing)*4)}.gap-x-9{column-gap:calc(var(--spacing)*9)}.gap-x-10{column-gap:calc(var(--spacing)*10)}.gap-x-12{column-gap:calc(var(--spacing)*12)}:where(.-space-x-1\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*-1.5*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*-1.5*var(--tw-space-x-reverse))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*1*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*1*var(--tw-space-x-reverse))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*3*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*3*var(--tw-space-x-reverse))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}:where(.space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*6*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*6*var(--tw-space-x-reverse))}:where(.space-x-12>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*12*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*12*var(--tw-space-x-reverse))}:where(.space-x-14>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*14*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*14*var(--tw-space-x-reverse))}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}.\[row-gap\:1rem\]{row-gap:1rem}.gap-y-1{row-gap:calc(var(--spacing)*1)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.gap-y-3{row-gap:calc(var(--spacing)*3)}.gap-y-4{row-gap:calc(var(--spacing)*4)}.gap-y-6{row-gap:calc(var(--spacing)*6)}.gap-y-10{row-gap:calc(var(--spacing)*10)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-end-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-style:var(--tw-border-style)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-bottom-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse))}:where(.divide-gray-200>:not(:last-child)){border-color:#e3e3e3}:where(.divide-token-border-default>:not(:last-child)){border-color:var(--border-default)}:where(.divide-token-border-light>:not(:last-child)){border-color:var(--border-light)}:where(.divide-token-border-medium>:not(:last-child)){border-color:var(--border-medium)}:where(.divide-white\/10>:not(:last-child)){border-color:#ffffff1a}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-center{justify-self:center}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.justify-self-stretch{justify-self:stretch}.\!truncate{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-visible\!{overflow:visible!important}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-visible{overflow-x:visible}.overflow-y-auto{overflow-y:auto}.overflow-y-clip{overflow-y:clip}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-scroll\!{overflow-y:scroll!important}.overflow-y-visible{overflow-y:visible}.overscroll-contain{overscroll-behavior:contain}.scroll-smooth{scroll-behavior:smooth}[dir=ltr] .\[border-radius\:var\(--sheet-radius\)_var\(--sheet-radius\)_0_0\]{border-radius:var(--sheet-radius)var(--sheet-radius)0 0}[dir=rtl] .\[border-radius\:var\(--sheet-radius\)_var\(--sheet-radius\)_0_0\]{border-radius:0 var(--sheet-radius)var(--sheet-radius)0}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[0\.25rem\]{border-radius:.25rem}[dir=ltr] .rounded-\[0px_20px_20px_0px\]{border-radius:0 20px 20px 0}[dir=rtl] .rounded-\[0px_20px_20px_0px\]{border-radius:20px 0 0 20px}.rounded-\[1px\]{border-radius:1px}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[5px\]{border-radius:5px}.rounded-\[8px\]{border-radius:8px}.rounded-\[10px\]{border-radius:10px}.rounded-\[14px\]{border-radius:14px}.rounded-\[16px\]{border-radius:16px}.rounded-\[20px\]{border-radius:20px}[dir=ltr] .rounded-\[20px_0px_0px_20px\]{border-radius:20px 0 0 20px}[dir=rtl] .rounded-\[20px_0px_0px_20px\]{border-radius:0 20px 20px 0}.rounded-\[22px\]{border-radius:22px}.rounded-\[25px\]{border-radius:25px}.rounded-\[28px\]{border-radius:28px}.rounded-\[30px\]{border-radius:30px}.rounded-\[36px\]{border-radius:36px}.rounded-\[38px\]{border-radius:38px}.rounded-\[40px\]{border-radius:40px}.rounded-full{border-radius:3.40282e+38px}.rounded-full\!{border-radius:3.40282e+38px!important}.rounded-lg{border-radius:var(--radius-lg)}.rounded-lg\!{border-radius:var(--radius-lg)!important}.rounded-md{border-radius:var(--radius-md)}.rounded-md\!{border-radius:var(--radius-md)!important}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-sm\!{border-radius:var(--radius-sm)!important}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xl\!{border-radius:var(--radius-xl)!important}.rounded-xs{border-radius:var(--radius-xs)}.rounded-s-full{border-end-start-radius:3.40282e+38px;border-start-start-radius:3.40282e+38px}.rounded-s-none{border-end-start-radius:0;border-start-start-radius:0}.rounded-s-xl{border-end-start-radius:var(--radius-xl);border-start-start-radius:var(--radius-xl)}.rounded-ss-2xl{border-start-start-radius:var(--radius-2xl)}.rounded-ss-3xl{border-start-start-radius:var(--radius-3xl)}.rounded-e-lg{border-end-end-radius:var(--radius-lg);border-start-end-radius:var(--radius-lg)}.rounded-e-md{border-end-end-radius:var(--radius-md);border-start-end-radius:var(--radius-md)}.rounded-e-none{border-end-end-radius:0;border-start-end-radius:0}.rounded-e-xl{border-end-end-radius:var(--radius-xl);border-start-end-radius:var(--radius-xl)}.rounded-se-2xl{border-start-end-radius:var(--radius-2xl)}.rounded-se-3xl{border-start-end-radius:var(--radius-3xl)}.rounded-se-full{border-start-end-radius:3.40282e+38px}.rounded-se-lg{border-start-end-radius:var(--radius-lg)}.rounded-ee-\[50\%\]{border-end-end-radius:50%}.rounded-ee-full{border-end-end-radius:3.40282e+38px}.rounded-ee-sm{border-end-end-radius:var(--radius-sm)}.rounded-es-2xl{border-end-start-radius:var(--radius-2xl)}.rounded-es-\[50\%\]{border-end-start-radius:50%}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.rounded-t-\[3px\]{border-top-left-radius:3px;border-top-right-radius:3px}.rounded-t-\[5px\]{border-top-left-radius:5px;border-top-right-radius:5px}.rounded-t-\[24px\]{border-top-left-radius:24px;border-top-right-radius:24px}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}[dir=ltr] .rounded-l{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}[dir=rtl] .rounded-l,[dir=ltr] .rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}[dir=rtl] .rounded-r{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.rounded-b-2xl{border-bottom-left-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.rounded-b-3xl{border-bottom-left-radius:var(--radius-3xl);border-bottom-right-radius:var(--radius-3xl)}.rounded-b-lg{border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.rounded-b-md{border-bottom-left-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0}.rounded-b-xl{border-bottom-left-radius:var(--radius-xl);border-bottom-right-radius:var(--radius-xl)}.btn-secondary{background-color:var(--main-surface-primary);border-color:var(--border-medium);border-style:var(--tw-border-style);border-width:1px;color:var(--text-primary);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media (hover:hover){.btn-secondary:hover{background-color:var(--main-surface-secondary)}}.btn-secondary:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);--tw-ring-color:#676767;--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.btn-danger-outline{background-color:var(--main-surface-primary);border-color:#ba2623;border-style:var(--tw-border-style);border-width:1px;color:#ba2623}@media (hover:hover){.btn-danger-outline:hover{background-color:var(--main-surface-secondary)}}.btn-danger-outline:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);--tw-ring-color:#ba2623;--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.border-thin{border-style:var(--tw-border-style);border-width:1px}@media (min-resolution:1.5x){.border-thin{border-style:var(--tw-border-style);border-width:.5px}}.border{border-style:var(--tw-border-style);border-width:1px}.border\!{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-0{border-style:var(--tw-border-style);border-width:0}.border-0\!{border-style:var(--tw-border-style)!important;border-width:0!important}.border-1{border-width:1px}.border-1,.border-2{border-style:var(--tw-border-style)}.border-2{border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-\[0\.50px\],.border-\[0\.5px\],.border-\[\.5px\]{border-style:var(--tw-border-style);border-width:.5px}.border-\[1px\]{border-width:1px}.border-\[1px\],.border-\[3px\]{border-style:var(--tw-border-style)}.border-\[3px\]{border-width:3px}.border-\[4px\]{border-style:var(--tw-border-style);border-width:4px}[dir=ltr] .\[border-width\:1px_0\.5px_1px_1px\]{border-width:1px .5px 1px 1px}[dir=rtl] .\[border-width\:1px_0\.5px_1px_1px\],[dir=ltr] .\[border-width\:1px_1px_1px_0\.5px\]{border-width:1px 1px 1px .5px}[dir=rtl] .\[border-width\:1px_1px_1px_0\.5px\]{border-width:1px .5px 1px 1px}.border-x-0{border-inline-style:var(--tw-border-style);border-inline-width:0}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-width:1px}.border-s,.border-s-0{border-inline-start-style:var(--tw-border-style)}.border-s-0{border-inline-start-width:0}.border-s-0\!{border-inline-start-style:var(--tw-border-style)!important;border-inline-start-width:0!important}.border-s-3{border-inline-start-width:3px}.border-s-3,.border-s-4{border-inline-start-style:var(--tw-border-style)}.border-s-4{border-inline-start-width:4px}.border-s-\[0\.5px\]{border-inline-start-style:var(--tw-border-style);border-inline-start-width:.5px}.border-e{border-inline-end-width:1px}.border-e,.border-e-0{border-inline-end-style:var(--tw-border-style)}.border-e-0{border-inline-end-width:0}.border-e-0\!{border-inline-end-style:var(--tw-border-style)!important;border-inline-end-width:0!important}.border-e-2{border-inline-end-width:2px}.border-e-2,.border-e-\[1px\]{border-inline-end-style:var(--tw-border-style)}.border-e-\[1px\]{border-inline-end-width:1px}.border-t{border-top-width:1px}.border-t,.border-t-0{border-top-style:var(--tw-border-style)}.border-t-0{border-top-width:0}.border-t-0\!{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.border-t-\[0\.5px\]{border-top-style:var(--tw-border-style);border-top-width:.5px}[dir=ltr] .border-r{border-right-style:var(--tw-border-style);border-right-width:1px}[dir=rtl] .border-r{border-left-style:var(--tw-border-style);border-left-width:1px}.sheet-border{border-bottom:1px var(--tw-border-style) var(--border-light)}.border-b{border-bottom-width:1px}.border-b,.border-b-0{border-bottom-style:var(--tw-border-style)}.border-b-0{border-bottom-width:0}.border-b-1{border-bottom-width:1px}.border-b-1,.border-b-2{border-bottom-style:var(--tw-border-style)}.border-b-2{border-bottom-width:2px}.border-b-\[0\.5px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:.5px}[dir=ltr] .border-l,[dir=ltr] .border-l-\[1px\]{border-left-style:var(--tw-border-style);border-left-width:1px}[dir=rtl] .border-l,[dir=rtl] .border-l-\[1px\]{border-right-style:var(--tw-border-style);border-right-width:1px}.\!border-none{--tw-border-style:none!important;border-style:none!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[\#0285FF\]{border-color:#0285ff}.border-\[\#AF52DE\]{border-color:#af52de}.border-\[\#B3DBFF\]{border-color:#b3dbff}.border-\[\#E25507\]{border-color:#e25507}.border-\[\#EDEDF2\]{border-color:#ededf2}.border-\[\#df1b41\]{border-color:#df1b41}.border-\[\#e6e6e6\]{border-color:#e6e6e6}.border-\[\#f4f4f4\]{border-color:#f4f4f4}.border-\[rgba\(0\,0\,0\,0\.1\)\]{border-color:#0000001a}.border-\[rgba\(0\,0\,0\,0\.18\)\]{border-color:#0000002e}.border-black{border-color:#000}.border-black\/10{border-color:oklab(0 none none/.1)}.border-black\/25{border-color:oklab(0 none none/.25)}.border-black\/30{border-color:oklab(0 none none/.3)}.border-black\/\[0\.12\]{border-color:oklab(0 none none/.12)}.border-blue-100{border-color:#99ceff}.border-blue-400{border-color:#0285ff}.border-blue-400\!{border-color:#0285ff!important}.border-blue-400\/10{border-color:#0285ff1a}.border-blue-400\/\[\.3\]{border-color:#0285ff4d}.border-blue-500{border-color:#0169cc}.border-blue-600{border-color:#004f99}.border-brand-green-800{border-color:#05a746}.border-brand-purple{border-color:#ab68ff}.border-gray-100{border-color:#ececec}.border-gray-200{border-color:#e3e3e3}.border-gray-300{border-color:#cdcdcd}.border-gray-400{border-color:#b4b4b4}.border-gray-500{border-color:#9b9b9b}.border-gray-700{border-color:#424242}.border-green-500{border-color:#00a240}.border-green-600{border-color:#008635}.border-orange-400{border-color:#fb6a22}.border-orange-400\/15{border-color:#fb6a2226}.border-orange-500{border-color:#e25507}.border-red-200{border-color:#ff8583}.border-red-400{border-color:#fa423e}.border-red-500{border-color:#e02e2a}.border-red-500\!{border-color:#e02e2a!important}.border-red-600{border-color:#ba2623}.border-red-700{border-color:#911e1b}.border-token-bg-primary{border-color:var(--bg-primary)}.border-token-bg-secondary{border-color:var(--bg-secondary)}.border-token-bg-tertiary{border-color:var(--bg-tertiary)}.border-token-border-default{border-color:var(--border-default)}.border-token-border-default\!{border-color:var(--border-default)!important}.border-token-border-heavy{border-color:var(--border-heavy)}.border-token-border-heavy\!{border-color:var(--border-heavy)!important}.border-token-border-light{border-color:var(--border-light)}.border-token-border-medium{border-color:var(--border-medium)}.border-token-border-sharp{border-color:var(--border-sharp)}.border-token-border-status-warning{border-color:var(--border-status-warning)}.border-token-border-xheavy{border-color:var(--border-xheavy)}.border-token-border-xlight{border-color:var(--border-xlight)}.border-token-border-xlight\!{border-color:var(--border-xlight)!important}.border-token-interactive-label-danger-secondary-default{border-color:var(--interactive-label-danger-secondary-default)}.border-token-main-surface-primary{border-color:var(--main-surface-primary)}.border-token-main-surface-secondary{border-color:var(--main-surface-secondary)}.border-token-main-surface-tertiary{border-color:var(--main-surface-tertiary)}.border-token-sidebar-surface-primary{border-color:var(--sidebar-surface-primary)}.border-token-surface-error\/5{border-color:rgb(var(--surface-error)/1)}@supports (color:color-mix(in lab,red,red)){.border-token-surface-error\/5{border-color:color-mix(in oklab,rgb(var(--surface-error)/1) 5%,transparent)}}.border-token-surface-error\/15{border-color:rgb(var(--surface-error)/1)}@supports (color:color-mix(in lab,red,red)){.border-token-surface-error\/15{border-color:color-mix(in oklab,rgb(var(--surface-error)/1) 15%,transparent)}}.border-token-text-error{border-color:var(--text-error)}.border-token-text-primary{border-color:var(--text-primary)}.border-token-text-primary\!{border-color:var(--text-primary)!important}.border-token-text-secondary{border-color:var(--text-secondary)}.border-token-text-status-error{border-color:var(--text-status-error)}.border-token-text-tertiary{border-color:var(--text-tertiary)}.border-transparent{border-color:#0000}.border-white{border-color:#fff}.border-white\/10{border-color:#ffffff1a}.border-y-token-border-heavy{border-block-color:var(--border-heavy)}.border-s-token-border-sharp{border-inline-start-color:var(--border-sharp)}.border-s-token-sidebar-surface-secondary{border-inline-start-color:var(--sidebar-surface-secondary)}.border-t-token-border-xlight{border-top-color:var(--border-xlight)}.border-t-transparent{border-top-color:#0000}.border-b-black{border-bottom-color:#000}.border-b-token-bg-secondary{border-bottom-color:var(--bg-secondary)}.border-b-token-border-default{border-bottom-color:var(--border-default)}.border-b-transparent{border-bottom-color:#0000}.btn-primary{background-clip:padding-box;background-color:#0d0d0d;color:#fff}@media (hover:hover){.btn-primary:hover{background-color:#212121}}.btn-primary:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);--tw-ring-color:#9b9b9b;--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.btn-primary:is(.dark *){background-color:#f9f9f9;color:#0d0d0d}@media (hover:hover){.btn-primary:is(.dark *):hover{background-color:#ececec}}.btn-danger{background-clip:padding-box;background-color:#e02e2a;color:#fff}@media (hover:hover){.btn-danger:hover{background-color:#911e1b}}.btn-danger:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);--tw-ring-color:#fa423e;--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.btn-danger:disabled:hover{background-color:#911e1b}}.btn-blue{background-clip:padding-box;background-color:#0066de;color:#fff}@media (hover:hover){.btn-blue:hover{background-color:#003f7a}}.btn-blue:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);--tw-ring-color:#003f7a;--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.btn-green{background-clip:padding-box;background-color:#008635;color:#fff}@media (hover:hover){.btn-green:hover{background-color:#00692a}}.btn-green:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);--tw-ring-color:#00a240;--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.btn-primary-inverse{background-color:#f9f9f9;color:#0d0d0d}@media (hover:hover){.btn-primary-inverse:hover{background-color:#ececec}}.btn-primary-inverse:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);--tw-ring-color:#9b9b9b;--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.btn-primary-inverse:is(.dark *){background-color:#0d0d0d;color:#fff}@media (hover:hover){.btn-primary-inverse:is(.dark *):hover{background-color:#212121}.btn-ghost:hover{background-color:oklab(0 none none/.05)}}.btn-ghost:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);--tw-ring-color:oklab(0% none none/.05);--tw-outline-style:none;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline-style:none}@media (forced-colors:active){.btn-ghost:focus-visible{outline:2px solid #0000;outline-offset:2px}}@media (hover:hover){.btn-ghost:is(.dark *):hover{background-color:#ffffff1a}}.\!bg-token-bg-tertiary{background-color:var(--bg-tertiary)!important}.bg-\[\#6B91F1\]{background-color:#6b91f1}.bg-\[\#007AFF\]{background-color:#007aff}.bg-\[\#8C43A00D\]{background-color:#8c43a00d}.bg-\[\#8E3CF320\]{background-color:#8e3cf320}.bg-\[\#10A37F\]{background-color:#10a37f}.bg-\[\#00000014\]{background-color:#00000014}.bg-\[\#0088FF\]{background-color:#08f}.bg-\[\#129FBF\]{background-color:#129fbf}.bg-\[\#282C34\]{background-color:#282c34}.bg-\[\#59636E20\]{background-color:#59636e20}.bg-\[\#303030\]{background-color:#303030}.bg-\[\#AF52DE\]{background-color:#af52de}.bg-\[\#B161FD\]{background-color:#b161fd}.bg-\[\#C3DEC780\]{background-color:#c3dec780}.bg-\[\#CEDFFE\]{background-color:#cedffe}.bg-\[\#D6303D20\]{background-color:#d6303d20}.bg-\[\#DAEEFF\]{background-color:#daeeff}.bg-\[\#E0FFE7\]{background-color:#e0ffe7}.bg-\[\#E5F3FF\]{background-color:#e5f3ff}.bg-\[\#F1F1F1\]{background-color:#f1f1f1}.bg-\[\#F1F1FB\]{background-color:#f1f1fb}.bg-\[\#F4F4F4\]\!{background-color:#f4f4f4!important}.bg-\[\#F7F7F7\]{background-color:#f7f7f7}.bg-\[\#F8CA27\]{background-color:#f8ca27}.bg-\[\#F9F9F9\]{background-color:#f9f9f9}.bg-\[\#FCECC1\]{background-color:#fcecc1}.bg-\[\#FF6E3C\]{background-color:#ff6e3c}.bg-\[\#FF5588\]{background-color:#f58}.bg-\[\#e2c541\]{background-color:#e2c541}.bg-\[\#f4f4f4\]{background-color:#f4f4f4}.bg-\[\#fcf6e0\]{background-color:#fcf6e0}.bg-\[Highlight\]{background-color:highlight}.bg-\[Highlight\]\!{background-color:highlight!important}.bg-\[rgb\(16\,163\,117\)\]{background-color:#10a375}.bg-\[rgb\(247\,247\,247\)\]{background-color:#f7f7f7}.bg-\[rgb\(250\,235\,234\)\]\!{background-color:#faebea!important}.bg-\[rgba\(0\,0\,0\,0\.03\)\]{background-color:#00000008}.bg-\[rgba\(29\,155\,209\,0\.1\)\]{background-color:#1d9bd11a}.bg-\[rgba\(229\,76\,66\,0\.16\)\]{background-color:#e54c4229}.bg-\[rgba\(249\,249\,249\,1\)\]{background-color:#f9f9f9}.bg-\[var\(--bg-secondary\)\]{background-color:var(--bg-secondary)}.bg-\[var\(--right-bg\)\]{background-color:var(--right-bg)}.bg-black{background-color:#000}.bg-black\!{background-color:#000!important}.bg-black\/5{background-color:oklab(0 none none/.05)}.bg-black\/5\!{background-color:oklab(0 none none/.05)!important}.bg-black\/10{background-color:oklab(0 none none/.1)}.bg-black\/20{background-color:oklab(0 none none/.2)}.bg-black\/25{background-color:oklab(0 none none/.25)}.bg-black\/40{background-color:oklab(0 none none/.4)}.bg-black\/50{background-color:oklab(0 none none/.5)}.bg-black\/90{background-color:oklab(0 none none/.9)}.bg-black\/95{background-color:oklab(0 none none/.95)}.bg-black\/\[0\.025\]{background-color:oklab(0 none none/.025)}.bg-blue-25{background-color:#f5faff}.bg-blue-50{background-color:#e5f3ff}.bg-blue-75{background-color:#cce6ff}.bg-blue-100{background-color:#99ceff}.bg-blue-200{background-color:#66b5ff}.bg-blue-300{background-color:#339cff}.bg-blue-400{background-color:#0285ff}.bg-blue-400\/10{background-color:#0285ff1a}.bg-blue-400\/10\!{background-color:#0285ff1a!important}.bg-blue-400\/15{background-color:#0285ff26}.bg-blue-400\/\[\.08\]{background-color:#0285ff14}.bg-blue-400\/\[0\.1\]{background-color:#0285ff1a}.bg-blue-500{background-color:#0169cc}.bg-blue-500\/10{background-color:#0169cc1a}.bg-blue-500\/30{background-color:#0169cc4d}.bg-blue-600{background-color:#004f99}.bg-blue-700{background-color:#003f7a}.bg-blue-800{background-color:#013566}.bg-blue-900{background-color:#00284d}.bg-blue-1000{background-color:#000d19}.bg-brand-blue-800{background-color:#0066de}.bg-brand-blue-800\/20{background-color:#0066de33}.bg-brand-green{background-color:#19c37d}.bg-brand-purple{background-color:#ab68ff}.bg-brand-purple-600{background-color:#715fde}.bg-brand-purple-800{background-color:#5400de}.bg-current{background-color:currentColor}.bg-gray-50{background-color:#f9f9f9}.bg-gray-50\/50{background-color:#f9f9f980}.bg-gray-50\/75{background-color:#f9f9f9bf}.bg-gray-100{background-color:#ececec}.bg-gray-100\/50{background-color:#ececec80}.bg-gray-200{background-color:#e3e3e3}.bg-gray-200\!{background-color:#e3e3e3!important}.bg-gray-200\/70{background-color:#e3e3e3b3}.bg-gray-300{background-color:#cdcdcd}.bg-gray-300\!{background-color:#cdcdcd!important}.bg-gray-300\/60{background-color:#cdcdcd99}.bg-gray-400{background-color:#b4b4b4}.bg-gray-500{background-color:#9b9b9b}.bg-gray-500\/30{background-color:#9b9b9b4d}.bg-gray-600{background-color:#676767}.bg-gray-700{background-color:#424242}.bg-gray-800{background-color:#212121}.bg-gray-900{background-color:#171717}.bg-gray-900\/20{background-color:#17171733}.bg-gray-950{background-color:#0d0d0d}.bg-gray-950\/5{background-color:#0d0d0d0d}.bg-gray-solid-0{background-color:#fff}.bg-gray-solid-50{background-color:#f9f9f9}.bg-gray-solid-75{background-color:#f3f3f3}.bg-gray-solid-100{background-color:#e8e8e8}.bg-gray-solid-200{background-color:#cdcdcd}.bg-gray-solid-300{background-color:#afafaf}.bg-gray-solid-400{background-color:#8f8f8f}.bg-gray-solid-500{background-color:#5d5d5d}.bg-gray-solid-600{background-color:#414141}.bg-gray-solid-700{background-color:#303030}.bg-gray-solid-800{background-color:#212121}.bg-gray-solid-900{background-color:#181818}.bg-gray-solid-1000{background-color:#0d0d0d}.bg-green-25{background-color:#edfaf2}.bg-green-50{background-color:#d9f4e4}.bg-green-75{background-color:#b8ebcc}.bg-green-100{background-color:#8cdfad}.bg-green-100\!{background-color:#8cdfad!important}.bg-green-200{background-color:#66d492}.bg-green-300{background-color:#40c977}.bg-green-400{background-color:#04b84c}.bg-green-400\!{background-color:#04b84c!important}.bg-green-500{background-color:#00a240}.bg-green-500\/10{background-color:#00a2401a}.bg-green-500\/30{background-color:#00a2404d}.bg-green-600{background-color:#008635}.bg-green-600\/5{background-color:#0086350d}.bg-green-600\/10{background-color:#0086351a}.bg-green-600\/30{background-color:#0086354d}.bg-green-700{background-color:#00692a}.bg-green-800{background-color:#004f1f}.bg-green-900{background-color:#003716}.bg-green-1000{background-color:#001207}.bg-orange-25{background-color:#fff5f0}.bg-orange-50{background-color:#ffe7d9}.bg-orange-75{background-color:#ffcfb4}.bg-orange-100{background-color:#ffb790}.bg-orange-200{background-color:#ff9e6c}.bg-orange-300{background-color:#ff8549}.bg-orange-400{background-color:#fb6a22}.bg-orange-400\/5{background-color:#fb6a220d}.bg-orange-500{background-color:#e25507}.bg-orange-600{background-color:#b9480d}.bg-orange-600\/10{background-color:#b9480d1a}.bg-orange-700{background-color:#923b0f}.bg-orange-800{background-color:#6d2e0f}.bg-orange-900{background-color:#4a2206}.bg-orange-1000{background-color:#211107}.bg-pink-25{background-color:#fff4f9}.bg-pink-50{background-color:#ffe8f3}.bg-pink-75{background-color:#ffd4e8}.bg-pink-100{background-color:#ffbada}.bg-pink-200{background-color:#ffa3ce}.bg-pink-300{background-color:#ff8cc1}.bg-pink-400{background-color:#ff66ad}.bg-pink-500{background-color:#e04c91}.bg-pink-600{background-color:#ba437a}.bg-pink-700{background-color:#963c67}.bg-pink-800{background-color:#6e2c4a}.bg-pink-900{background-color:#4d1f34}.bg-pink-1000{background-color:#1a0a11}.bg-purple-25{background-color:#f9f5fe}.bg-purple-50{background-color:#efe5fe}.bg-purple-75{background-color:#e0cefd}.bg-purple-100{background-color:#ceb0fb}.bg-purple-200{background-color:#be95fa}.bg-purple-300{background-color:#ad7bf9}.bg-purple-400{background-color:#924ff7}.bg-purple-500{background-color:#8046d9}.bg-purple-600{background-color:#6b3ab4}.bg-purple-700{background-color:#532d8d}.bg-purple-800{background-color:#3f226a}.bg-purple-900{background-color:#2c184a}.bg-purple-1000{background-color:#100a19}.bg-red-25{background-color:#fff0f0}.bg-red-50{background-color:#ffe1e0}.bg-red-75{background-color:#ffc6c5}.bg-red-100{background-color:#ffa4a2}.bg-red-100\!{background-color:#ffa4a2!important}.bg-red-200{background-color:#ff8583}.bg-red-300{background-color:#ff6764}.bg-red-400{background-color:#fa423e}.bg-red-400\!{background-color:#fa423e!important}.bg-red-500{background-color:#e02e2a}.bg-red-500\/10{background-color:#e02e2a1a}.bg-red-500\/20{background-color:#e02e2a33}.bg-red-500\/30{background-color:#e02e2a4d}.bg-red-600{background-color:#ba2623}.bg-red-700{background-color:#911e1b}.bg-red-800{background-color:#6e1615}.bg-red-900{background-color:#4d100e}.bg-red-1000{background-color:#1f0909}.bg-token-bg-elevated-primary{background-color:var(--bg-elevated-primary)}.bg-token-bg-elevated-secondary{background-color:var(--bg-elevated-secondary)}.bg-token-bg-primary{background-color:var(--bg-primary)}.bg-token-bg-primary\!,.bg-token-bg-primary\/40\!{background-color:var(--bg-primary)!important}@supports (color:color-mix(in lab,red,red)){.bg-token-bg-primary\/40\!{background-color:color-mix(in oklab,var(--bg-primary)40%,transparent)!important}}.bg-token-bg-scrim{background-color:var(--bg-scrim)}.bg-token-bg-scrim\/20\!{background-color:var(--bg-scrim)!important}@supports (color:color-mix(in lab,red,red)){.bg-token-bg-scrim\/20\!{background-color:color-mix(in oklab,var(--bg-scrim)20%,transparent)!important}}.bg-token-bg-secondary,.bg-token-bg-secondary\/20{background-color:var(--bg-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-token-bg-secondary\/20{background-color:color-mix(in oklab,var(--bg-secondary)20%,transparent)}}.bg-token-bg-secondary\/25{background-color:var(--bg-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-token-bg-secondary\/25{background-color:color-mix(in oklab,var(--bg-secondary)25%,transparent)}}.bg-token-bg-secondary\/40{background-color:var(--bg-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-token-bg-secondary\/40{background-color:color-mix(in oklab,var(--bg-secondary)40%,transparent)}}.bg-token-bg-secondary\/50{background-color:var(--bg-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-token-bg-secondary\/50{background-color:color-mix(in oklab,var(--bg-secondary)50%,transparent)}}.bg-token-bg-status-error{background-color:var(--bg-status-error)}.bg-token-bg-status-warning{background-color:var(--bg-status-warning)}.bg-token-bg-tertiary{background-color:var(--bg-tertiary)}.bg-token-border-default{background-color:var(--border-default)}.bg-token-border-heavy{background-color:var(--border-heavy)}.bg-token-border-light{background-color:var(--border-light)}.bg-token-border-medium{background-color:var(--border-medium)}.bg-token-border-status-error{background-color:var(--border-status-error)}.bg-token-border-status-warning{background-color:var(--border-status-warning)}.bg-token-border-xlight{background-color:var(--border-xlight)}.bg-token-composer-blue-bg{background-color:var(--composer-blue-bg)}.bg-token-composer-surface{background-color:var(--composer-surface)}.bg-token-hint-bg{background-color:var(--hint-bg)}.bg-token-icon-accent{background-color:var(--icon-accent)}.bg-token-icon-inverted{background-color:var(--icon-inverted)}.bg-token-icon-inverted-static{background-color:var(--icon-inverted-static)}.bg-token-icon-primary{background-color:var(--icon-primary)}.bg-token-icon-secondary{background-color:var(--icon-secondary)}.bg-token-icon-status-error{background-color:var(--icon-status-error)}.bg-token-icon-status-warning{background-color:var(--icon-status-warning)}.bg-token-icon-tertiary{background-color:var(--icon-tertiary)}.bg-token-interactive-bg-accent-default{background-color:var(--interactive-bg-accent-default)}.bg-token-interactive-bg-accent-hover{background-color:var(--interactive-bg-accent-hover)}.bg-token-interactive-bg-accent-inactive{background-color:var(--interactive-bg-accent-inactive)}.bg-token-interactive-bg-accent-muted-hover{background-color:var(--interactive-bg-accent-muted-hover)}.bg-token-interactive-bg-accent-muted-press{background-color:var(--interactive-bg-accent-muted-press)}.bg-token-interactive-bg-accent-press{background-color:var(--interactive-bg-accent-press)}.bg-token-interactive-bg-danger-primary-default{background-color:var(--interactive-bg-danger-primary-default)}.bg-token-interactive-bg-danger-primary-hover{background-color:var(--interactive-bg-danger-primary-hover)}.bg-token-interactive-bg-danger-primary-inactive{background-color:var(--interactive-bg-danger-primary-inactive)}.bg-token-interactive-bg-danger-primary-press{background-color:var(--interactive-bg-danger-primary-press)}.bg-token-interactive-bg-danger-secondary-default{background-color:var(--interactive-bg-danger-secondary-default)}.bg-token-interactive-bg-danger-secondary-hover{background-color:var(--interactive-bg-danger-secondary-hover)}.bg-token-interactive-bg-danger-secondary-inactive{background-color:var(--interactive-bg-danger-secondary-inactive)}.bg-token-interactive-bg-danger-secondary-press{background-color:var(--interactive-bg-danger-secondary-press)}.bg-token-interactive-bg-primary-default{background-color:var(--interactive-bg-primary-default)}.bg-token-interactive-bg-primary-hover{background-color:var(--interactive-bg-primary-hover)}.bg-token-interactive-bg-primary-inactive{background-color:var(--interactive-bg-primary-inactive)}.bg-token-interactive-bg-primary-press{background-color:var(--interactive-bg-primary-press)}.bg-token-interactive-bg-primary-selected{background-color:var(--interactive-bg-primary-selected)}.bg-token-interactive-bg-secondary-default{background-color:var(--interactive-bg-secondary-default)}.bg-token-interactive-bg-secondary-hover{background-color:var(--interactive-bg-secondary-hover)}.bg-token-interactive-bg-secondary-inactive{background-color:var(--interactive-bg-secondary-inactive)}.bg-token-interactive-bg-secondary-press{background-color:var(--interactive-bg-secondary-press)}.bg-token-interactive-bg-secondary-selected{background-color:var(--interactive-bg-secondary-selected)}.bg-token-interactive-bg-tertiary-default{background-color:var(--interactive-bg-tertiary-default)}.bg-token-interactive-bg-tertiary-hover{background-color:var(--interactive-bg-tertiary-hover)}.bg-token-interactive-bg-tertiary-inactive{background-color:var(--interactive-bg-tertiary-inactive)}.bg-token-interactive-bg-tertiary-press{background-color:var(--interactive-bg-tertiary-press)}.bg-token-interactive-bg-tertiary-selected{background-color:var(--interactive-bg-tertiary-selected)}.bg-token-interactive-border-danger-secondary-default{background-color:var(--interactive-border-danger-secondary-default)}.bg-token-interactive-border-danger-secondary-hover{background-color:var(--interactive-border-danger-secondary-hover)}.bg-token-interactive-border-danger-secondary-inactive{background-color:var(--interactive-border-danger-secondary-inactive)}.bg-token-interactive-border-danger-secondary-press{background-color:var(--interactive-border-danger-secondary-press)}.bg-token-interactive-border-focus{background-color:var(--interactive-border-focus)}.bg-token-interactive-border-secondary-default{background-color:var(--interactive-border-secondary-default)}.bg-token-interactive-border-secondary-hover{background-color:var(--interactive-border-secondary-hover)}.bg-token-interactive-border-secondary-inactive{background-color:var(--interactive-border-secondary-inactive)}.bg-token-interactive-border-secondary-press{background-color:var(--interactive-border-secondary-press)}.bg-token-interactive-border-tertiary-default{background-color:var(--interactive-border-tertiary-default)}.bg-token-interactive-border-tertiary-hover{background-color:var(--interactive-border-tertiary-hover)}.bg-token-interactive-border-tertiary-inactive{background-color:var(--interactive-border-tertiary-inactive)}.bg-token-interactive-border-tertiary-press{background-color:var(--interactive-border-tertiary-press)}.bg-token-interactive-icon-accent-default{background-color:var(--interactive-icon-accent-default)}.bg-token-interactive-icon-accent-hover{background-color:var(--interactive-icon-accent-hover)}.bg-token-interactive-icon-accent-inactive{background-color:var(--interactive-icon-accent-inactive)}.bg-token-interactive-icon-accent-press{background-color:var(--interactive-icon-accent-press)}.bg-token-interactive-icon-accent-selected{background-color:var(--interactive-icon-accent-selected)}.bg-token-interactive-icon-danger-primary-default{background-color:var(--interactive-icon-danger-primary-default)}.bg-token-interactive-icon-danger-primary-hover{background-color:var(--interactive-icon-danger-primary-hover)}.bg-token-interactive-icon-danger-primary-inactive{background-color:var(--interactive-icon-danger-primary-inactive)}.bg-token-interactive-icon-danger-primary-press{background-color:var(--interactive-icon-danger-primary-press)}.bg-token-interactive-icon-danger-secondary-default{background-color:var(--interactive-icon-danger-secondary-default)}.bg-token-interactive-icon-danger-secondary-hover{background-color:var(--interactive-icon-danger-secondary-hover)}.bg-token-interactive-icon-danger-secondary-inactive{background-color:var(--interactive-icon-danger-secondary-inactive)}.bg-token-interactive-icon-danger-secondary-press{background-color:var(--interactive-icon-danger-secondary-press)}.bg-token-interactive-icon-primary-default{background-color:var(--interactive-icon-primary-default)}.bg-token-interactive-icon-primary-hover{background-color:var(--interactive-icon-primary-hover)}.bg-token-interactive-icon-primary-inactive{background-color:var(--interactive-icon-primary-inactive)}.bg-token-interactive-icon-primary-press{background-color:var(--interactive-icon-primary-press)}.bg-token-interactive-icon-primary-selected{background-color:var(--interactive-icon-primary-selected)}.bg-token-interactive-icon-secondary-default{background-color:var(--interactive-icon-secondary-default)}.bg-token-interactive-icon-secondary-hover{background-color:var(--interactive-icon-secondary-hover)}.bg-token-interactive-icon-secondary-inactive{background-color:var(--interactive-icon-secondary-inactive)}.bg-token-interactive-icon-secondary-press{background-color:var(--interactive-icon-secondary-press)}.bg-token-interactive-icon-secondary-selected{background-color:var(--interactive-icon-secondary-selected)}.bg-token-interactive-icon-tertiary-default{background-color:var(--interactive-icon-tertiary-default)}.bg-token-interactive-icon-tertiary-hover{background-color:var(--interactive-icon-tertiary-hover)}.bg-token-interactive-icon-tertiary-inactive{background-color:var(--interactive-icon-tertiary-inactive)}.bg-token-interactive-icon-tertiary-press{background-color:var(--interactive-icon-tertiary-press)}.bg-token-interactive-icon-tertiary-selected{background-color:var(--interactive-icon-tertiary-selected)}.bg-token-interactive-label-accent-default{background-color:var(--interactive-label-accent-default)}.bg-token-interactive-label-accent-hover{background-color:var(--interactive-label-accent-hover)}.bg-token-interactive-label-accent-inactive{background-color:var(--interactive-label-accent-inactive)}.bg-token-interactive-label-accent-press{background-color:var(--interactive-label-accent-press)}.bg-token-interactive-label-accent-selected{background-color:var(--interactive-label-accent-selected)}.bg-token-interactive-label-danger-primary-default{background-color:var(--interactive-label-danger-primary-default)}.bg-token-interactive-label-danger-primary-hover{background-color:var(--interactive-label-danger-primary-hover)}.bg-token-interactive-label-danger-primary-inactive{background-color:var(--interactive-label-danger-primary-inactive)}.bg-token-interactive-label-danger-primary-press{background-color:var(--interactive-label-danger-primary-press)}.bg-token-interactive-label-danger-secondary-default{background-color:var(--interactive-label-danger-secondary-default)}.bg-token-interactive-label-danger-secondary-hover{background-color:var(--interactive-label-danger-secondary-hover)}.bg-token-interactive-label-danger-secondary-inactive{background-color:var(--interactive-label-danger-secondary-inactive)}.bg-token-interactive-label-danger-secondary-press{background-color:var(--interactive-label-danger-secondary-press)}.bg-token-interactive-label-primary-default{background-color:var(--interactive-label-primary-default)}.bg-token-interactive-label-primary-hover{background-color:var(--interactive-label-primary-hover)}.bg-token-interactive-label-primary-inactive{background-color:var(--interactive-label-primary-inactive)}.bg-token-interactive-label-primary-press{background-color:var(--interactive-label-primary-press)}.bg-token-interactive-label-primary-selected{background-color:var(--interactive-label-primary-selected)}.bg-token-interactive-label-secondary-default{background-color:var(--interactive-label-secondary-default)}.bg-token-interactive-label-secondary-hover{background-color:var(--interactive-label-secondary-hover)}.bg-token-interactive-label-secondary-inactive{background-color:var(--interactive-label-secondary-inactive)}.bg-token-interactive-label-secondary-press{background-color:var(--interactive-label-secondary-press)}.bg-token-interactive-label-secondary-selected{background-color:var(--interactive-label-secondary-selected)}.bg-token-interactive-label-tertiary-default{background-color:var(--interactive-label-tertiary-default)}.bg-token-interactive-label-tertiary-hover{background-color:var(--interactive-label-tertiary-hover)}.bg-token-interactive-label-tertiary-inactive{background-color:var(--interactive-label-tertiary-inactive)}.bg-token-interactive-label-tertiary-press{background-color:var(--interactive-label-tertiary-press)}.bg-token-interactive-label-tertiary-selected{background-color:var(--interactive-label-tertiary-selected)}.bg-token-main-surface-primary{background-color:var(--main-surface-primary)}.bg-token-main-surface-primary\!{background-color:var(--main-surface-primary)!important}.bg-token-main-surface-primary-inverse{background-color:var(--main-surface-primary-inverse)}.bg-token-main-surface-primary\/10{background-color:var(--main-surface-primary)}@supports (color:color-mix(in lab,red,red)){.bg-token-main-surface-primary\/10{background-color:color-mix(in oklab,var(--main-surface-primary)10%,transparent)}}.bg-token-main-surface-secondary{background-color:var(--main-surface-secondary)}.bg-token-main-surface-secondary\!{background-color:var(--main-surface-secondary)!important}.bg-token-main-surface-secondary-selected{background-color:var(--main-surface-secondary-selected)}.bg-token-main-surface-tertiary{background-color:var(--main-surface-tertiary)}.bg-token-main-surface-tertiary\!{background-color:var(--main-surface-tertiary)!important}.bg-token-message-surface{background-color:var(--message-surface)}.bg-token-sidebar-surface{background-color:var(--sidebar-surface)}.bg-token-sidebar-surface-primary{background-color:var(--sidebar-surface-primary)}.bg-token-sidebar-surface-secondary{background-color:var(--sidebar-surface-secondary)}.bg-token-sidebar-surface-tertiary{background-color:var(--sidebar-surface-tertiary)}.bg-token-surface-error,.bg-token-surface-error\/5{background-color:rgb(var(--surface-error)/1)}@supports (color:color-mix(in lab,red,red)){.bg-token-surface-error\/5{background-color:color-mix(in oklab,rgb(var(--surface-error)/1) 5%,transparent)}}.bg-token-text-accent{background-color:var(--text-accent)}.bg-token-text-inverted{background-color:var(--text-inverted)}.bg-token-text-inverted-static{background-color:var(--text-inverted-static)}.bg-token-text-primary{background-color:var(--text-primary)}.bg-token-text-primary\!{background-color:var(--text-primary)!important}.bg-token-text-quaternary{background-color:var(--text-quaternary)}.bg-token-text-secondary{background-color:var(--text-secondary)}.bg-token-text-status-error,.bg-token-text-status-error\/15{background-color:var(--text-status-error)}@supports (color:color-mix(in lab,red,red)){.bg-token-text-status-error\/15{background-color:color-mix(in oklab,var(--text-status-error)15%,transparent)}}.bg-token-text-status-warning,.bg-token-text-status-warning\/15{background-color:var(--text-status-warning)}@supports (color:color-mix(in lab,red,red)){.bg-token-text-status-warning\/15{background-color:color-mix(in oklab,var(--text-status-warning)15%,transparent)}}.bg-token-text-tertiary{background-color:var(--text-tertiary)}.bg-token-utility-scrollbar{background-color:var(--utility-scrollbar)}.bg-transparent{background-color:#0000}.bg-transparent\!{background-color:#0000!important}.bg-white{background-color:#fff}.bg-white\!{background-color:#fff!important}.bg-white\/10{background-color:#ffffff1a}.bg-white\/20{background-color:#fff3}.bg-white\/25{background-color:#ffffff40}.bg-white\/30{background-color:#ffffff4d}.bg-white\/40{background-color:#fff6}.bg-white\/50{background-color:#ffffff80}.bg-white\/60{background-color:#fff9}.bg-white\/70{background-color:#ffffffb3}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-white\/95{background-color:#fffffff2}.bg-yellow-25{background-color:#fffbed}.bg-yellow-50{background-color:#fff6d9}.bg-yellow-75{background-color:#ffeeb8}.bg-yellow-100{background-color:#ffe48c}.bg-yellow-200{background-color:#ffdb66}.bg-yellow-300{background-color:#ffd240}.bg-yellow-400{background-color:#ffc300}.bg-yellow-400\/40{background-color:#ffc30066}.bg-yellow-400\/60{background-color:#ffc30099}.bg-yellow-500{background-color:#e0ac00}.bg-yellow-600{background-color:#ba8e00}.bg-yellow-700{background-color:#916f00}.bg-yellow-800{background-color:#6e5400}.bg-yellow-900{background-color:#4d3b00}.bg-yellow-1000{background-color:#1a1400}.bg-linear-to-b{--tw-gradient-position:to bottom;background-image:linear-gradient(var(--tw-gradient-stops))}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-br{--tw-gradient-position:to bottom right;background-image:linear-gradient(var(--tw-gradient-stops))}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-br{--tw-gradient-position:to bottom right in oklab}}.bg-linear-to-l{--tw-gradient-position:to left;background-image:linear-gradient(var(--tw-gradient-stops))}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-l{--tw-gradient-position:to left in oklab}}.bg-linear-to-r{--tw-gradient-position:to right;background-image:linear-gradient(var(--tw-gradient-stops))}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-t{--tw-gradient-position:to top;background-image:linear-gradient(var(--tw-gradient-stops))}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-t{--tw-gradient-position:to top in oklab}}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab}.bg-gradient-to-b,.bg-gradient-to-l{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-l{--tw-gradient-position:to left in oklab}.bg-gradient-to-r{--tw-gradient-position:to right in oklab}.bg-gradient-to-r,.bg-gradient-to-t{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab}.bg-radial{--tw-gradient-position:in oklab;background-image:radial-gradient(var(--tw-gradient-stops))}.bg-none{background-image:none}.bg-vert-light-gradient{background-image:linear-gradient(#fff0 13.94%,#fff 54.73%)}.from-\(--bg-primary\){--tw-gradient-from:var(--bg-primary);--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))}.from-\[var\(--main-surface-background\)\]{--tw-gradient-from:var(--main-surface-background);--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))}.from-black\/10{--tw-gradient-from:oklab(0% none none/.1);--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))}.from-black\/35{--tw-gradient-from:oklab(0% none none/.35);--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))}.from-black\/90{--tw-gradient-from:oklab(0% none none/.9);--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))}.from-gray-200{--tw-gradient-from:#e3e3e3;--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))}.from-gray-950\/50{--tw-gradient-from:oklab(15.9066% 0 0/.5);--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))}.from-purple-400{--tw-gradient-from:#924ff7;--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))}.from-token-bg-primary{--tw-gradient-from:var(--bg-primary);--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))}.from-token-main-surface-primary{--tw-gradient-from:var(--main-surface-primary);--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))}.from-token-main-surface-secondary{--tw-gradient-from:var(--main-surface-secondary);--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))}.from-token-text-tertiary{--tw-gradient-from:var(--text-tertiary);--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))}.from-transparent{--tw-gradient-from:transparent;--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))}.from-white{--tw-gradient-from:#fff;--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))}.from-white\/0{--tw-gradient-from:oklab(0% 0 0/0);--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))}.from-10\%{--tw-gradient-from-position:10%}.from-20\%{--tw-gradient-from-position:20%}.from-50\%{--tw-gradient-from-position:50%}.from-60\%{--tw-gradient-from-position:60%}.via-\[rgba\(255\,255\,255\,0\.8\)\]{--tw-gradient-via:#fffc;--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/20{--tw-gradient-via:oklab(0% none none/.2);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/30{--tw-gradient-via:oklab(0% none none/.3);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/60{--tw-gradient-via:oklab(0% none none/.6);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-gray-300{--tw-gradient-via:#cdcdcd;--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-pink-500{--tw-gradient-via:#e04c91;--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-token-main-surface-primary{--tw-gradient-via:var(--main-surface-primary);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-transparent{--tw-gradient-via:transparent;--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/10{--tw-gradient-via:oklab(100% 0 5.96046e-8/.1);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/90{--tw-gradient-via:oklab(100% 0 5.96046e-8/.9);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-30\%{--tw-gradient-via-position:30%}.to-\[var\(--bg-primary\)\]{--tw-gradient-to:var(--bg-primary);--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))}.to-black\/30{--tw-gradient-to:oklab(0% none none/.3);--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))}.to-black\/40{--tw-gradient-to:oklab(0% none none/.4);--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))}.to-black\/80{--tw-gradient-to:oklab(0% none none/.8);--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))}.to-gray-200{--tw-gradient-to:#e3e3e3;--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))}.to-gray-500\/0{--tw-gradient-to:oklab(0% 0 0/0);--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))}.to-red-500{--tw-gradient-to:#e02e2a;--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))}.to-transparent{--tw-gradient-to:transparent;--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))}.to-white\/20{--tw-gradient-to:oklab(100% 0 5.96046e-8/.2);--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))}.to-100\%{--tw-gradient-to-position:100%}.\[mask-image\:linear-gradient\(to_right\,black_33\%\,transparent_66\%\)\]{-webkit-mask-image:linear-gradient(90deg,#000 33%,#0000 66%);mask-image:linear-gradient(90deg,#000 33%,#0000 66%)}.bg-auto{background-size:auto}.bg-contain{background-size:contain}.bg-cover{background-size:cover}.bg-clip-border{background-clip:border-box}.bg-clip-padding{background-clip:padding-box}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat{background-repeat:repeat}.\[mask-size\:300\%_100\%\]{-webkit-mask-size:300% 100%;mask-size:300% 100%}.\[mask-position\:100\%_0\%\]{-webkit-mask-position:100% 0;mask-position:100% 0}.fill-current{fill:currentColor}.fill-token-main-surface-primary{fill:var(--main-surface-primary)}.fill-transparent{fill:#0000}.fill-yellow-500{fill:#e0ac00}.stroke-\[rgba\(0\,0\,0\,0\)\]{stroke:#0000}.stroke-\[rgba\(0\,0\,0\,0\.1\)\]{stroke:#0000001a}.stroke-\[rgba\(0\,0\,0\,0\.32\)\]{stroke:#00000052}.stroke-black{stroke:#000}.stroke-black\/10{stroke:oklab(0 none none/.1)}.stroke-brand-purple\/25{stroke:#ab68ff40}.stroke-gray-400{stroke:#b4b4b4}.stroke-token-bg-elevated-primary{stroke:var(--bg-elevated-primary)}.stroke-token-main-surface-tertiary{stroke:var(--main-surface-tertiary)}.stroke-token-text-primary\/20{stroke:var(--text-primary)}@supports (color:color-mix(in lab,red,red)){.stroke-token-text-primary\/20{stroke:color-mix(in oklab,var(--text-primary)20%,transparent)}}.stroke-white{stroke:#fff}.stroke-white\/20{stroke:#fff3}.stroke-0{stroke-width:0}.stroke-2{stroke-width:2px}.stroke-3{stroke-width:3px}.stroke-4{stroke-width:4px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-fill{object-fit:fill}.object-scale-down{object-fit:scale-down}.object-bottom{object-position:bottom}.object-center{object-position:center}.object-top{object-position:top}.\!p-0{padding:calc(var(--spacing)*0)!important}.\!p-2{padding:calc(var(--spacing)*2)!important}.p-0{padding:calc(var(--spacing)*0)}.p-0\!{padding:calc(var(--spacing)*0)!important}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-0\.25{padding:calc(var(--spacing)*.25)}.p-1{padding:calc(var(--spacing)*1)}.p-1\!{padding:calc(var(--spacing)*1)!important}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-3\!{padding:calc(var(--spacing)*3)!important}.p-3\.5{padding:calc(var(--spacing)*3.5)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-9{padding:calc(var(--spacing)*9)}.p-10{padding:calc(var(--spacing)*10)}.p-12{padding:calc(var(--spacing)*12)}.p-14{padding:calc(var(--spacing)*14)}.p-16{padding:calc(var(--spacing)*16)}.p-24{padding:calc(var(--spacing)*24)}.p-\[1px\]{padding:1px}.p-\[2px\]{padding:2px}.p-\[3px\]{padding:3px}.p-\[4px\]{padding:4px}.p-\[5px\]{padding:5px}.p-\[8rem\]{padding:8rem}.p-\[20px_20dvw\]{padding:20px 20dvw}.p-\[20vw\]{padding:20vw}.p-\[22px\]{padding:22px}.p-snc-1{padding:var(--snc-1)}.px-\(--thread-content-margin\){padding-inline:var(--thread-content-margin)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-0\!{padding-inline:calc(var(--spacing)*0)!important}.px-0\.5{padding-inline:calc(var(--spacing)*.5)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\!{padding-inline:calc(var(--spacing)*2)!important}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-7{padding-inline:calc(var(--spacing)*7)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-10{padding-inline:calc(var(--spacing)*10)}.px-12{padding-inline:calc(var(--spacing)*12)}.px-16{padding-inline:calc(var(--spacing)*16)}.px-20{padding-inline:calc(var(--spacing)*20)}.px-25{padding-inline:calc(var(--spacing)*25)}.px-\[1rem\]{padding-inline:1rem}.px-\[2px\]{padding-inline:2px}.px-\[4px\]{padding-inline:4px}.px-\[14px\]{padding-inline:14px}.px-\[16px\]{padding-inline:16px}.px-\[22px\]{padding-inline:22px}.px-\[var\(--mini-thread-content-inset\)\]{padding-inline:var(--mini-thread-content-inset)}.px-\[var\(--padding\)\]{padding-inline:var(--padding)}.px-px{padding-inline:1px}.px-snc-1{padding-inline:var(--snc-1)}.px-snc-2{padding-inline:var(--snc-2)}.px-snc-results-padding{padding-inline:var(--snc-results-padding)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\!{padding-block:calc(var(--spacing)*0)!important}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\!{padding-block:calc(var(--spacing)*2)!important}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-9{padding-block:calc(var(--spacing)*9)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.py-15{padding-block:calc(var(--spacing)*15)}.py-16{padding-block:calc(var(--spacing)*16)}.py-20{padding-block:calc(var(--spacing)*20)}.py-32{padding-block:calc(var(--spacing)*32)}.py-48{padding-block:calc(var(--spacing)*48)}.py-\[0\.2rem\]{padding-block:.2rem}.py-\[0\.108em\]{padding-block:.108em}.py-\[1px\]{padding-block:1px}.py-\[1rem\]{padding-block:1rem}.py-\[5px\]{padding-block:5px}.py-\[7px\]{padding-block:7px}.py-\[12px\]{padding-block:12px}.py-\[15px\]{padding-block:15px}.py-\[var\(--mini-thread-turn-vertical-spacing\)\]{padding-block:var(--mini-thread-turn-vertical-spacing)}.py-snc-1{padding-block:var(--snc-1)}.ps-0{padding-inline-start:calc(var(--spacing)*0)}.ps-0\!{padding-inline-start:calc(var(--spacing)*0)!important}.ps-0\.5{padding-inline-start:calc(var(--spacing)*.5)}.ps-1{padding-inline-start:calc(var(--spacing)*1)}.ps-1\.5{padding-inline-start:calc(var(--spacing)*1.5)}.ps-2{padding-inline-start:calc(var(--spacing)*2)}.ps-2\.5{padding-inline-start:calc(var(--spacing)*2.5)}.ps-3{padding-inline-start:calc(var(--spacing)*3)}.ps-4{padding-inline-start:calc(var(--spacing)*4)}.ps-4\!{padding-inline-start:calc(var(--spacing)*4)!important}.ps-5{padding-inline-start:calc(var(--spacing)*5)}.ps-6{padding-inline-start:calc(var(--spacing)*6)}.ps-7{padding-inline-start:calc(var(--spacing)*7)}.ps-8{padding-inline-start:calc(var(--spacing)*8)}.ps-9{padding-inline-start:calc(var(--spacing)*9)}.ps-10{padding-inline-start:calc(var(--spacing)*10)}.ps-12{padding-inline-start:calc(var(--spacing)*12)}.ps-\[1px\]{padding-inline-start:1px}.ps-\[3\.25rem\]{padding-inline-start:3.25rem}.ps-\[14px\]{padding-inline-start:14px}.ps-\[20px\]{padding-inline-start:20px}.ps-\[22px\]{padding-inline-start:22px}.pe-0{padding-inline-end:calc(var(--spacing)*0)}.pe-0\.5{padding-inline-end:calc(var(--spacing)*.5)}.pe-1{padding-inline-end:calc(var(--spacing)*1)}.pe-1\!{padding-inline-end:calc(var(--spacing)*1)!important}.pe-1\.5{padding-inline-end:calc(var(--spacing)*1.5)}.pe-2{padding-inline-end:calc(var(--spacing)*2)}.pe-2\.5{padding-inline-end:calc(var(--spacing)*2.5)}.pe-2\.5\!{padding-inline-end:calc(var(--spacing)*2.5)!important}.pe-3{padding-inline-end:calc(var(--spacing)*3)}.pe-3\!{padding-inline-end:calc(var(--spacing)*3)!important}.pe-3\.5{padding-inline-end:calc(var(--spacing)*3.5)}.pe-4{padding-inline-end:calc(var(--spacing)*4)}.pe-4\.5{padding-inline-end:calc(var(--spacing)*4.5)}.pe-5{padding-inline-end:calc(var(--spacing)*5)}.pe-6{padding-inline-end:calc(var(--spacing)*6)}.pe-8{padding-inline-end:calc(var(--spacing)*8)}.pe-9{padding-inline-end:calc(var(--spacing)*9)}.pe-10{padding-inline-end:calc(var(--spacing)*10)}.pe-12{padding-inline-end:calc(var(--spacing)*12)}.pe-14{padding-inline-end:calc(var(--spacing)*14)}.pe-15{padding-inline-end:calc(var(--spacing)*15)}.pe-36{padding-inline-end:calc(var(--spacing)*36)}.\!pt-0{padding-top:calc(var(--spacing)*0)!important}.pt-\(--header-height\){padding-top:var(--header-height)}.pt-\(--sidebar-section-first-margin-top\){padding-top:var(--sidebar-section-first-margin-top)}.pt-\(--sidebar-section-margin-top\){padding-top:var(--sidebar-section-margin-top)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-0\.25{padding-top:calc(var(--spacing)*.25)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-2\.5{padding-top:calc(var(--spacing)*2.5)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-3\!{padding-top:calc(var(--spacing)*3)!important}.pt-3\.5{padding-top:calc(var(--spacing)*3.5)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-7{padding-top:calc(var(--spacing)*7)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-12{padding-top:calc(var(--spacing)*12)}.pt-15{padding-top:calc(var(--spacing)*15)}.pt-16{padding-top:calc(var(--spacing)*16)}.pt-20{padding-top:calc(var(--spacing)*20)}.pt-\[0\.125rem\]{padding-top:.125rem}.pt-\[2px\]{padding-top:2px}.pt-\[3px\]{padding-top:3px}.pt-\[4\.5px\]{padding-top:4.5px}.pt-\[4px\]{padding-top:4px}.pt-\[13px\]{padding-top:13px}.pt-\[18px\]{padding-top:18px}.pt-\[71px\]{padding-top:71px}.pt-\[var\(--mini-tab-height\)\]{padding-top:var(--mini-tab-height)}.pt-px{padding-top:1px}[dir=ltr] .pr-4{padding-right:calc(var(--spacing)*4)}[dir=rtl] .pr-4{padding-left:calc(var(--spacing)*4)}.\!pb-0{padding-bottom:calc(var(--spacing)*0)!important}.pb-0{padding-bottom:calc(var(--spacing)*0)}.pb-0\.5{padding-bottom:calc(var(--spacing)*.5)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-1\.5{padding-bottom:calc(var(--spacing)*1.5)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-2\.5{padding-bottom:calc(var(--spacing)*2.5)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pb-9{padding-bottom:calc(var(--spacing)*9)}.pb-10{padding-bottom:calc(var(--spacing)*10)}.pb-12{padding-bottom:calc(var(--spacing)*12)}.pb-15{padding-bottom:calc(var(--spacing)*15)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pb-24{padding-bottom:calc(var(--spacing)*24)}.pb-25{padding-bottom:calc(var(--spacing)*25)}.pb-32{padding-bottom:calc(var(--spacing)*32)}.pb-72{padding-bottom:calc(var(--spacing)*72)}.pb-\[1px\]{padding-bottom:1px}.pb-\[5svh\]{padding-bottom:5svh}.pb-\[10px\]{padding-bottom:10px}.pb-\[22px\]{padding-bottom:22px}.pb-\[calc\(var\(--sidebar-section-margin-top\)-var\(--sidebar-section-first-margin-top\)\)\]{padding-bottom:calc(var(--sidebar-section-margin-top) - var(--sidebar-section-first-margin-top))}.pb-snc-1{padding-bottom:var(--snc-1)}.pb-snc-2{padding-bottom:var(--snc-2)}[dir=ltr] .pl-2{padding-left:calc(var(--spacing)*2)}[dir=rtl] .pl-2{padding-right:calc(var(--spacing)*2)}[dir=ltr] .pl-4{padding-left:calc(var(--spacing)*4)}[dir=rtl] .pl-4{padding-right:calc(var(--spacing)*4)}.text-center{text-align:center}.text-end{text-align:end}[dir=ltr] .text-left{text-align:left}[dir=rtl] .text-left,[dir=ltr] .text-right{text-align:right}[dir=rtl] .text-right{text-align:left}.text-start{text-align:start}.indent-\[0\.1em\]{text-indent:.1em}.align-baseline{vertical-align:baseline}.align-bottom{vertical-align:bottom}.align-middle{vertical-align:middle}.align-middle\!{vertical-align:middle!important}.align-top{vertical-align:top}.font-\[inherit\]{font-family:inherit}.font-circle{font-family:Circle,system-ui,sans-serif}.font-mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.font-oai{font-family:OpenAI Sans,sans-serif}.font-sans{font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,Helvetica,Apple Color Emoji,Arial,sans-serif,Segoe UI Emoji,Segoe UI Symbol}.text-body-small-regular{font-size:var(--text-body-small-regular);font-weight:var(--tw-font-weight,var(--text-body-small-regular--font-weight));letter-spacing:var(--tw-tracking,var(--text-body-small-regular--letter-spacing));line-height:var(--tw-leading,var(--text-body-small-regular--line-height))}.text-caption-regular{font-size:var(--text-caption-regular);font-weight:var(--tw-font-weight,var(--text-caption-regular--font-weight));letter-spacing:var(--tw-tracking,var(--text-caption-regular--letter-spacing));line-height:var(--tw-leading,var(--text-caption-regular--line-height))}.text-heading-2{font-size:var(--text-heading-2);font-weight:var(--tw-font-weight,var(--text-heading-2--font-weight));letter-spacing:var(--tw-tracking,var(--text-heading-2--letter-spacing));line-height:var(--tw-leading,var(--text-heading-2--line-height))}.text-heading-3{font-size:var(--text-heading-3);font-weight:var(--tw-font-weight,var(--text-heading-3--font-weight));letter-spacing:var(--tw-tracking,var(--text-heading-3--letter-spacing));line-height:var(--tw-leading,var(--text-heading-3--line-height))}.text-monospace{font-size:var(--text-monospace);font-weight:var(--tw-font-weight,var(--text-monospace--font-weight));letter-spacing:var(--tw-tracking,var(--text-monospace--letter-spacing));line-height:var(--tw-leading,var(--text-monospace--line-height))}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-base\!{font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-panel-title{font-size:17px;line-height:var(--tw-leading,26px)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.5em\]{font-size:.5em}.text-\[0\.5rem\]{font-size:.5rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.70rem\]{font-size:.7rem}.text-\[0\.93rem\]{font-size:.93rem}.text-\[0\.5625em\]{font-size:.5625em}.text-\[5px\]{font-size:5px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[28px\]{font-size:28px}.text-\[32px\]{font-size:32px}.text-\[34px\]{font-size:34px}.text-\[40px\]{font-size:40px}.text-\[42px\]{font-size:42px}.leading-0{--tw-leading:calc(var(--spacing)*0);line-height:calc(var(--spacing)*0)}.leading-3{--tw-leading:calc(var(--spacing)*3);line-height:calc(var(--spacing)*3)}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-7{--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.leading-9{--tw-leading:calc(var(--spacing)*9);line-height:calc(var(--spacing)*9)}.leading-\[0\]{--tw-leading:0;line-height:0}.leading-\[1\.2\]{--tw-leading:1.2;line-height:1.2}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[13px\]{--tw-leading:13px;line-height:13px}.leading-\[15px\]{--tw-leading:15px;line-height:15px}.leading-\[17px\]{--tw-leading:17px;line-height:17px}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-\[34px\]{--tw-leading:34px;line-height:34px}.leading-\[42px\]{--tw-leading:42px;line-height:42px}.leading-dense{--tw-leading:1.16667;line-height:1.16667}.leading-none{--tw-leading:1;line-height:1}.leading-none\!{--tw-leading:1!important;line-height:1!important}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-\[400\]{--tw-font-weight:400;font-weight:400}.font-\[550\]{--tw-font-weight:550;font-weight:550}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-bold\!{--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-normal\!{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-semibold\!{--tw-font-weight:var(--font-weight-semibold)!important;font-weight:var(--font-weight-semibold)!important}.\[font-weight\:700\]{font-weight:700}.tracking-\[-0\.18px\]{--tw-tracking:-.18px;letter-spacing:-.18px}.tracking-\[-0\.23px\]{--tw-tracking:-.23px;letter-spacing:-.23px}.tracking-\[-0\.197499px\]{--tw-tracking:-.197499px;letter-spacing:-.197499px}.tracking-\[0\.38px\]{--tw-tracking:.38px;letter-spacing:.38px}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.\[text-wrap\:pretty\]{text-wrap:pretty}.text-balance{text-wrap:balance}.text-nowrap{text-wrap:nowrap}.text-pretty{text-wrap:pretty}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.break-all{word-break:break-all}.overflow-ellipsis{text-overflow:ellipsis}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-nowrap\!{white-space:nowrap!important}.whitespace-pre{white-space:pre}.whitespace-pre\!{white-space:pre!important}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.whitespace-pre-wrap\!{white-space:pre-wrap!important}.text-\[\#5D5BD0\]{color:#5d5bd0}.text-\[\#5D5D5D\]{color:#5d5d5d}.text-\[\#007AFF\]{color:#007aff}.text-\[\#008C2E\]{color:#008c2e}.text-\[\#8E3CF3\]{color:#8e3cf3}.text-\[\#8F8F8F\]{color:#8f8f8f}.text-\[\#10A37F\]{color:#10a37f}.text-\[\#30a633\]{color:#30a633}.text-\[\#0088FF\]{color:#08f}.text-\[\#0285ff\]{color:#0285ff}.text-\[\#2964aa\]\!{color:#2964aa!important}.text-\[\#24622B\]{color:#24622b}.text-\[\#59636E\]{color:#59636e}.text-\[\#AF52DE\]{color:#af52de}.text-\[\#D6303D\]{color:#d6303d}.text-\[\#DC2626\]{color:#dc2626}.text-\[\#E25507\]{color:#e25507}.text-\[\#FE7600\]{color:#fe7600}.text-\[\#df1b41\]{color:#df1b41}.text-\[\#f14d42\]{color:#f14d42}.text-\[hsla\(0\,0\%\,10\%\,0\.4\)\]{color:#1a1a1a66}.text-\[rgb\(18\,100\,163\)\]{color:#1264a3}.text-\[rgba\(0\,0\,0\,0\.6\)\]{color:#0009}.text-\[rgba\(255\,255\,255\,0\.6\)\]{color:#fff9}.text-\[rgba\(255\,255\,255\,1\)\]{color:#fff}.text-\[var\(--main-surface-primary-inverse\)\]{color:var(--main-surface-primary-inverse)}.text-\[var\(--mini-link-color\)\]{color:var(--mini-link-color)}.text-\[var\(--sidebar-surface-secondary\)\]{color:var(--sidebar-surface-secondary)}.text-black{color:#000}.text-black\!{color:#000!important}.text-black\/70{color:oklab(0 none none/.7)}.text-blue-100{color:#99ceff}.text-blue-300{color:#339cff}.text-blue-400{color:#0285ff}.text-blue-400\!{color:#0285ff!important}.text-blue-500{color:#0169cc}.text-blue-600{color:#004f99}.text-blue-700{color:#003f7a}.text-blue-800{color:#013566}.text-blue-900{color:#00284d}.text-brand-blue-800{color:#0066de}.text-brand-green-800{color:#05a746}.text-brand-purple{color:#ab68ff}.text-current{color:currentColor}.text-danger{color:#e02e2a}.text-gray-100{color:#ececec}.text-gray-200{color:#e3e3e3}.text-gray-300{color:#cdcdcd}.text-gray-400{color:#b4b4b4}.text-gray-500{color:#9b9b9b}.text-gray-600{color:#676767}.text-gray-700{color:#424242}.text-gray-800{color:#212121}.text-gray-900{color:#171717}.text-gray-950{color:#0d0d0d}.text-green-500{color:#00a240}.text-green-600{color:#008635}.text-green-700{color:#00692a}.text-green-800{color:#004f1f}.text-green-900{color:#003716}.text-inherit{color:inherit}.text-orange-300{color:#ff8549}.text-orange-400{color:#fb6a22}.text-orange-500{color:#e25507}.text-orange-600{color:#b9480d}.text-orange-800{color:#6d2e0f}.text-orange-900{color:#4a2206}.text-pink-700{color:#963c67}.text-pink-800{color:#6e2c4a}.text-purple-600{color:#6b3ab4}.text-red-400{color:#fa423e}.text-red-500{color:#e02e2a}.text-red-600{color:#ba2623}.text-red-700{color:#911e1b}.text-red-800{color:#6e1615}.text-red-900{color:#4d100e}.text-token-bg-primary{color:var(--bg-primary)}.text-token-bg-tertiary{color:var(--bg-tertiary)}.text-token-border-default{color:var(--border-default)}.text-token-hint-text{color:var(--hint-text)}.text-token-icon-accent{color:var(--icon-accent)}.text-token-icon-primary{color:var(--icon-primary)}.text-token-icon-secondary{color:var(--icon-secondary)}.text-token-icon-tertiary{color:var(--icon-tertiary)}.text-token-interactive-label-accent-default{color:var(--interactive-label-accent-default)}.text-token-interactive-label-danger-secondary-default{color:var(--interactive-label-danger-secondary-default)}.text-token-interactive-label-primary-default{color:var(--interactive-label-primary-default)}.text-token-link{color:var(--link)}.text-token-main-surface-primary{color:var(--main-surface-primary)}.text-token-main-surface-primary\!{color:var(--main-surface-primary)!important}.text-token-main-surface-primary-inverse{color:var(--main-surface-primary-inverse)}.text-token-main-surface-secondary{color:var(--main-surface-secondary)}.text-token-main-surface-tertiary{color:var(--main-surface-tertiary)}.text-token-sidebar-surface{color:var(--sidebar-surface)}.text-token-text-accent{color:var(--text-accent)}.text-token-text-error{color:var(--text-error)}.text-token-text-primary{color:var(--text-primary)}.text-token-text-primary\!{color:var(--text-primary)!important}.text-token-text-quaternary{color:var(--text-quaternary)}.text-token-text-secondary{color:var(--text-secondary)}.text-token-text-secondary\!{color:var(--text-secondary)!important}.text-token-text-status-error{color:var(--text-status-error)}.text-token-text-status-warning{color:var(--text-status-warning)}.text-token-text-tertiary{color:var(--text-tertiary)}.text-transparent{color:#0000}.text-white{color:#fff}.text-white\!{color:#fff!important}.text-white\/25{color:#ffffff40}.text-white\/85{color:#ffffffd9}.text-yellow-500{color:#e0ac00}.text-yellow-600{color:#ba8e00}.text-yellow-700{color:#916f00}.text-yellow-800{color:#6e5400}.text-yellow-900{color:#4d3b00}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal}.ordinal,.tabular-nums{font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.no-underline\!{text-decoration-line:none!important}.underline{text-decoration-line:underline}.decoration-token-link{-webkit-text-decoration-color:var(--link);text-decoration-color:var(--link)}.decoration-token-text-primary{-webkit-text-decoration-color:var(--text-primary);text-decoration-color:var(--text-primary)}.decoration-token-text-secondary{-webkit-text-decoration-color:var(--text-secondary);text-decoration-color:var(--text-secondary)}.decoration-dashed{text-decoration-style:dashed}.decoration-dotted{text-decoration-style:dotted}.decoration-1{text-decoration-thickness:1px}.decoration-\[4\%\]{text-decoration-thickness:.04em}.decoration-\[12\%\]{text-decoration-thickness:.12em}.underline-offset-1{text-underline-offset:1px}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.underline-offset-\[0\.25rem\]{text-underline-offset:.25rem}.underline-offset-\[16\%\]{text-underline-offset:16%}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.placeholder-gray-500::placeholder{color:#9b9b9b}.placeholder-token-text-tertiary::placeholder{color:var(--text-tertiary)}.opacity-0{opacity:0}.opacity-15{opacity:.15}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-85{opacity:.85}.opacity-90{opacity:.9}.opacity-100{opacity:1}.opacity-100\!{opacity:1!important}.opacity-\[0\.01\]{opacity:.01}.mix-blend-darken{mix-blend-mode:darken}.mix-blend-soft-light{mix-blend-mode:soft-light}.shadow-long{--tw-shadow:0px 8px 12px 0px var(--tw-shadow-color,var(--shadow-color-1,#00000014)),0px 0px 1px 0px var(--tw-shadow-color,var(--shadow-color-2,#0000009e));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-long:is(.dark *){--tw-shadow:0px 8px 16px 0px var(--tw-shadow-color,#00000052),0px 0px 1px 0px var(--tw-shadow-color,#0000009e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-short{--tw-shadow:0px 4px 4px 0px var(--tw-shadow-color,var(--shadow-color-1,#0000000a)),0px 0px 1px 0px var(--tw-shadow-color,var(--shadow-color-2,#0000009e));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-short:is(.dark *){--tw-shadow:0px 4px 12px 0px var(--tw-shadow-color,var(--shadow-color-1,#0000001a)),inset 0px 0px 1px 0px var(--tw-shadow-color,var(--shadow-color-2,#fff3));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-2xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)}.shadow-\[-4px_0_0_0_var\(--bg-primary\)\]{--tw-shadow:-4px 0 0 0 var(--tw-shadow-color,var(--bg-primary))}.shadow-\[-4px_0_0_0_var\(--bg-primary\)\],.shadow-\[0_-4px_32px_rgba\(0\,0\,0\,0\.08\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-4px_32px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 -4px 32px var(--tw-shadow-color,#00000014)}.shadow-\[0_0_50px\]{--tw-shadow:0 0 50px var(--tw-shadow-color,currentcolor)}.shadow-\[0_0_50px\],.shadow-\[0_0_64px_0_rgba\(0\,0\,0\,0\.07\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_64px_0_rgba\(0\,0\,0\,0\.07\)\]{--tw-shadow:0 0 64px 0 var(--tw-shadow-color,#00000012)}.shadow-\[0_1px_0\]{--tw-shadow:0 1px 0 var(--tw-shadow-color,currentcolor)}.shadow-\[0_1px_0\],.shadow-\[0_1px_0_0_var\(--border-light\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_0_0_var\(--border-light\)\]{--tw-shadow:0 1px 0 0 var(--tw-shadow-color,var(--border-light))}.shadow-\[0_1px_1px_rgba\(0\,0\,0\,0\.03\)\,_0_4\.93747px_9\.05202px_rgba\(0\,0\,0\,0\.11\)\]{--tw-shadow:0 1px 1px var(--tw-shadow-color,#00000008),0 4.93747px 9.05202px var(--tw-shadow-color,#0000001c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_12px_0px_\#0000000B\]{--tw-shadow:0 1px 12px 0px var(--tw-shadow-color,#0000000b)}.shadow-\[0_1px_12px_0px_\#0000000B\],.shadow-\[0_2px_3px_0_rgba\(0\,0\,0\,0\.25\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_2px_3px_0_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow:0 2px 3px 0 var(--tw-shadow-color,#00000040)}.shadow-\[0_2px_10px\]{--tw-shadow:0 2px 10px var(--tw-shadow-color,currentcolor)}.shadow-\[0_2px_10px\],.shadow-\[0_4px_8px_-6px_rgb\(0_0_0_\/_0\.1\)\,0_0_1px_rgb\(0_0_0_\/_0\.4\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_8px_-6px_rgb\(0_0_0_\/_0\.1\)\,0_0_1px_rgb\(0_0_0_\/_0\.4\)\]{--tw-shadow:0 4px 8px -6px var(--tw-shadow-color,#0000001a),0 0 1px var(--tw-shadow-color,#0006)}.shadow-\[0_4px_24px_-5px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 4px 24px -5px var(--tw-shadow-color,#0003)}.shadow-\[0_4px_24px_-5px_rgba\(0\,0\,0\,0\.2\)\],.shadow-\[0_4px_64px_0_rgba\(0\,0\,0\,0\.2\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_64px_0_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 4px 64px 0 var(--tw-shadow-color,#0003)}.shadow-\[0_5px_8px_3px_rgba\(0\,0\,0\,0\.05\)\,_0_0\.5px_1px_0px_rgba\(0\,0\,0\,0\.09\)\]{--tw-shadow:0 5px 8px 3px var(--tw-shadow-color,#0000000d),0 .5px 1px 0px var(--tw-shadow-color,#00000017);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_9px_9px_0px_rgba\(0\,0\,0\,0\.01\)\,_0_2px_5px_0px_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:0 9px 9px 0px var(--tw-shadow-color,#00000003),0 2px 5px 0px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_24px_-6px_rgb\(0_0_0_\/_0\.1\)\,0_0_1px_rgb\(0_0_0_\/_0\.2\)\]{--tw-shadow:0 12px 24px -6px var(--tw-shadow-color,#0000001a),0 0 1px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_24px_-6px_rgb\(0_0_0_\/_0\.1\)\,0_0_12px_rgb\(0_0_0_\/_0\.2\)\]{--tw-shadow:0 12px 24px -6px var(--tw-shadow-color,#0000001a),0 0 12px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_24px_-6px_rgb\(0_0_0_\/_0\.1\)\,_0_0_1px_rgb\(0_0_0_\/_0\.4\)\]{--tw-shadow:0 12px 24px -6px var(--tw-shadow-color,#0000001a),0 0 1px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_32px_-12px_rgb\(0_0_0_\/_0\.2\)\,_0_0_1px_rgb\(0_0_0_\/_0\.3\)\]{--tw-shadow:0 12px 32px -12px var(--tw-shadow-color,#0003),0 0 1px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_32px_-12px_rgb\(0_0_0_\/_0\.4\)\,0_0_1px_rgb\(0_0_0_\/_0\.2\)\]{--tw-shadow:0 12px 32px -12px var(--tw-shadow-color,#0006),0 0 1px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_14px_62px_0_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow:0 14px 62px 0 var(--tw-shadow-color,#00000040)}.shadow-\[0_14px_62px_0_rgba\(0\,0\,0\,0\.25\)\],.shadow-\[0_32px_48px_rgba\(0\,0\,0\,0\.175\)\,_0_0_1px_rgba\(0\,0\,0\,0\.2\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_32px_48px_rgba\(0\,0\,0\,0\.175\)\,_0_0_1px_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 32px 48px var(--tw-shadow-color,#0000002d),0 0 1px var(--tw-shadow-color,#0003)}.shadow-\[0px_0px_32px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0px 0px 32px var(--tw-shadow-color,#00000014)}.shadow-\[0px_0px_32px_rgba\(0\,0\,0\,0\.08\)\],.shadow-\[0px_0px_48px_rgba\(0\,0\,0\,0\.08\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0px_0px_48px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0px 0px 48px var(--tw-shadow-color,#00000014)}.shadow-\[0px_0px_50px_5px_rgba\(0\,_0\,_0\,_0\.1\)\]{--tw-shadow:0px 0px 50px 5px var(--tw-shadow-color,#0000001a)}.shadow-\[0px_0px_50px_5px_rgba\(0\,_0\,_0\,_0\.1\)\],.shadow-\[0px_1px_1px_0px_rgba\(0\,0\,0\,0\.05\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0px_1px_1px_0px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#0000000d)}.shadow-\[0px_1px_1px_rgba\(0\,0\,0\,0\.03\)\,_0px_3px_6px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0px 1px 1px var(--tw-shadow-color,#00000008),0px 3px 6px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0px_1px_3px_0px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0px 1px 3px 0px var(--tw-shadow-color,#0000000d)}.shadow-\[0px_1px_3px_0px_rgba\(0\,0\,0\,0\.05\)\],.shadow-\[0px_4px_14px_rgba\(0\,0\,0\,0\.06\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0px_4px_14px_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:0px 4px 14px var(--tw-shadow-color,#0000000f)}.shadow-\[0px_4px_16px_0px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0px 4px 16px 0px var(--tw-shadow-color,#0000000d)}.shadow-\[0px_10px_30px_0px\],.shadow-\[0px_4px_16px_0px_rgba\(0\,0\,0\,0\.05\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0px_10px_30px_0px\]{--tw-shadow:0px 10px 30px 0px var(--tw-shadow-color,currentcolor)}.shadow-\[0px_20px_25\.000001907348633px_-5px_rgba\(0\,0\,0\,0\.10\)\]{--tw-shadow:0px 20px 25px -5px var(--tw-shadow-color,#0000001a)}.shadow-\[0px_20px_25\.000001907348633px_-5px_rgba\(0\,0\,0\,0\.10\)\],.shadow-\[0px_24px_64px_rgba\(0\,0\,0\,0\.024\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0px_24px_64px_rgba\(0\,0\,0\,0\.024\)\]{--tw-shadow:0px 24px 64px var(--tw-shadow-color,#00000006)}.shadow-\[4px_0_0_0_var\(--bg-primary\)\]{--tw-shadow:4px 0 0 0 var(--tw-shadow-color,var(--bg-primary))}.shadow-\[4px_0_0_0_var\(--bg-primary\)\],.shadow-\[inset_0_0_0_1px_rgba\(0\,0\,0\,0\.1\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,#0000001a)}.shadow-\[inset_0_0_0_1px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(50\,50\,93\,0\.1\)\,0_2px_5px_0_rgba\(50\,50\,93\,0\.1\)\,0_1px_1px_0_rgba\(0\,0\,0\,0\.07\)\]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,#32325d1a),0 2px 5px 0 var(--tw-shadow-color,#32325d1a),0 1px 1px 0 var(--tw-shadow-color,#00000012);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[none\]{--tw-shadow:none}.shadow-\[none\],.shadow-inner{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-md{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none\!{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)}.shadow-xs{--tw-shadow:0 0 15px var(--tw-shadow-color,#0000001a)}.shadow-xs,.shadow-xxs{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xxs{--tw-shadow:0 0 2px 0 var(--tw-shadow-color,#0000000d),0 4px 6px 0 var(--tw-shadow-color,#00000005)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring,.ring-0{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-0\!{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-2,.ring-4{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.\[box-shadow\:0px_4px_16px_0px_rgba\(0\,0\,0\,0\.05\)\]{box-shadow:0 4px 16px #0000000d}.\[box-shadow\:none\]{box-shadow:none}.\[box-shadow\:var\(--sharp-edge-bottom-shadow-placeholder\)\]{box-shadow:var(--sharp-edge-bottom-shadow-placeholder)}.\[box-shadow\:var\(--sharp-edge-top-shadow\)\]{box-shadow:var(--sharp-edge-top-shadow)}.\[box-shadow\:var\(--sharp-edge-top-shadow-placeholder\)\]{box-shadow:var(--sharp-edge-top-shadow-placeholder)}.shadow-black\/3{--tw-shadow-color:#00000008}@supports (color:color-mix(in lab,red,red)){.shadow-black\/3{--tw-shadow-color:color-mix(in oklab,oklab(0% none none/.03) var(--tw-shadow-alpha),transparent)}}.shadow-black\/5{--tw-shadow-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.shadow-black\/5{--tw-shadow-color:color-mix(in oklab,oklab(0% none none/.05) var(--tw-shadow-alpha),transparent)}}.shadow-token-border-default{--tw-shadow-color:var(--border-default)}@supports (color:color-mix(in lab,red,red)){.shadow-token-border-default{--tw-shadow-color:color-mix(in oklab,var(--border-default)var(--tw-shadow-alpha),transparent)}}.shadow-token-border-xheavy{--tw-shadow-color:var(--border-xheavy)}@supports (color:color-mix(in lab,red,red)){.shadow-token-border-xheavy{--tw-shadow-color:color-mix(in oklab,var(--border-xheavy)var(--tw-shadow-alpha),transparent)}}.ring-blue-400{--tw-ring-color:#0285ff}.ring-blue-500\/60{--tw-ring-color:oklab(52.8649% -.0449645 -.167517/.6)}.ring-token-interactive-icon-accent-selected{--tw-ring-color:var(--interactive-icon-accent-selected)}.ring-transparent{--tw-ring-color:transparent}.ring-white{--tw-ring-color:#fff}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.ring-offset-4{--tw-ring-offset-width:4px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.ring-offset-black{--tw-ring-offset-color:#000}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline:2px solid #0000;outline-offset:2px}}.outline{outline-width:1px}.outline,.outline-0{outline-style:var(--tw-outline-style)}.outline-0{outline-width:0}.outline-0\!{outline-style:var(--tw-outline-style)!important;outline-width:0!important}.outline-1{outline-width:1px}.outline-1,.outline-2{outline-style:var(--tw-outline-style)}.outline-2{outline-width:2px}.outline-\[0\.5px\]{outline-style:var(--tw-outline-style);outline-width:.5px}.outline-offset-1{outline-offset:1px}.outline-offset-2{outline-offset:2px}.outline-offset-\[-1px\]{outline-offset:-1px}.outline-black\/5{outline-color:oklab(0 none none/.05)}.outline-orange-500{outline-color:#e25507}.outline-token-bg-primary{outline-color:var(--bg-primary)}.outline-token-border-default{outline-color:var(--border-default)}.outline-token-border-light{outline-color:var(--border-light)}.outline-token-border-xlight{outline-color:var(--border-xlight)}.outline-transparent{outline-color:#0000}.blur{--tw-blur:blur(8px)}.blur,.blur-2xl{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-2xl{--tw-blur:blur(var(--blur-2xl))}.blur-3xl{--tw-blur:blur(var(--blur-3xl))}.blur-3xl,.blur-lg{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-lg{--tw-blur:blur(var(--blur-lg))}.blur-sm{--tw-blur:blur(var(--blur-sm))}.blur-sm,.drop-shadow{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f)}.drop-shadow-\[0_6px_4px_var\(--shadow-color\)\]{--tw-drop-shadow-size:drop-shadow(0 6px 4px var(--tw-drop-shadow-color,var(--shadow-color)));--tw-drop-shadow:var(--tw-drop-shadow-size)}.drop-shadow-\[0_12px_32px_rgba\(0\,0\,0\,0\.06\)\],.drop-shadow-\[0_6px_4px_var\(--shadow-color\)\]{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-\[0_12px_32px_rgba\(0\,0\,0\,0\.06\)\]{--tw-drop-shadow-size:drop-shadow(0 12px 32px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:var(--tw-drop-shadow-size)}.drop-shadow-\[0_12px_64px_rgba\(0\,0\,0\,0\.12\)\]{--tw-drop-shadow-size:drop-shadow(0 12px 64px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:var(--tw-drop-shadow-size)}.drop-shadow-\[0_12px_64px_rgba\(0\,0\,0\,0\.12\)\],.drop-shadow-\[0_40px_24px_rgba\(0\,0\,0\,0\.048\)\]{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-\[0_40px_24px_rgba\(0\,0\,0\,0\.048\)\]{--tw-drop-shadow-size:drop-shadow(0 40px 24px var(--tw-drop-shadow-color,#0000000c));--tw-drop-shadow:var(--tw-drop-shadow-size)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg))}.drop-shadow-lg,.drop-shadow-md{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md))}.drop-shadow-xs{--tw-drop-shadow-size:drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000d));--tw-drop-shadow:drop-shadow(var(--drop-shadow-xs))}.drop-shadow-xs,.grayscale{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale-\[0\.6\]{--tw-grayscale:grayscale(.6)}.grayscale-\[0\.6\],.invert{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%)}.sepia{--tw-sepia:sepia(100%)}.filter,.sepia{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-blur-3xl{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-3xl{--tw-backdrop-blur:blur(var(--blur-3xl))}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px)}.backdrop-blur-\[24px\],.backdrop-blur-\[2px\]{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-\[24px\]{--tw-backdrop-blur:blur(24px)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg))}.backdrop-blur-lg,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md))}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm))}.backdrop-blur-sm,.backdrop-blur-xl{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl))}.backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs))}.backdrop-blur-xs,.backdrop-saturate-25{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-saturate-25{--tw-backdrop-saturate:saturate(25%)}.transition{transition-duration:var(--tw-duration,var(--default-transition-duration));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,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[border-color\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[filter\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[flex-basis\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:flex-basis;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[height\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[mask\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:-webkit-mask,mask;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[opacity_transform\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[stroke-dashoffset\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:stroke-dashoffset;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[transform\,opacity\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[transform_--shadow-color\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:transform --shadow-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[width\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-all{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-opacity{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-shadow{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-transform{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-width{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.delay-0{transition-delay:0s}.delay-75{transition-delay:75ms}.delay-100{transition-delay:.1s}.delay-250{transition-delay:.25s}.duration-0{--tw-duration:0s;transition-duration:0s}.duration-50{--tw-duration:50ms;transition-duration:50ms}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-175{--tw-duration:.175s;transition-duration:.175s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-350{--tw-duration:.35s;transition-duration:.35s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.duration-800{--tw-duration:.8s;transition-duration:.8s}.duration-1000{--tw-duration:1s;transition-duration:1s}.duration-\[0\.24s\]{--tw-duration:.24s;transition-duration:.24s}.duration-\[1\.5s\]{--tw-duration:1.5s;transition-duration:1.5s}.ease-\[cubic-bezier\(\.24\,\.1\,\.42\,\.91\)\]{--tw-ease:cubic-bezier(.24,.1,.42,.91);transition-timing-function:cubic-bezier(.24,.1,.42,.91)}.ease-\[cubic-bezier\(0\.87\,_0\,_0\.13\,_1\)\]{--tw-ease:cubic-bezier(.87,0,.13,1);transition-timing-function:cubic-bezier(.87,0,.13,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\[opacity\,transform\]{will-change:opacity,transform}.will-change-transform{will-change:transform}.contain-inline-size{--tw-contain-size:inline-size;contain:var(--tw-contain-size,)var(--tw-contain-layout,)var(--tw-contain-paint,)var(--tw-contain-style,)}.contain-content{contain:content}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[--composer-overlap-px\:55px\]{--composer-overlap-px:55px}.\[--edge-fade-distance\:1rem\]{--edge-fade-distance:1rem}.\[--force-hide-label\:none\]{--force-hide-label:none}.\[--padding\:1rem\]{--padding:1rem}.\[--panel-header-height\:var\(--screen-thread-header-min-height\)\]{--panel-header-height:var(--screen-thread-header-min-height)}.\[--right-bg\:var\(--bg-primary\)\]{--right-bg:var(--bg-primary)}.\[--right-bg\:var\(--bg-tertiary\)\]{--right-bg:var(--bg-tertiary)}.\[--shadow-color\:transparent\]{--shadow-color:transparent}.\[--sheet-radius\:16px\]{--sheet-radius:16px}.\[--thread-content-margin\:--spacing\(4\)\]{--thread-content-margin:calc(var(--spacing)*4)}.\[--thread-content-max-width\:32rem\]{--thread-content-max-width:32rem}.\[anchor-name\:--carousel\]{anchor-name:--carousel}.\[grid-area\:_title\]{grid-area:title}.\[grid-template-areas\:_\'title_action\'_\'description_action\'\]{grid-template-areas:"title action""description action"}.\[perspective\:1200px\]{perspective:1200px}.\[perspective\:2000px\]{perspective:2000px}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.\[scrollbar-gutter\:stable_both-edges\]{scrollbar-gutter:stable both-edges}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[scrollbar-width\:thin\]{scrollbar-width:thin}.\[text-box-trim\:trim-both\]{text-box-trim:trim-both}.\[text-decoration-skip-ink\:auto\]{-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto}.\[text-underline-position\:from-font\]{text-underline-position:from-font}.\[transform-style\:preserve-3d\]{transform-style:preserve-3d}.\[view-transition-name\:var\(--sidebar-popover\)\]{view-transition-name:var(--sidebar-popover)}.\[view-transition-name\:var\(--vt-active-image\)\]{view-transition-name:var(--vt-active-image)}.\[view-transition-name\:var\(--vt-composer\)\]{view-transition-name:var(--vt-composer)}.\[view-transition-name\:var\(--vt-composer-sources-pill\)\]{view-transition-name:var(--vt-composer-sources-pill)}.\[view-transition-name\:var\(--vt-composer-whisper-button\)\]{view-transition-name:var(--vt-composer-whisper-button)}.\[view-transition-name\:var\(--vt-image-carousel\)\]{view-transition-name:var(--vt-image-carousel)}.\[view-transition-name\:var\(--vt-page-footer\)\]{view-transition-name:var(--vt-page-footer)}.\[view-transition-name\:var\(--vt-page-header\)\]{view-transition-name:var(--vt-page-header)}.\[view-transition-name\:var\(--vt-page-title\)\]{view-transition-name:var(--vt-page-title)}.\[view-transition-name\:var\(--vt-scroll-buttons\)\]{view-transition-name:var(--vt-scroll-buttons)}.\[view-transition-name\:var\(--vt-tool-page-title\)\]{view-transition-name:var(--vt-tool-page-title)}.\[wrangler\:inf\]{wrangler:inf}.ring-inset{--tw-ring-inset:inset}:is(.\*\:pointer-events-auto>*){pointer-events:auto}:is(.\*\:m-0>*){margin:calc(var(--spacing)*0)}:is(.\*\:flex>*){display:flex}:is(.\*\:h-full>*){height:100%}:is(.\*\:w-full>*){width:100%}:is(.\*\:flex-1>*){flex:1}:is(.\*\:items-center>*){align-items:center}:is(.\*\:justify-end>*){justify-content:flex-end}:is(.\*\:gap-2>*){gap:calc(var(--spacing)*2)}:is(.\*\:rounded-md>*){border-radius:var(--radius-md)}:is(.\*\:bg-gray-300>*){background-color:#cdcdcd}:is(.\*\:object-center>*){object-position:center}:is(.\*\:p-4>*){padding:calc(var(--spacing)*4)}:is(.\*\:px-5>*){padding-inline:calc(var(--spacing)*5)}:is(.\*\:font-normal>*){--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}:is(.\*\:shadow-lg>*){--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.not-group-data-disabled\:text-token-text-tertiary:not(:is(:where(.group)[data-disabled] *)){color:var(--text-tertiary)}.not-active\:shadow-2xs:not(:active){--tw-shadow:0 1px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.not-has-\[\>div\]\:hidden:not(:has(>div)){display:none}@media not all and (pointer:coarse){.not-touch\:mt-0\.5{margin-top:calc(var(--spacing)*.5)}.not-touch\:hidden{display:none}}.group-focus-within\:text-token-text-secondary:is(:where(.group):focus-within *){color:var(--text-secondary)}.group-focus-within\/turn-messages\:pointer-events-auto:is(:where(.group\/turn-messages):focus-within *){pointer-events:auto}.group-focus-within\/turn-messages\:\[mask-position\:0_0\]:is(:where(.group\/turn-messages):focus-within *){-webkit-mask-position:0 0;mask-position:0 0}.group-focus-within\/turn-messages\:opacity-100:is(:where(.group\/turn-messages):focus-within *){opacity:1}@media (hover:hover){.group-hover\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.group-hover\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\:me-5:is(:where(.group):hover *){margin-inline-end:calc(var(--spacing)*5)}.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:flex:is(:where(.group):hover *){display:flex}.group-hover\:hidden:is(:where(.group):hover *){display:none}.group-hover\:w-11\/12:is(:where(.group):hover *){width:91.6667%}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-115:is(:where(.group):hover *){--tw-scale-x:115%;--tw-scale-y:115%;--tw-scale-z:115%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-125:is(:where(.group):hover *){--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-200:is(:where(.group):hover *){--tw-scale-x:200%;--tw-scale-y:200%;--tw-scale-z:200%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-\[1\.02\]:is(:where(.group):hover *){scale:1.02}.group-hover\:rotate-\[-2deg\]:is(:where(.group):hover *){rotate:-2deg}.group-hover\:rotate-\[-5deg\]:is(:where(.group):hover *){rotate:-5deg}.group-hover\:border-token-bg-tertiary:is(:where(.group):hover *){border-color:var(--bg-tertiary)}.group-hover\:border-token-text-primary:is(:where(.group):hover *){border-color:var(--text-primary)}.group-hover\:bg-blue-100:is(:where(.group):hover *){background-color:#99ceff}.group-hover\:bg-gray-100:is(:where(.group):hover *){background-color:#ececec}.group-hover\:bg-token-interactive-bg-secondary-selected:is(:where(.group):hover *){background-color:var(--interactive-bg-secondary-selected)}.group-hover\:bg-token-main-surface-primary:is(:where(.group):hover *){background-color:var(--main-surface-primary)}.group-hover\:bg-token-main-surface-secondary:is(:where(.group):hover *){background-color:var(--main-surface-secondary)}.group-hover\:text-\[hsla\(0\,0\%\,10\%\,0\.8\)\]:is(:where(.group):hover *){color:#1a1a1acc}.group-hover\:text-red-500:is(:where(.group):hover *){color:#e02e2a}.group-hover\:text-token-interactive-label-accent-default:is(:where(.group):hover *){color:var(--interactive-label-accent-default)}.group-hover\:text-token-link:is(:where(.group):hover *){color:var(--link)}.group-hover\:text-token-text-primary:is(:where(.group):hover *){color:var(--text-primary)}.group-hover\:text-token-text-secondary:is(:where(.group):hover *){color:var(--text-secondary)}.group-hover\:opacity-90:is(:where(.group):hover *){opacity:.9}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:grayscale-0:is(:where(.group):hover *){--tw-grayscale:grayscale(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.group-hover\:duration-150:is(:where(.group):hover *){--tw-duration:.15s;transition-duration:.15s}.group-hover\/audiogen-item\:opacity-100:is(:where(.group\/audiogen-item):hover *),.group-hover\/card\:opacity-100:is(:where(.group\/card):hover *),.group-hover\/cardset\:opacity-100:is(:where(.group\/cardset):hover *){opacity:1}.group-hover\/cell\:opacity-0:is(:where(.group\/cell):hover *){opacity:0}.group-hover\/cell\:opacity-100:is(:where(.group\/cell):hover *){opacity:1}.group-hover\/dalle-image\:visible:is(:where(.group\/dalle-image):hover *){visibility:visible}.group-hover\/dalle-image\:bg-black\/70:is(:where(.group\/dalle-image):hover *){background-color:oklab(0 none none/.7)}.group-hover\/dalle-image\:bg-transparent:is(:where(.group\/dalle-image):hover *){background-color:#0000}.group-hover\/debug\:opacity-100:is(:where(.group\/debug):hover *),.group-hover\/feed\:opacity-100:is(:where(.group\/feed):hover *){opacity:1}.group-hover\/file-layout\:bg-token-interactive-bg-primary-selected\/5:is(:where(.group\/file-layout):hover *){background-color:var(--interactive-bg-primary-selected)}@supports (color:color-mix(in lab,red,red)){.group-hover\/file-layout\:bg-token-interactive-bg-primary-selected\/5:is(:where(.group\/file-layout):hover *){background-color:color-mix(in oklab,var(--interactive-bg-primary-selected)5%,transparent)}}.group-hover\/file-row\:opacity-100:is(:where(.group\/file-row):hover *){opacity:1}.group-hover\/file-tile\:block:is(:where(.group\/file-tile):hover *){display:block}.group-hover\/footnote\:border-token-bg-tertiary:is(:where(.group\/footnote):hover *){border-color:var(--bg-tertiary)}.group-hover\/footnote\:border-token-main-surface-secondary:is(:where(.group\/footnote):hover *){border-color:var(--main-surface-secondary)}.group-hover\/icon\:bg-gray-200:is(:where(.group\/icon):hover *){background-color:#e3e3e3}.group-hover\/imagegen-image\:opacity-100:is(:where(.group\/imagegen-image):hover *),.group-hover\/message\:opacity-100:is(:where(.group\/message):hover *){opacity:1}.group-hover\/nav-list\:underline:is(:where(.group\/nav-list):hover *){text-decoration-line:underline}.group-hover\/paragen-image\:visible:is(:where(.group\/paragen-image):hover *){visibility:visible}.group-hover\/row\:bg-gray-50:is(:where(.group\/row):hover *){background-color:#f9f9f9}.group-hover\/row\:underline:is(:where(.group\/row):hover *){text-decoration-line:underline}.group-hover\/row\:opacity-100:is(:where(.group\/row):hover *){opacity:1}.group-hover\/row\:delay-500:is(:where(.group\/row):hover *){transition-delay:.5s}.group-hover\/snorlax-control-tile\:border-token-bg-tertiary:is(:where(.group\/snorlax-control-tile):hover *){border-color:var(--bg-tertiary)}.group-hover\/tiny-bar\:block:is(:where(.group\/tiny-bar):hover *){display:block}.group-hover\/tiny-bar\:hidden:is(:where(.group\/tiny-bar):hover *){display:none}.group-hover\/turn-messages\:pointer-events-auto:is(:where(.group\/turn-messages):hover *){pointer-events:auto}.group-hover\/turn-messages\:\[mask-position\:0_0\]:is(:where(.group\/turn-messages):hover *){-webkit-mask-position:0 0;mask-position:0 0}.group-hover\/turn-messages\:opacity-100:is(:where(.group\/turn-messages):hover *){opacity:1}.group-hover\/turn-messages\:delay-300:is(:where(.group\/turn-messages):hover *){transition-delay:.3s}}.group-focus\/imagegen-image\:opacity-100:is(:where(.group\/imagegen-image):focus *),.group-focus\:opacity-100:is(:where(.group):focus *){opacity:1}.group-focus-visible\:block:is(:where(.group):focus-visible *){display:block}.group-focus-visible\:hidden:is(:where(.group):focus-visible *){display:none}.group-focus-visible\:ring-2:is(:where(.group):focus-visible *){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-active\/file-layout\:bg-token-interactive-bg-primary-selected\/15:is(:where(.group\/file-layout):active *){background-color:var(--interactive-bg-primary-selected)}@supports (color:color-mix(in lab,red,red)){.group-active\/file-layout\:bg-token-interactive-bg-primary-selected\/15:is(:where(.group\/file-layout):active *){background-color:color-mix(in oklab,var(--interactive-bg-primary-selected)15%,transparent)}}.group-disabled\:opacity-50:is(:where(.group):disabled *){opacity:.5}.group-has-focus\:border-token-border-xheavy:is(:where(.group):has(:focus) *){border-color:var(--border-xheavy)}.group-data-disabled\:opacity-50:is(:where(.group)[data-disabled] *){opacity:.5}.group-data-scroll-from-top\/thread\:\[box-shadow\:var\(--sharp-edge-top-shadow\)\]:is(:where(.group\/thread)[data-scroll-from-top] *){box-shadow:var(--sharp-edge-top-shadow)}.group-data-scrolled-from-end\/scrollport\:shadow-\(--sharp-edge-bottom-shadow\):is(:where(.group\/scrollport)[data-scrolled-from-end] *){--tw-shadow:var(--sharp-edge-bottom-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-stream-active\/thread\:h-\(--thread-end-gutter-active-height\):is(:where(.group\/thread)[data-stream-active] *){height:var(--thread-end-gutter-active-height)}.group-data-stream-active\/thread\:\[overflow-anchor\:none\]:is(:where(.group\/thread)[data-stream-active] *){overflow-anchor:none}.group-data-\[state\=off\]\:hidden:is(:where(.group)[data-state=off] *),.group-data-\[state\=on\]\:hidden:is(:where(.group)[data-state=on] *){display:none}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-radix-disabled\:opacity-50:is(:where(.group)[data-disabled] *){opacity:.5}.group-radix-state-checked\:hidden:is(:where(.group)[data-state=checked] *){display:none}.group-radix-state-open\:bg-token-bg-tertiary:is(:where(.group)[data-state=open] *){background-color:var(--bg-tertiary)}.group-radix-state-open\:bg-token-main-surface-tertiary:is(:where(.group)[data-state=open] *){background-color:var(--main-surface-tertiary)}.group-\[\.skeleton\]\:animate-\[shimmer-skeleton_2s_infinite_ease-in-out\]:is(:where(.group).skeleton *){animation:shimmer-skeleton 2s ease-in-out infinite}.group-\[\.skeleton\]\:rounded-md:is(:where(.group).skeleton *){border-radius:var(--radius-md)}.group-\[\.skeleton\]\:bg-linear-to-r:is(:where(.group).skeleton *){--tw-gradient-position:to right;background-image:linear-gradient(var(--tw-gradient-stops))}@supports (background-image:linear-gradient(in lab,red,red)){.group-\[\.skeleton\]\:bg-linear-to-r:is(:where(.group).skeleton *){--tw-gradient-position:to right in oklab}}.group-\[\.skeleton\]\:from-\[\#c1c0c0\]:is(:where(.group).skeleton *){--tw-gradient-from:#c1c0c0;--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))}.group-\[\.skeleton\]\:via-\[\#f1f0f0\]:is(:where(.group).skeleton *){--tw-gradient-via:#f1f0f0;--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.group-\[\.skeleton\]\:to-\[\#c1c0c0\:\]:is(:where(.group).skeleton *){--tw-gradient-to:#c1c0c0:;--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))}.group-\[\.skeleton\]\:\[box-decoration-break\:clone\]:is(:where(.group).skeleton *){-webkit-box-decoration-break:clone;box-decoration-break:clone}.group-\[\.skeleton\]\:bg-\[length\:300\%\]:is(:where(.group).skeleton *){background-size:300%}.group-\[\.skeleton\]\:leading-7:is(:where(.group).skeleton *){--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.group-\[\.skeleton\]\:text-transparent:is(:where(.group).skeleton *){color:#0000}.group-\[\.skeleton\]\:\[animation-direction\:alternate\]:is(:where(.group).skeleton *){animation-direction:alternate}.group-\[\:not\(\:hover\)\:not\(\:focus-within\)\]\:pointer-events-none:is(:where(.group):not(:hover):not(:focus-within) *){pointer-events:none}.group-\[\:not\(\:hover\)\:not\(\:focus-within\)\]\:opacity-0:is(:where(.group):not(:hover):not(:focus-within) *){opacity:0}.group-\[\:not\(\[data-scroll-from-end\]\)\]\/thread\:pointer-events-none:is(:where(.group\/thread):not([data-scroll-from-end]) *){pointer-events:none}.group-\[\:not\(\[data-scroll-from-end\]\)\]\/thread\:scale-50:is(:where(.group\/thread):not([data-scroll-from-end]) *){--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-\[\:not\(\[data-scroll-from-end\]\)\]\/thread\:opacity-0:is(:where(.group\/thread):not([data-scroll-from-end]) *){opacity:0}.group-\[\:not\(\[data-scroll-from-end\]\)\]\/thread\:delay-0:is(:where(.group\/thread):not([data-scroll-from-end]) *){transition-delay:0s}.group-\[\:not\(\[data-scroll-from-end\]\)\]\/thread\:duration-100:is(:where(.group\/thread):not([data-scroll-from-end]) *){--tw-duration:.1s;transition-duration:.1s}.group-\[\:not\(\[data-scroll-from-top\]\)\]\/thread\:pointer-events-none:is(:where(.group\/thread):not([data-scroll-from-top]) *){pointer-events:none}.group-\[\:not\(\[data-scroll-from-top\]\)\]\/thread\:scale-50:is(:where(.group\/thread):not([data-scroll-from-top]) *){--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-\[\:not\(\[data-scroll-from-top\]\)\]\/thread\:opacity-0:is(:where(.group\/thread):not([data-scroll-from-top]) *){opacity:0}.group-\[\:not\(\[data-scroll-from-top\]\)\]\/thread\:delay-0:is(:where(.group\/thread):not([data-scroll-from-top]) *){transition-delay:0s}.group-\[\:not\(\[data-scroll-from-top\]\)\]\/thread\:duration-100:is(:where(.group\/thread):not([data-scroll-from-top]) *){--tw-duration:.1s;transition-duration:.1s}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.first-letter\:uppercase:first-letter{text-transform:uppercase}.marker\:text-token-text-tertiary ::marker{color:var(--text-tertiary)}.marker\:text-token-text-tertiary::marker{color:var(--text-tertiary)}.marker\:text-token-text-tertiary ::-webkit-details-marker,.marker\:text-token-text-tertiary::-webkit-details-marker{color:var(--text-tertiary)}.placeholder\:text-gray-300::placeholder{color:#cdcdcd}.placeholder\:text-gray-400::placeholder{color:#b4b4b4}.placeholder\:text-gray-500::placeholder{color:#9b9b9b}.placeholder\:text-token-text-quaternary::placeholder{color:var(--text-quaternary)}.placeholder\:text-token-text-secondary::placeholder{color:var(--text-secondary)}.placeholder\:text-token-text-tertiary::placeholder{color:var(--text-tertiary)}.before\:pointer-events-auto:before{content:var(--tw-content);pointer-events:auto}.before\:pointer-events-none:before{content:var(--tw-content);pointer-events:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-0:before{content:var(--tw-content);inset:calc(var(--spacing)*0)}.before\:inset-\[-12px\]:before{content:var(--tw-content);inset:-12px}.before\:inset-x-\[-1px\]:before{content:var(--tw-content);inset-inline:-1px}.before\:-start-0\.5:before{content:var(--tw-content);inset-inline-start:calc(var(--spacing)*-.5)}.before\:top-\[-1px\]:before{content:var(--tw-content);top:-1px}.before\:bottom-0:before{bottom:calc(var(--spacing)*0);content:var(--tw-content)}.before\:z-\[-1\]:before{content:var(--tw-content);z-index:-1}.before\:rounded-full:before{border-radius:3.40282e+38px;content:var(--tw-content)}.before\:rounded-e-lg:before{border-end-end-radius:var(--radius-lg);border-start-end-radius:var(--radius-lg);content:var(--tw-content)}.before\:bg-\[var\(--right-bg\)\]:before{background-color:var(--right-bg);content:var(--tw-content)}.before\:bg-gray-200\/50:before{background-color:#e3e3e380;content:var(--tw-content)}.before\:bg-transparent:before{background-color:#0000;content:var(--tw-content)}.before\:bg-white\/50:before{background-color:#ffffff80;content:var(--tw-content)}.before\:bg-gradient-to-l:before{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops));content:var(--tw-content)}.before\:from-token-bg-tertiary:before{--tw-gradient-from:var(--bg-tertiary);--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));content:var(--tw-content)}.before\:via-token-bg-tertiary:before{--tw-gradient-via:var(--bg-tertiary);--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);--tw-gradient-stops:var(--tw-gradient-via-stops);content:var(--tw-content)}.before\:to-transparent:before{--tw-gradient-to:transparent;--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));content:var(--tw-content)}.before\:backdrop-blur-\[1px\]:before{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);content:var(--tw-content)}.before\:transition:before{content:var(--tw-content);transition-duration:var(--tw-duration,var(--default-transition-duration));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,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.before\:duration-250:before{--tw-duration:.25s;content:var(--tw-content);transition-duration:.25s}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.before\:content-\[\'\*\'\]:before{--tw-content:"*";content:var(--tw-content)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-4:after{content:var(--tw-content);inset:calc(var(--spacing)*-4)}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing)*0)}.after\:inset-\[-4px\]:after{content:var(--tw-content);inset:-4px}.after\:-inset-x-2:after{content:var(--tw-content);inset-inline:calc(var(--spacing)*-2)}.after\:inset-x-2:after{content:var(--tw-content);inset-inline:calc(var(--spacing)*2)}.after\:inset-x-\[-4px\]:after{content:var(--tw-content);inset-inline:-4px}.after\:-inset-y-4:after{content:var(--tw-content);inset-block:calc(var(--spacing)*-4)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:start-0:after{content:var(--tw-content);inset-inline-start:calc(var(--spacing)*0)}.after\:start-\[-15px\]:after{content:var(--tw-content);inset-inline-start:-15px}.after\:start-\[calc\(100\%_\+_280px\)\]:after{content:var(--tw-content);inset-inline-start:calc(100% + 280px)}.after\:start-\[calc\(100\%_-_25px\)\]:after{content:var(--tw-content);inset-inline-start:calc(100% - 25px)}.after\:end-0:after{content:var(--tw-content);inset-inline-end:calc(var(--spacing)*0)}.after\:end-\[-15\%\]:after{content:var(--tw-content);inset-inline-end:-15%}.after\:top-0:after{content:var(--tw-content);top:calc(var(--spacing)*0)}.after\:top-\[-30px\]:after{content:var(--tw-content);top:-30px}.after\:top-\[-95px\]:after{content:var(--tw-content);top:-95px}.after\:top-\[-100\%\]:after{content:var(--tw-content);top:-100%}.after\:-right-4:after{content:var(--tw-content)}[dir=ltr] .after\:-right-4:after{right:calc(var(--spacing)*-4)}[dir=rtl] .after\:-right-4:after{left:calc(var(--spacing)*-4)}.after\:bottom-0:after{bottom:calc(var(--spacing)*0);content:var(--tw-content)}.after\:bottom-\[75\%\]:after{bottom:75%;content:var(--tw-content)}.after\:-left-1:after{content:var(--tw-content)}[dir=ltr] .after\:-left-1:after{left:calc(var(--spacing)*-1)}[dir=rtl] .after\:-left-1:after{right:calc(var(--spacing)*-1)}.after\:z-0:after{content:var(--tw-content);z-index:0}.after\:z-\[-1\]:after{content:var(--tw-content);z-index:-1}.after\:col-\[1\]:after{content:var(--tw-content);grid-column:1}.after\:row-\[1\]:after{content:var(--tw-content);grid-row:1}.after\:mx-1:after{content:var(--tw-content);margin-inline:calc(var(--spacing)*1)}.after\:block:after{content:var(--tw-content);display:block}.after\:h-2:after{content:var(--tw-content);height:calc(var(--spacing)*2)}.after\:h-\[1px\]:after{content:var(--tw-content);height:1px}.after\:h-\[64px\]:after{content:var(--tw-content);height:64px}.after\:h-\[120\%\]:after{content:var(--tw-content);height:120%}.after\:h-\[140px\]:after{content:var(--tw-content);height:140px}.after\:h-\[144px\]:after{content:var(--tw-content);height:144px}.after\:h-\[200px\]:after{content:var(--tw-content);height:200px}.after\:h-fit:after{content:var(--tw-content);height:fit-content}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing)*1)}.after\:w-2:after{content:var(--tw-content);width:calc(var(--spacing)*2)}.after\:w-\[75px\]:after{content:var(--tw-content);width:75px}.after\:w-\[80\%\]:after{content:var(--tw-content);width:80%}.after\:w-\[113px\]:after{content:var(--tw-content);width:113px}.after\:w-\[120\%\]:after{content:var(--tw-content);width:120%}.after\:w-\[255px\]:after{content:var(--tw-content);width:255px}.after\:w-fit:after{content:var(--tw-content);width:fit-content}.after\:max-w-\[340px\]:after{content:var(--tw-content);max-width:340px}.after\:rounded-\[50\%\]:after{border-radius:50%;content:var(--tw-content)}.after\:rounded-lg:after{border-radius:var(--radius-lg);content:var(--tw-content)}.after\:rounded-md:after{border-radius:var(--radius-md);content:var(--tw-content)}.after\:rounded-b-2xl:after{border-bottom-left-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl);content:var(--tw-content)}.after\:border-s:after{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px;content:var(--tw-content)}.after\:border-e:after{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px;content:var(--tw-content)}.after\:border-b:after{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;content:var(--tw-content)}.after\:border-token-border-default:after{border-color:var(--border-default);content:var(--tw-content)}.after\:bg-\[Highlight\]:after{background-color:highlight;content:var(--tw-content)}.after\:bg-green-500:after{background-color:#00a240;content:var(--tw-content)}.after\:bg-red-500:after{background-color:#e02e2a;content:var(--tw-content)}.after\:bg-token-border-light:after{background-color:var(--border-light);content:var(--tw-content)}.after\:bg-token-main-surface-primary:after{background-color:var(--main-surface-primary);content:var(--tw-content)}.after\:bg-token-text-primary:after{background-color:var(--text-primary);content:var(--tw-content)}.after\:bg-\[url\(https\:\/\/cdn\.openai\.com\/chatgpt\/ctf-cdn\/student-landing\/cards-more-v2\.png\)\]:after{background-image:url(https://cdn.openai.com/chatgpt/ctf-cdn/student-landing/cards-more-v2.png);content:var(--tw-content)}.after\:bg-\[url\(https\:\/\/cdn\.openai\.com\/chatgpt\/ctf-cdn\/student-landing\/faq-bubble-small-v2\.png\)\]:after{background-image:url(https://cdn.openai.com/chatgpt/ctf-cdn/student-landing/faq-bubble-small-v2.png);content:var(--tw-content)}.after\:bg-\[url\(https\:\/\/cdn\.openai\.com\/chatgpt\/ctf-cdn\/student-landing\/offer-flowers-v2\.png\)\]:after{background-image:url(https://cdn.openai.com/chatgpt/ctf-cdn/student-landing/offer-flowers-v2.png);content:var(--tw-content)}.after\:bg-\[url\(https\:\/\/cdn\.openai\.com\/chatgpt\/ctf-cdn\/student-landing\/splash-scribble-v2\.png\)\]:after{background-image:url(https://cdn.openai.com/chatgpt/ctf-cdn/student-landing/splash-scribble-v2.png);content:var(--tw-content)}.after\:bg-\[url\(https\:\/\/cdn\.openai\.com\/chatgpt\/ctf-cdn\/student-landing\/splash-stars-v2\.png\)\]:after{background-image:url(https://cdn.openai.com/chatgpt/ctf-cdn/student-landing/splash-stars-v2.png);content:var(--tw-content)}.after\:bg-contain:after{background-size:contain;content:var(--tw-content)}.after\:bg-bottom:after{background-position:bottom;content:var(--tw-content)}.after\:bg-center:after{background-position:50%;content:var(--tw-content)}.after\:bg-no-repeat:after{background-repeat:no-repeat;content:var(--tw-content)}.after\:px-\[1px\]:after{content:var(--tw-content);padding-inline:1px}.after\:whitespace-pre:after{content:var(--tw-content);white-space:pre}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:opacity-80:after{content:var(--tw-content);opacity:.8}.after\:opacity-100:after{content:var(--tw-content);opacity:1}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.after\:content-\[\'M\'\]:after{--tw-content:"M";content:var(--tw-content)}.after\:content-\[\'\\u00b7\'\]:after{--tw-content:"u00b7";content:var(--tw-content)}.after\:content-\[attr\(data-value\)\]:after{--tw-content:attr(data-value);content:var(--tw-content)}.group-last\:after\:hidden:is(:where(.group):last-child *):after{content:var(--tw-content);display:none}.first\:-ms-1:first-child{margin-inline-start:calc(var(--spacing)*-1)}.first\:ms-0:first-child{margin-inline-start:calc(var(--spacing)*0)}.first\:ms-4:first-child{margin-inline-start:calc(var(--spacing)*4)}.first\:me-0:first-child{margin-inline-end:calc(var(--spacing)*0)}.first\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}.first\:hidden:first-child{display:none}.first\:rounded-t:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.first\:rounded-t-lg:first-child{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.first\:border-0:first-child{border-style:var(--tw-border-style);border-width:0}.first\:border-none:first-child{--tw-border-style:none;border-style:none}.first\:ps-0\!:first-child{padding-inline-start:calc(var(--spacing)*0)!important}.first\:pt-\[3px\]:first-child{padding-top:3px}.last\:me-0:last-child{margin-inline-end:calc(var(--spacing)*0)}.last\:me-1\.5:last-child{margin-inline-end:calc(var(--spacing)*1.5)}.last\:me-4:last-child{margin-inline-end:calc(var(--spacing)*4)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}.last\:mb-2:last-child{margin-bottom:calc(var(--spacing)*2)}.last\:mb-5:last-child{margin-bottom:calc(var(--spacing)*5)}.last\:min-h-\[calc\(100vh-8rem\)\]:last-child{min-height:calc(100vh - 8rem)}.last\:snap-end:last-child{scroll-snap-align:end}.last\:scroll-mb-20:last-child{scroll-margin-bottom:calc(var(--spacing)*20)}.last\:scroll-pb-20:last-child{scroll-padding-bottom:calc(var(--spacing)*20)}.last\:rounded-b:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.last\:rounded-b-lg:last-child{border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.last\:border-e-0:last-child{border-inline-end-style:var(--tw-border-style);border-inline-end-width:0}.last\:border-b:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:border-none:last-child{--tw-border-style:none;border-style:none}.last\:pe-0:last-child{padding-inline-end:calc(var(--spacing)*0)}.last\:pe-0\!:last-child{padding-inline-end:calc(var(--spacing)*0)!important}.last\:pb-20:last-child{padding-bottom:calc(var(--spacing)*20)}.last\:after\:content-\[none\]:last-child:after{--tw-content:none;content:var(--tw-content)}.first-of-type\:border-none:first-of-type{--tw-border-style:none;border-style:none}.last-of-type\:border-0:last-of-type{border-style:var(--tw-border-style);border-width:0}.last-of-type\:border-b-0:last-of-type{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last-of-type\:border-none:last-of-type{--tw-border-style:none;border-style:none}.checked\:border-black\!:checked{border-color:#000!important}.checked\:border-blue-400\!:checked{border-color:#0285ff!important}.checked\:border-blue-600:checked{border-color:#004f99}.checked\:bg-black\!:checked{background-color:#000!important}.checked\:bg-blue-400\!:checked{background-color:#0285ff!important}.checked\:bg-blue-600:checked{background-color:#004f99}.empty\:hidden:empty{display:none}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-10:focus-within{z-index:10}.focus-within\:rounded-lg:focus-within{border-radius:var(--radius-lg)}.focus-within\:border-none:focus-within{--tw-border-style:none;border-style:none}.focus-within\:border-green-500:focus-within{border-color:#00a240}.focus-within\:border-green-600:focus-within{border-color:#008635}.focus-within\:border-token-border-default:focus-within{border-color:var(--border-default)}.focus-within\:border-token-border-heavy:focus-within{border-color:var(--border-heavy)}.focus-within\:border-token-border-xheavy:focus-within{border-color:var(--border-xheavy)}.focus-within\:bg-token-main-surface-tertiary:focus-within{background-color:var(--main-surface-tertiary)}.focus-within\:opacity-100:focus-within{opacity:1}.focus-within\:shadow-\[0_0_0_2px\]:focus-within{--tw-shadow:0 0 0 2px var(--tw-shadow-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:shadow-none:focus-within{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-0\!:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\:ring-green-600:focus-within{--tw-ring-color:#008635}.focus-within\:ring-token-border-heavy:focus-within{--tw-ring-color:var(--border-heavy)}.focus-within\:ring-token-text-secondary:focus-within{--tw-ring-color:var(--text-secondary)}.focus-within\:ring-transparent:focus-within{--tw-ring-color:transparent}.focus-within\:outline-hidden:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-within\:outline-hidden:focus-within{outline:2px solid #0000;outline-offset:2px}}.focus-within\:outline-black\/5:focus-within{outline-color:oklab(0 none none/.05)}.focus-within\:transition-none:focus-within{transition-property:none}.focus-within\:outline-none:focus-within{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:visible:hover{visibility:visible}.hover\:scale-103:hover{--tw-scale-x:103%;--tw-scale-y:103%;--tw-scale-z:103%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:cursor-default:hover{cursor:default}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border:hover{border-style:var(--tw-border-style);border-width:1px}.hover\:border-gray-100:hover{border-color:#ececec}.hover\:border-gray-500:hover{border-color:#9b9b9b}.hover\:border-gray-900:hover{border-color:#171717}.hover\:border-token-border-heavy:hover{border-color:var(--border-heavy)}.hover\:border-token-border-medium:hover{border-color:var(--border-medium)}.hover\:border-token-border-xheavy:hover{border-color:var(--border-xheavy)}.hover\:border-b-transparent:hover{border-bottom-color:#0000}.hover\:bg-\[\#0000001F\]:hover{background-color:#0000001f}.hover\:bg-\[\#BDDCF4\]:hover{background-color:#bddcf4}.hover\:bg-\[\#E4E4F6\]:hover{background-color:#e4e4f6}.hover\:bg-\[\#f5f5f5\]:hover{background-color:#f5f5f5}.hover\:bg-\[rgba\(0\,0\,0\,0\.08\)\]:hover{background-color:#00000014}.hover\:bg-\[rgba\(29\,155\,209\,0\.2\)\]:hover{background-color:#1d9bd133}.hover\:bg-\[var\(--snc-hover\)\]:hover{background-color:var(--snc-hover)}.hover\:bg-black:hover{background-color:#000}.hover\:bg-black\/5:hover{background-color:oklab(0 none none/.05)}.hover\:bg-black\/5\!:hover{background-color:oklab(0 none none/.05)!important}.hover\:bg-black\/10:hover{background-color:oklab(0 none none/.1)}.hover\:bg-black\/10\!:hover{background-color:oklab(0 none none/.1)!important}.hover\:bg-black\/20:hover{background-color:oklab(0 none none/.2)}.hover\:bg-blue-600:hover{background-color:#004f99}.hover\:bg-blue-800:hover{background-color:#013566}.hover\:bg-gray-50:hover{background-color:#f9f9f9}.hover\:bg-gray-100:hover{background-color:#ececec}.hover\:bg-gray-100\/75:hover{background-color:#ecececbf}.hover\:bg-gray-200:hover{background-color:#e3e3e3}.hover\:bg-gray-300:hover{background-color:#cdcdcd}.hover\:bg-gray-800:hover{background-color:#212121}.hover\:bg-gray-800\/10:hover{background-color:#2121211a}.hover\:bg-gray-900:hover{background-color:#171717}.hover\:bg-gray-900\/30:hover{background-color:#1717174d}.hover\:bg-green-500\/80:hover{background-color:#00a240cc}.hover\:bg-orange-400\/10:hover{background-color:#fb6a221a}.hover\:bg-purple-100:hover{background-color:#ceb0fb}.hover\:bg-purple-600:hover{background-color:#6b3ab4}.hover\:bg-red-500\/10:hover{background-color:#e02e2a1a}.hover\:bg-red-500\/15:hover{background-color:#e02e2a26}.hover\:bg-token-bg-elevated-secondary:hover{background-color:var(--bg-elevated-secondary)}.hover\:bg-token-bg-primary:hover,.hover\:bg-token-bg-primary\/60:hover{background-color:var(--bg-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-token-bg-primary\/60:hover{background-color:color-mix(in oklab,var(--bg-primary)60%,transparent)}}.hover\:bg-token-bg-secondary:hover{background-color:var(--bg-secondary)}.hover\:bg-token-bg-tertiary:hover{background-color:var(--bg-tertiary)}.hover\:bg-token-border-light:hover{background-color:var(--border-light)}.hover\:bg-token-border-xlight:hover{background-color:var(--border-xlight)}.hover\:bg-token-icon-surface\/10:hover{background-color:rgb(var(--icon-surface)/1)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-token-icon-surface\/10:hover{background-color:color-mix(in oklab,rgb(var(--icon-surface)/1) 10%,transparent)}}.hover\:bg-token-interactive-bg-primary-hover:hover{background-color:var(--interactive-bg-primary-hover)}.hover\:bg-token-interactive-bg-primary-selected:hover,.hover\:bg-token-interactive-bg-primary-selected\/5:hover{background-color:var(--interactive-bg-primary-selected)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-token-interactive-bg-primary-selected\/5:hover{background-color:color-mix(in oklab,var(--interactive-bg-primary-selected)5%,transparent)}}.hover\:bg-token-interactive-bg-secondary-hover:hover{background-color:var(--interactive-bg-secondary-hover)}.hover\:bg-token-interactive-bg-secondary-press:hover{background-color:var(--interactive-bg-secondary-press)}.hover\:bg-token-interactive-bg-tertiary-hover:hover{background-color:var(--interactive-bg-tertiary-hover)}.hover\:bg-token-main-surface-primary\!:hover{background-color:var(--main-surface-primary)!important}.hover\:bg-token-main-surface-primary-inverse:hover{background-color:var(--main-surface-primary-inverse)}.hover\:bg-token-main-surface-secondary:hover{background-color:var(--main-surface-secondary)}.hover\:bg-token-main-surface-secondary\!:hover{background-color:var(--main-surface-secondary)!important}.hover\:bg-token-main-surface-secondary-selected:hover{background-color:var(--main-surface-secondary-selected)}.hover\:bg-token-main-surface-tertiary:hover{background-color:var(--main-surface-tertiary)}.hover\:bg-token-sidebar-surface-secondary:hover{background-color:var(--sidebar-surface-secondary)}.hover\:bg-token-sidebar-surface-tertiary:hover{background-color:var(--sidebar-surface-tertiary)}.hover\:bg-token-surface-error\/10:hover{background-color:rgb(var(--surface-error)/1)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-token-surface-error\/10:hover{background-color:color-mix(in oklab,rgb(var(--surface-error)/1) 10%,transparent)}}.hover\:bg-token-surface-hover:hover{background-color:var(--surface-hover)}.hover\:bg-token-surface-hover\!:hover{background-color:var(--surface-hover)!important}.hover\:bg-token-text-primary:hover{background-color:var(--text-primary)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white:hover{background-color:#fff}.hover\:bg-white\/15:hover{background-color:#ffffff26}.hover\:bg-white\/40:hover{background-color:#fff6}.hover\:text-\[\#0285ff\]\/80:hover{color:#0285ffcc}.hover\:text-\[rgb\(11\,76\,140\)\]:hover{color:#0b4c8c}.hover\:text-\[var\(--tag-blue-light\)\]:hover{color:var(--tag-blue-light)}.hover\:text-blue-600:hover{color:#004f99}.hover\:text-blue-700:hover{color:#003f7a}.hover\:text-gray-700:hover{color:#424242}.hover\:text-inherit:hover{color:inherit}.hover\:text-red-500:hover{color:#e02e2a}.hover\:text-red-700:hover{color:#911e1b}.hover\:text-token-icon-primary:hover{color:var(--icon-primary)}.hover\:text-token-link-hover:hover{color:var(--link-hover)}.hover\:text-token-main-surface-tertiary:hover{color:var(--main-surface-tertiary)}.hover\:text-token-text-inverted:hover{color:var(--text-inverted)}.hover\:text-token-text-primary:hover{color:var(--text-primary)}.hover\:text-token-text-secondary:hover{color:var(--text-secondary)}.hover\:text-token-text-tertiary:hover{color:var(--text-tertiary)}.hover\:text-white:hover{color:#fff}.hover\:text-white\/40:hover{color:#fff6}.hover\:no-underline:hover{text-decoration-line:none}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-60:hover{opacity:.6}.hover\:opacity-65:hover{opacity:.65}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-75:hover{opacity:.75}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:mix-blend-normal:hover{mix-blend-mode:normal}.hover\:shadow-\[-1px_0_2px_2px_rgba\(255\,0\,0\,0\.4\)\]:hover{--tw-shadow:-1px 0 2px 2px var(--tw-shadow-color,#f006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_8px_16px_0_rgba\(0\,0\,0\,0\.06\)\]:hover{--tw-shadow:0 8px 16px 0 var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0px_1px_3px_0px_rgba\(0\,0\,0\,0\.15\)\]:hover{--tw-shadow:0px 1px 3px 0px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-token-border-default:hover{--tw-shadow-color:var(--border-default)}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-token-border-default:hover{--tw-shadow-color:color-mix(in oklab,var(--border-default)var(--tw-shadow-alpha),transparent)}}.hover\:backdrop-blur-md:hover{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.hover\:transition-none:hover{transition-property:none}.hover\:delay-0:hover{transition-delay:0s}.hover\:delay-300:hover{transition-delay:.3s}.hover\:after\:bg-token-main-surface-tertiary:hover:after{background-color:var(--main-surface-tertiary);content:var(--tw-content)}}.focus\:border-0:focus{border-style:var(--tw-border-style);border-width:0}.focus\:border-none:focus{--tw-border-style:none;border-style:none}.focus\:border-\[\#0570de\]:focus{border-color:#0570de}.focus\:border-black:focus{border-color:#000}.focus\:border-blue-500:focus{border-color:#0169cc}.focus\:border-gray-200:focus{border-color:#e3e3e3}.focus\:border-orange-400:focus{border-color:#fb6a22}.focus\:border-red-500:focus{border-color:#e02e2a}.focus\:border-token-border-medium:focus{border-color:var(--border-medium)}.focus\:border-token-text-error:focus{border-color:var(--text-error)}.focus\:border-token-text-primary:focus{border-color:var(--text-primary)}.focus\:border-transparent:focus{border-color:#0000}.focus\:border-white:focus{border-color:#fff}.focus\:bg-token-bg-secondary:focus{background-color:var(--bg-secondary)}.focus\:bg-token-icon-surface\/10:focus{background-color:rgb(var(--icon-surface)/1)}@supports (color:color-mix(in lab,red,red)){.focus\:bg-token-icon-surface\/10:focus{background-color:color-mix(in oklab,rgb(var(--icon-surface)/1) 10%,transparent)}}.focus\:bg-white\/15:focus{background-color:#ffffff26}.focus\:underline:focus{text-decoration-line:underline}.focus\:shadow-\[0px_1px_1px_rgba\(0\,0\,0\,0\.03\)\,0px_3px_6px_rgba\(0\,0\,0\,0\.02\)\,0_0_0_3px_hsla\(210\,96\%\,45\%\,0\.25\)\,0_1px_1px_0_rgba\(0\,0\,0\,0\.08\)\]:focus{--tw-shadow:0px 1px 1px var(--tw-shadow-color,#00000008),0px 3px 6px var(--tw-shadow-color,#00000005),0 0 0 3px var(--tw-shadow-color,#0573e140),0 1px 1px 0 var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-0\!:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-black:focus{--tw-ring-color:#000}.focus\:ring-blue-400:focus{--tw-ring-color:#0285ff}.focus\:ring-blue-500:focus{--tw-ring-color:#0169cc}.focus\:ring-gray-200:focus{--tw-ring-color:#e3e3e3}.focus\:ring-purple-500:focus{--tw-ring-color:#8046d9}.focus\:ring-token-text-primary:focus{--tw-ring-color:var(--text-primary)}.focus\:ring-transparent:focus{--tw-ring-color:transparent}.focus\:ring-white:focus{--tw-ring-color:#fff}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:ring-offset-0\!:focus{--tw-ring-offset-width:0px!important;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)!important}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline:2px solid #0000;outline-offset:2px}}.focus\:outline-0:focus{outline-style:var(--tw-outline-style);outline-width:0}.focus\:outline-0\!:focus{outline-style:var(--tw-outline-style)!important;outline-width:0!important}.focus\:backdrop-blur-md:focus{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\:ring-inset:focus{--tw-ring-inset:inset}.focus-visible\:translate-y-0:focus-visible{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.focus-visible\:border-none:focus-visible{--tw-border-style:none;border-style:none}.focus-visible\:border-token-border-default:focus-visible{border-color:var(--border-default)}.focus-visible\:bg-token-icon-surface\/10:focus-visible{background-color:rgb(var(--icon-surface)/1)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:bg-token-icon-surface\/10:focus-visible{background-color:color-mix(in oklab,rgb(var(--icon-surface)/1) 10%,transparent)}}.focus-visible\:bg-token-interactive-bg-secondary-hover:focus-visible{background-color:var(--interactive-bg-secondary-hover)}.focus-visible\:bg-token-main-surface-secondary:focus-visible{background-color:var(--main-surface-secondary)}.focus-visible\:bg-token-surface-hover:focus-visible{background-color:var(--surface-hover)}.focus-visible\:bg-token-surface-hover\!:focus-visible{background-color:var(--surface-hover)!important}.focus-visible\:bg-transparent:focus-visible{background-color:#0000}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:ring:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-token-text-primary:focus-visible{--tw-ring-color:var(--text-primary)}.focus-visible\:ring-token-text-quaternary:focus-visible{--tw-ring-color:var(--text-quaternary)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-transparent:focus-visible{--tw-ring-offset-color:transparent}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline:2px solid #0000;outline-offset:2px}}.focus-visible\:outline-0:focus-visible{outline-style:var(--tw-outline-style);outline-width:0}.focus-visible\:-outline-offset-1:focus-visible{outline-offset:-1px}.focus-visible\:outline-black:focus-visible{outline-color:#000}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-100:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.active\:scale-\[0\.9\]:active{scale:.9}.active\:bg-black\/10\!:active{background-color:oklab(0 none none/.1)!important}.active\:bg-black\/20:active{background-color:oklab(0 none none/.2)}.active\:bg-gray-300:active{background-color:#cdcdcd}.active\:bg-gray-700:active{background-color:#424242}.active\:bg-red-500\/20:active{background-color:#e02e2a33}.active\:bg-token-bg-tertiary:active{background-color:var(--bg-tertiary)}.active\:bg-token-interactive-bg-secondary-press:active{background-color:var(--interactive-bg-secondary-press)}.active\:opacity-1:active{opacity:.01}.active\:opacity-50:active{opacity:.5}@media (hover:hover){.enabled\:hover\:bg-black\/5:enabled:hover{background-color:oklab(0 none none/.05)}.enabled\:hover\:bg-token-main-surface-secondary:enabled:hover{background-color:var(--main-surface-secondary)}.enabled\:hover\:bg-token-surface-hover:enabled:hover{background-color:var(--surface-hover)}.enabled\:hover\:text-token-text-secondary:enabled:hover{color:var(--text-secondary)}.enabled\:hover\:underline:enabled:hover{text-decoration-line:underline}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-\[\#D7D7D7\]:disabled{background-color:#d7d7d7}.disabled\:bg-token-main-surface-tertiary:disabled{background-color:var(--main-surface-tertiary)}.disabled\:text-\[\#f4f4f4\]:disabled{color:#f4f4f4}.disabled\:text-gray-50:disabled{color:#f9f9f9}.disabled\:text-token-border-medium:disabled{color:var(--border-medium)}.disabled\:text-token-text-quaternary:disabled{color:var(--text-quaternary)}.disabled\:text-token-text-tertiary:disabled{color:var(--text-tertiary)}.disabled\:opacity-25:disabled{opacity:.25}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-100:disabled{opacity:1}@media (hover:hover){.disabled\:hover\:bg-token-main-surface-primary:disabled:hover{background-color:var(--main-surface-primary)}.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}.disabled\:hover\:text-token-text-secondary:disabled:hover{color:var(--text-secondary)}}.has-focus\:shadow-\[0_2px_12px_0px_rgba\(0\,0\,0\,0\.04\)\,0_9px_9px_0px_rgba\(0\,0\,0\,0\.01\)\,0_2px_5px_0px_rgba\(0\,0\,0\,0\.06\)\]:has(:focus){--tw-shadow:0 2px 12px 0px var(--tw-shadow-color,#0000000a),0 9px 9px 0px var(--tw-shadow-color,#00000003),0 2px 5px 0px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-focus-visible\:border-token-border-xheavy:has(:focus-visible){border-color:var(--border-xheavy)}.has-data-has-thread-error\:pt-2:has([data-has-thread-error]){padding-top:calc(var(--spacing)*2)}.has-data-has-thread-error\:\[box-shadow\:var\(--sharp-edge-bottom-shadow\)\]:has([data-has-thread-error]){box-shadow:var(--sharp-edge-bottom-shadow)}.has-data-\[state\=open\]\:pointer-events-auto:has([data-state=open]){pointer-events:auto}.has-data-\[state\=open\]\:\[mask-position\:0_0\]:has([data-state=open]){-webkit-mask-position:0 0;mask-position:0 0}.has-data-\[state\=open\]\:opacity-100:has([data-state=open]){opacity:1}.has-\[strong\]\:mb-0:has(:is(strong)){margin-bottom:calc(var(--spacing)*0)}.data-border\:border-1[data-border]{border-style:var(--tw-border-style);border-width:1px}.data-border\:border-token-border-default[data-border]{border-color:var(--border-default)}.data-disabled\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-disabled\:opacity-50[data-disabled]{opacity:.5}.data-something\:bg-red-100[data-something]{background-color:#ffa4a2}.data-submit-icon\:ps-2\.5[data-submit-icon]{padding-inline-start:calc(var(--spacing)*2.5)}.data-submit-icon\:pe-9[data-submit-icon]{padding-inline-end:calc(var(--spacing)*9)}.data-\[state\=active\]\:block[data-state=active]{display:block}.data-\[state\=active\]\:border-b-2[data-state=active]{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.data-\[state\=active\]\:border-token-link-hover[data-state=active]{border-color:var(--link-hover)}.data-\[state\=active\]\:border-token-text-secondary[data-state=active]{border-color:var(--text-secondary)}.data-\[state\=active\]\:text-token-link[data-state=active]{color:var(--link)}.data-\[state\=active\]\:text-token-text-primary[data-state=active]{color:var(--text-primary)}.data-\[state\=checked\]\:border-2[data-state=checked]{border-style:var(--tw-border-style);border-width:2px}.data-\[state\=checked\]\:border-black[data-state=checked]{border-color:#000}.data-\[state\=checked\]\:bg-black[data-state=checked]{background-color:#000}.data-\[state\=inactive\]\:cursor-pointer[data-state=inactive]{cursor:pointer}.data-\[state\=inactive\]\:text-token-text-tertiary[data-state=inactive]{color:var(--text-tertiary)}.data-\[state\=open\]\:bg-token-interactive-bg-secondary-press[data-state=open]{background-color:var(--interactive-bg-secondary-press)}.data-\[state\=unchecked\]\:m-\[1px\][data-state=unchecked]{margin:1px}.data-\[state\=unchecked\]\:border[data-state=unchecked]{border-style:var(--tw-border-style);border-width:1px}.nth-1\:bg-\[\#FFF493\]:first-child{background-color:#fff493}.nth-2\:bg-\[\#EBEBEB\]:nth-child(2){background-color:#ebebeb}.nth-3\:bg-\[\#94E6FF\]:nth-child(3){background-color:#94e6ff}.nth-4\:bg-\[\#C8F7AB\]:nth-child(4){background-color:#c8f7ab}.nth-5\:bg-\[\#B4A6FE\]:nth-child(5){background-color:#b4a6fe}@media (prefers-reduced-motion:no-preference){.motion-safe\:transition{transition-duration:var(--tw-duration,var(--default-transition-duration));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,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.motion-safe\:transition-\[color\,background-color\,border-color\,text-decoration-color\,fill\,stroke\,box-shadow\,bottom\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,box-shadow,bottom;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.motion-safe\:transition-\[mask-position\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:-webkit-mask-position,mask-position;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.motion-safe\:transition-all{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.motion-safe\:transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.motion-safe\:transition-opacity{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.motion-safe\:transition-width{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.motion-safe\:delay-300{transition-delay:.3s}.motion-safe\:duration-150{--tw-duration:.15s;transition-duration:.15s}.motion-safe\:duration-300{--tw-duration:.3s;transition-duration:.3s}.motion-safe\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.motion-safe\:\[transition-timing-function\:steps\(1\,end\)\]{transition-timing-function:step-end}.motion-safe\:\[transition-timing-function\:steps\(1\,start\)\]{transition-timing-function:step-start}.motion-safe\:\[transition\:0\.25s_transform_var\(--spring-standard\)\,0\.2s_opacity_var\(--spring-standard\)\,0\.3s_visibility_var\(--spring-standard\)\]{transition:.25s transform var(--spring-standard),.2s opacity var(--spring-standard),.3s visibility var(--spring-standard)}.motion-safe\:\[transition\:height_0\.3s_var\(--easing-common\)\]{transition:height .3s var(--easing-common)}}@media (hover:hover){@media (prefers-reduced-motion:no-preference){.group-hover\/app-icon\:motion-safe\:scale-\[0\.91\]:is(:where(.group\/app-icon):hover *){scale:.91}.group-hover\/app-icon\:motion-safe\:scale-\[1\.025\]:is(:where(.group\/app-icon):hover *){scale:1.025}.group-hover\/app-icon\:motion-safe\:shadow-\[0px_4px_12px_rgba\(0\,0\,0\,0\.08\)\]:is(:where(.group\/app-icon):hover *){--tw-shadow:0px 4px 12px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\/app-icon\:motion-safe\:\[--shadow-color\:rgba\(0\,0\,0\,0\.1\)\]:is(:where(.group\/app-icon):hover *){--shadow-color:#0000001a}}}@media not all and (min-width:480px){.max-xs\:hidden{display:none}.max-xs\:max-h-\[260px\]{max-height:260px}.max-xs\:gap-1{gap:calc(var(--spacing)*1)}.max-xs\:\[--force-hide-label\:none\]{--force-hide-label:none}}@media not all and (min-width:64rem){.max-lg\:hidden{display:none}.max-lg\:w-0\!{width:calc(var(--spacing)*0)!important}}@media not all and (min-width:48rem){.max-md\:absolute{position:absolute}.max-md\:fixed{position:fixed}.max-md\:inset-0{inset:calc(var(--spacing)*0)}.max-md\:start-0{inset-inline-start:calc(var(--spacing)*0)}.max-md\:end-0{inset-inline-end:calc(var(--spacing)*0)}.max-md\:top-0{top:calc(var(--spacing)*0)}.max-md\:z-50{z-index:50}.max-md\:line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.max-md\:flex{display:flex}.max-md\:hidden{display:none}.max-md\:h-full{height:100%}.max-md\:min-h-\[60vh\]{min-height:60vh}.max-md\:w-\[100dvw\]{width:100dvw}.max-md\:max-w-\[100dvw\]{max-width:100dvw}.max-md\:min-w-\[50vw\]{min-width:50vw}.max-md\:snap-always{scroll-snap-stop:always}.max-md\:flex-wrap{flex-wrap:wrap}.max-md\:items-center{align-items:center}.max-md\:gap-0{gap:calc(var(--spacing)*0)}.max-md\:gap-0\.5{gap:calc(var(--spacing)*.5)}.max-md\:gap-1{gap:calc(var(--spacing)*1)}.max-md\:gap-2{gap:calc(var(--spacing)*2)}.max-md\:overflow-x-auto{overflow-x:auto}.max-md\:overflow-y-auto{overflow-y:auto}.max-md\:rounded-none{border-radius:0}.max-md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-md\:bg-token-main-surface-primary{background-color:var(--main-surface-primary)}.max-md\:p-1\.5{padding:calc(var(--spacing)*1.5)}.max-md\:px-3{padding-inline:calc(var(--spacing)*3)}.max-md\:py-0{padding-block:calc(var(--spacing)*0)}.max-md\:ps-2{padding-inline-start:calc(var(--spacing)*2)}.max-md\:pt-0{padding-top:calc(var(--spacing)*0)}.max-md\:pb-6{padding-bottom:calc(var(--spacing)*6)}.max-md\:opacity-100{opacity:1}.max-md\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:40rem){.max-sm\:sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.max-sm\:mt-6{margin-top:calc(var(--spacing)*6)}.max-sm\:hidden{display:none}.max-sm\:h-6{height:calc(var(--spacing)*6)}.max-sm\:h-12{height:calc(var(--spacing)*12)}.max-sm\:h-\[80dvh\]{height:80dvh}.max-sm\:h-full{height:100%}.max-sm\:max-h-\[300px\]{max-height:300px}.max-sm\:min-h-\[84px\]{min-height:84px}.max-sm\:w-6{width:calc(var(--spacing)*6)}.max-sm\:w-12{width:calc(var(--spacing)*12)}.max-sm\:w-full{width:100%}.max-sm\:flex-1{flex:1}.max-sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}:where(.max-sm\:space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*6*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*6*var(--tw-space-x-reverse))}.max-sm\:gap-y-2{row-gap:calc(var(--spacing)*2)}.max-sm\:overflow-y-auto{overflow-y:auto}.max-sm\:bg-token-interactive-bg-secondary-hover{background-color:var(--interactive-bg-secondary-hover)}.max-sm\:bg-token-interactive-bg-secondary-selected{background-color:var(--interactive-bg-secondary-selected)}.max-sm\:p-1\.5{padding:calc(var(--spacing)*1.5)}.max-sm\:px-0{padding-inline:calc(var(--spacing)*0)}.max-sm\:px-5{padding-inline:calc(var(--spacing)*5)}.max-sm\:px-6{padding-inline:calc(var(--spacing)*6)}.max-sm\:py-4{padding-block:calc(var(--spacing)*4)}.max-sm\:pt-10{padding-top:calc(var(--spacing)*10)}.max-sm\:pb-5{padding-bottom:calc(var(--spacing)*5)}.max-sm\:pb-25{padding-bottom:calc(var(--spacing)*25)}.max-sm\:pb-40{padding-bottom:calc(var(--spacing)*40)}.max-sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.max-sm\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media (min-width:480px){.xs\:-mt-4{margin-top:calc(var(--spacing)*-4)}.xs\:max-w-40{max-width:calc(var(--spacing)*40)}.xs\:max-w-sm\!{max-width:var(--container-sm)!important}.xs\:columns-2{column-count:2}.xs\:flex-col{flex-direction:column}}@media (min-width:510px){@media not all and (min-width:768px){.min-\[510px\]\:max-\[768px\]\:mt-\[25dvh\]\!{margin-top:25dvh!important}}}@media (min-width:1200px){.min-\[1200px\]\:hidden{display:none}}@media (min-width:40rem){.sm\:absolute{position:absolute}.sm\:inset-x-4{inset-inline:calc(var(--spacing)*4)}.sm\:start-1\/2{inset-inline-start:50%}.sm\:start-6{inset-inline-start:calc(var(--spacing)*6)}.sm\:end-6{inset-inline-end:calc(var(--spacing)*6)}.sm\:top-6{top:calc(var(--spacing)*6)}.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:-mx-6{margin-inline:calc(var(--spacing)*-6)}.sm\:mx-\[-32px\]{margin-inline:-32px}.sm\:ms-8{margin-inline-start:calc(var(--spacing)*8)}.sm\:me-8{margin-inline-end:calc(var(--spacing)*8)}.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:mt-4{margin-top:calc(var(--spacing)*4)}.sm\:mt-5{margin-top:calc(var(--spacing)*5)}.sm\:mb-0{margin-bottom:calc(var(--spacing)*0)}.sm\:mb-3{margin-bottom:calc(var(--spacing)*3)}.sm\:mb-4{margin-bottom:calc(var(--spacing)*4)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:h-10{height:calc(var(--spacing)*10)}.sm\:h-32{height:calc(var(--spacing)*32)}.sm\:h-\[172px\]{height:172px}.sm\:h-full{height:100%}.sm\:h-snc-input-height{height:var(--snc-input-height)}.sm\:max-h-80{max-height:calc(var(--spacing)*80)}.sm\:w-10{width:calc(var(--spacing)*10)}.sm\:w-32{width:calc(var(--spacing)*32)}.sm\:w-\[240px\]{width:240px}.sm\:w-\[320px\]{width:320px}.sm\:w-\[384px\]{width:384px}.sm\:w-\[460px\]{width:460px}.sm\:w-\[calc\(\(100\%-0\.5rem\)\/4\)\]{width:calc(25% - .125rem)}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-auto{width:auto}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-60{max-width:calc(var(--spacing)*60)}.sm\:max-w-100{max-width:25rem}.sm\:max-w-\[300px\]{max-width:300px}.sm\:max-w-\[400px\]{max-width:400px}.sm\:max-w-\[552px\]{max-width:552px}.sm\:max-w-\[calc\(100vw-10rem\)\]{max-width:calc(100vw - 10rem)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-none{max-width:none}.sm\:max-w-xs{max-width:var(--container-xs)}.sm\:min-w-\[300px\]{min-width:300px}.sm\:min-w-\[360px\]{min-width:360px}.sm\:flex-1{flex:1}.sm\:-translate-x-1\/2{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-center{justify-content:center}.sm\:justify-start{justify-content:flex-start}.sm\:gap-0{gap:calc(var(--spacing)*0)}.sm\:gap-1{gap:calc(var(--spacing)*1)}.sm\:gap-2\.5{gap:calc(var(--spacing)*2.5)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}.sm\:gap-10{gap:calc(var(--spacing)*10)}.sm\:gap-12{gap:calc(var(--spacing)*12)}.sm\:gap-x-2\.5{column-gap:calc(var(--spacing)*2.5)}.sm\:gap-y-0{row-gap:calc(var(--spacing)*0)}.sm\:gap-y-2{row-gap:calc(var(--spacing)*2)}.sm\:gap-y-4{row-gap:calc(var(--spacing)*4)}.sm\:gap-y-5{row-gap:calc(var(--spacing)*5)}.sm\:gap-y-12{row-gap:calc(var(--spacing)*12)}.sm\:overflow-hidden{overflow:hidden}.sm\:rounded-\[28px\]{border-radius:28px}.sm\:rounded-\[30px\]{border-radius:30px}.sm\:rounded-full{border-radius:3.40282e+38px}.sm\:rounded-lg{border-radius:var(--radius-lg)}.sm\:rounded-ss-xl{border-start-start-radius:var(--radius-xl)}.sm\:rounded-se-xl{border-start-end-radius:var(--radius-xl)}.sm\:rounded-ee-xl{border-end-end-radius:var(--radius-xl)}.sm\:rounded-es-xl{border-end-start-radius:var(--radius-xl)}.sm\:rounded-t-\[30px\]{border-top-left-radius:30px;border-top-right-radius:30px}.sm\:border-none{--tw-border-style:none;border-style:none}.sm\:bg-token-main-surface-tertiary{background-color:var(--main-surface-tertiary)}.sm\:p-0{padding:calc(var(--spacing)*0)}.sm\:p-2{padding:calc(var(--spacing)*2)}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:p-8{padding:calc(var(--spacing)*8)}.sm\:p-10{padding:calc(var(--spacing)*10)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:px-10{padding-inline:calc(var(--spacing)*10)}.sm\:px-24{padding-inline:calc(var(--spacing)*24)}.sm\:px-snc-results-padding{padding-inline:var(--snc-results-padding)}.sm\:py-2\.5{padding-block:calc(var(--spacing)*2.5)}.sm\:py-3{padding-block:calc(var(--spacing)*3)}.sm\:py-6{padding-block:calc(var(--spacing)*6)}.sm\:py-10{padding-block:calc(var(--spacing)*10)}.sm\:py-12{padding-block:calc(var(--spacing)*12)}.sm\:py-14{padding-block:calc(var(--spacing)*14)}.sm\:py-24{padding-block:calc(var(--spacing)*24)}.sm\:py-28{padding-block:calc(var(--spacing)*28)}.sm\:ps-5{padding-inline-start:calc(var(--spacing)*5)}.sm\:ps-\[3\.25rem\]{padding-inline-start:3.25rem}.sm\:pt-4{padding-top:calc(var(--spacing)*4)}.sm\:pt-6{padding-top:calc(var(--spacing)*6)}.sm\:pt-8{padding-top:calc(var(--spacing)*8)}.sm\:pt-12{padding-top:calc(var(--spacing)*12)}.sm\:pt-20{padding-top:calc(var(--spacing)*20)}.sm\:pb-3{padding-bottom:calc(var(--spacing)*3)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:pb-8{padding-bottom:calc(var(--spacing)*8)}.sm\:pb-10{padding-bottom:calc(var(--spacing)*10)}.sm\:pb-20{padding-bottom:calc(var(--spacing)*20)}.sm\:text-center{text-align:center}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-token-main-surface-tertiary{color:var(--main-surface-tertiary)}.sm\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.sm\:shadow-md,.sm\:shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.sm\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}}@media (min-width:48rem){.md\:not-sr-only{clip:auto;height:auto;margin:0;overflow:visible;padding:0;position:static;white-space:normal;width:auto}.md\:absolute{position:absolute}.md\:fixed{position:fixed}.md\:relative{position:relative}.md\:static{position:static}.md\:start-0{inset-inline-start:calc(var(--spacing)*0)}.md\:start-4{inset-inline-start:calc(var(--spacing)*4)}.md\:end-0{inset-inline-end:calc(var(--spacing)*0)}.md\:end-4{inset-inline-end:calc(var(--spacing)*4)}.md\:end-6{inset-inline-end:calc(var(--spacing)*6)}.md\:top-4{top:calc(var(--spacing)*4)}.md\:top-6{top:calc(var(--spacing)*6)}.md\:top-\[22px\]{top:22px}.md\:top-header-height{top:var(--header-height)}.md\:bottom-4{bottom:calc(var(--spacing)*4)}.md\:bottom-6{bottom:calc(var(--spacing)*6)}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-start-4{grid-column-start:4}.md\:m-0{margin:calc(var(--spacing)*0)}.md\:mx-0{margin-inline:calc(var(--spacing)*0)}.md\:mx-3{margin-inline:calc(var(--spacing)*3)}.md\:mx-4{margin-inline:calc(var(--spacing)*4)}.md\:my-4{margin-block:calc(var(--spacing)*4)}.md\:ms-0{margin-inline-start:calc(var(--spacing)*0)}.md\:ms-8{margin-inline-start:calc(var(--spacing)*8)}.md\:-mt-4{margin-top:calc(var(--spacing)*-4)}.md\:mt-0{margin-top:calc(var(--spacing)*0)}.md\:mt-2{margin-top:calc(var(--spacing)*2)}.md\:mt-3{margin-top:calc(var(--spacing)*3)}.md\:mt-6{margin-top:calc(var(--spacing)*6)}.md\:mt-8{margin-top:calc(var(--spacing)*8)}.md\:mt-12{margin-top:calc(var(--spacing)*12)}.md\:mt-\[-48px\]{margin-top:-48px}.md\:mt-\[120px\]{margin-top:120px}.md\:mt-px{margin-top:1px}.md\:-mb-4{margin-bottom:calc(var(--spacing)*-4)}.md\:mb-0{margin-bottom:calc(var(--spacing)*0)}.md\:mb-8{margin-bottom:calc(var(--spacing)*8)}.md\:mb-10{margin-bottom:calc(var(--spacing)*10)}.md\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.md\:line-clamp-none{-webkit-line-clamp:unset;-webkit-box-orient:horizontal;display:block;overflow:visible}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:inline{display:inline}.md\:inline-flex{display:inline-flex}.md\:h-6{height:calc(var(--spacing)*6)}.md\:h-7{height:calc(var(--spacing)*7)}.md\:h-24{height:calc(var(--spacing)*24)}.md\:h-32{height:calc(var(--spacing)*32)}.md\:h-\[600px\]{height:600px}.md\:h-\[calc\(100\%-4rem\)\]{height:calc(100% - 4rem)}.md\:h-full{height:100%}.md\:max-h-\[80vh\]{max-height:80vh}.md\:max-h-\[360px\]{max-height:360px}.md\:max-h-\[600px\]{max-height:600px}.md\:max-h-\[calc\(100vh-300px\)\]{max-height:calc(100vh - 300px)}.md\:min-h-\[20rem\]{min-height:20rem}.md\:min-h-\[30rem\]{min-height:30rem}.md\:min-h-\[300px\]{min-height:300px}.md\:min-h-\[380px\]{min-height:380px}.md\:min-h-\[600px\]{min-height:600px}.md\:w-0{width:calc(var(--spacing)*0)}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.3333%}.md\:w-3\/5{width:60%}.md\:w-3xl{width:var(--container-3xl)}.md\:w-6{width:calc(var(--spacing)*6)}.md\:w-24{width:calc(var(--spacing)*24)}.md\:w-\[10rem\]{width:10rem}.md\:w-\[100px\]{width:100px}.md\:w-\[370px\]{width:370px}.md\:w-\[720px\]{width:720px}.md\:w-\[calc\(100\%-\.5rem\)\]{width:calc(100% - .5rem)}.md\:w-\[calc\(100\%-16rem\)\]{width:calc(100% - 16rem)}.md\:w-\[calc\(100\%_-_64px\)\]{width:calc(100% - 64px)}.md\:w-\[calc\(800px-1\.25rem\)\]{width:calc(800px - 1.25rem)}.md\:w-auto{width:auto}.md\:w-full{width:100%}.md\:w-sm{width:var(--container-sm)}.md\:max-w-3\/4{max-width:75%}.md\:max-w-3xl{max-width:var(--container-3xl)}.md\:max-w-96{max-width:calc(var(--spacing)*96)}.md\:max-w-\[10rem\]{max-width:10rem}.md\:max-w-\[50\%\]{max-width:50%}.md\:max-w-\[200px\]{max-width:200px}.md\:max-w-\[672px\]{max-width:672px}.md\:max-w-\[680px\]{max-width:680px}.md\:max-w-none{max-width:none}.md\:min-w-\[22rem\]{min-width:22rem}.md\:min-w-\[450px\]{min-width:450px}.md\:min-w-\[680px\]{min-width:680px}.md\:flex-1{flex:1}.md\:shrink{flex-shrink:1}.md\:grow-0{flex-grow:0}.md\:basis-0{flex-basis:calc(var(--spacing)*0)}.md\:basis-\[25vw\]{flex-basis:25vw}.md\:basis-\[75vw\]{flex-basis:75vw}.md\:translate-y-\[30px\]{--tw-translate-y:30px;translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:scroll-ps-8{scroll-padding-inline-start:calc(var(--spacing)*8)}.md\:columns-2{column-count:2}.md\:columns-3{column-count:3}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.md\:grid-rows-\[20px_auto_minmax\(20px\,1fr\)\]{grid-template-rows:20px auto minmax(20px,1fr)}.md\:grid-rows-\[minmax\(20px\,0\.8fr\)_auto_minmax\(20px\,1fr\)\]{grid-template-rows:minmax(20px,.8fr) auto minmax(20px,1fr)}.md\:grid-rows-\[minmax\(20px\,1fr\)_auto_20px\]{grid-template-rows:minmax(20px,1fr) auto 20px}.md\:grid-rows-\[minmax\(20px\,1fr\)_auto_minmax\(20px\,1fr\)\]{grid-template-rows:minmax(20px,1fr) auto minmax(20px,1fr)}.md\:flex-col{flex-direction:column}.md\:flex-row{flex-direction:row}.md\:flex-row-reverse{flex-direction:row-reverse}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:justify-between{justify-content:space-between}.md\:justify-center{justify-content:center}.md\:gap-0{gap:calc(var(--spacing)*0)}.md\:gap-2{gap:calc(var(--spacing)*2)}.md\:gap-3{gap:calc(var(--spacing)*3)}.md\:gap-5{gap:calc(var(--spacing)*5)}.md\:gap-8{gap:calc(var(--spacing)*8)}.md\:gap-10{gap:calc(var(--spacing)*10)}.md\:gap-16{gap:calc(var(--spacing)*16)}.md\:gap-x-2{column-gap:calc(var(--spacing)*2)}.md\:gap-x-4{column-gap:calc(var(--spacing)*4)}.md\:gap-y-1\.5{row-gap:calc(var(--spacing)*1.5)}.md\:self-end{align-self:flex-end}.md\:overflow-hidden{overflow:hidden}.md\:\[border-radius\:var\(--sheet-radius\)\]{border-radius:var(--sheet-radius)}.md\:rounded-3xl{border-radius:var(--radius-3xl)}.md\:rounded-lg{border-radius:var(--radius-lg)}.md\:rounded-none{border-radius:0}.md\:border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.md\:border-e{border-inline-end-width:1px}.md\:border-e,.md\:border-e-0{border-inline-end-style:var(--tw-border-style)}.md\:border-e-0{border-inline-end-width:0}.md\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.md\:border-b{border-bottom-width:1px}.md\:border-b,.md\:border-b-2{border-bottom-style:var(--tw-border-style)}.md\:border-b-2{border-bottom-width:2px}.md\:border-gray-100{border-color:#ececec}.md\:border-transparent{border-color:#0000}.md\:bg-transparent{background-color:#0000}.md\:bg-transparent\!{background-color:#0000!important}.md\:bg-white\/20{background-color:#fff3}.md\:bg-vert-light-gradient{background-image:linear-gradient(#fff0 13.94%,#fff 54.73%)}.md\:p-0{padding:calc(var(--spacing)*0)}.md\:p-3{padding:calc(var(--spacing)*3)}.md\:p-4{padding:calc(var(--spacing)*4)}.md\:p-6{padding:calc(var(--spacing)*6)}.md\:p-24{padding:calc(var(--spacing)*24)}.md\:px-0{padding-inline:calc(var(--spacing)*0)}.md\:px-2{padding-inline:calc(var(--spacing)*2)}.md\:px-3{padding-inline:calc(var(--spacing)*3)}.md\:px-5{padding-inline:calc(var(--spacing)*5)}.md\:px-6{padding-inline:calc(var(--spacing)*6)}.md\:px-8{padding-inline:calc(var(--spacing)*8)}.md\:px-12{padding-inline:calc(var(--spacing)*12)}.md\:px-16{padding-inline:calc(var(--spacing)*16)}.md\:px-\[60px\]{padding-inline:60px}.md\:py-0{padding-block:calc(var(--spacing)*0)}.md\:py-2{padding-block:calc(var(--spacing)*2)}.md\:py-3{padding-block:calc(var(--spacing)*3)}.md\:py-4{padding-block:calc(var(--spacing)*4)}.md\:py-20{padding-block:calc(var(--spacing)*20)}.md\:py-32{padding-block:calc(var(--spacing)*32)}.md\:py-\[22px\]{padding-block:22px}.md\:ps-2{padding-inline-start:calc(var(--spacing)*2)}.md\:ps-3{padding-inline-start:calc(var(--spacing)*3)}.md\:ps-4{padding-inline-start:calc(var(--spacing)*4)}.md\:ps-8{padding-inline-start:calc(var(--spacing)*8)}.md\:pe-0{padding-inline-end:calc(var(--spacing)*0)}.md\:pe-3{padding-inline-end:calc(var(--spacing)*3)}.md\:pe-4{padding-inline-end:calc(var(--spacing)*4)}.md\:pe-8{padding-inline-end:calc(var(--spacing)*8)}.md\:pe-12{padding-inline-end:calc(var(--spacing)*12)}.md\:pt-0{padding-top:calc(var(--spacing)*0)}.md\:pt-0\!{padding-top:calc(var(--spacing)*0)!important}.md\:pt-2{padding-top:calc(var(--spacing)*2)}.md\:pt-\[3px\]{padding-top:3px}.md\:pt-\[4\.5rem\]{padding-top:4.5rem}.md\:pb-0{padding-bottom:calc(var(--spacing)*0)}.md\:pb-2{padding-bottom:calc(var(--spacing)*2)}.md\:pb-5{padding-bottom:calc(var(--spacing)*5)}.md\:pb-6{padding-bottom:calc(var(--spacing)*6)}.md\:pb-10{padding-bottom:calc(var(--spacing)*10)}[dir=ltr] .md\:pl-2{padding-left:calc(var(--spacing)*2)}[dir=rtl] .md\:pl-2{padding-right:calc(var(--spacing)*2)}[dir=ltr] .md\:pl-4{padding-left:calc(var(--spacing)*4)}[dir=rtl] .md\:pl-4{padding-right:calc(var(--spacing)*4)}.md\:text-justify{text-align:justify}.md\:text-start{text-align:start}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-\[32px\]{font-size:32px}.md\:text-\[40px\]{font-size:40px}.md\:text-\[44px\]{font-size:44px}.md\:leading-8{--tw-leading:calc(var(--spacing)*8);line-height:calc(var(--spacing)*8)}.md\:leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.md\:text-pretty{text-wrap:pretty}.md\:text-token-text-primary{color:var(--text-primary)}.md\:text-token-text-tertiary{color:var(--text-tertiary)}.md\:opacity-100{opacity:1}.md\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:\[--gutter-min-height\:2\.25rem\]{--gutter-min-height:2.25rem}.md\:after\:opacity-0:after{content:var(--tw-content);opacity:0}.md\:after\:opacity-100:after{content:var(--tw-content);opacity:1}.md\:first\:ms-0:first-child{margin-inline-start:calc(var(--spacing)*0)}.md\:first\:rounded-ss-xl:first-child{border-start-start-radius:var(--radius-xl)}.md\:first\:rounded-es-xl:first-child{border-end-start-radius:var(--radius-xl)}.md\:last\:me-0:last-child{margin-inline-end:calc(var(--spacing)*0)}.md\:last\:mb-6:last-child{margin-bottom:calc(var(--spacing)*6)}.md\:last\:rounded-se-xl:last-child{border-start-end-radius:var(--radius-xl)}.md\:last\:rounded-ee-xl:last-child{border-end-end-radius:var(--radius-xl)}.md\:last\:border-e:last-child{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}@media (hover:hover){.md\:hover\:bg-gray-50:hover{background-color:#f9f9f9}}}@media (min-width:64rem){.lg\:absolute{position:absolute}.lg\:-start-5{inset-inline-start:calc(var(--spacing)*-5)}.lg\:top-1{top:calc(var(--spacing)*1)}.lg\:order-3{order:3}.lg\:order-last{order:9999}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-start-2{grid-column-start:2}.lg\:mx-auto{margin-inline:auto}.lg\:mb-8{margin-bottom:calc(var(--spacing)*8)}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:h-36{height:calc(var(--spacing)*36)}.lg\:min-h-full{min-height:100%}.lg\:w-\[53\%\]{width:53%}.lg\:w-\[320px\]{width:320px}.lg\:w-auto{width:auto}.lg\:w-md{width:var(--container-md)}.lg\:max-w-1\/2{max-width:50%}.lg\:max-w-2xl{max-width:var(--container-2xl)}.lg\:max-w-52{max-width:calc(var(--spacing)*52)}.lg\:max-w-\[40rem\]{max-width:40rem}.lg\:max-w-\[796px\]{max-width:796px}.lg\:max-w-\[800px\]{max-width:800px}.lg\:max-w-md{max-width:var(--container-md)}.lg\:flex-1{flex:1}.lg\:grow{flex-grow:1}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[60\%_40\%\]{grid-template-columns:60% 40%}.lg\:flex-row{flex-direction:row}.lg\:flex-nowrap{flex-wrap:nowrap}.lg\:items-end{align-items:flex-end}.lg\:items-start{align-items:flex-start}.lg\:justify-center{justify-content:center}.lg\:justify-end{justify-content:flex-end}.lg\:gap-0{gap:calc(var(--spacing)*0)}.lg\:gap-6{gap:calc(var(--spacing)*6)}.lg\:gap-20{gap:calc(var(--spacing)*20)}.lg\:gap-x-3{column-gap:calc(var(--spacing)*3)}.lg\:gap-x-6{column-gap:calc(var(--spacing)*6)}.lg\:gap-y-2\.5{row-gap:calc(var(--spacing)*2.5)}.lg\:border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.lg\:border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:px-0{padding-inline:calc(var(--spacing)*0)}.lg\:px-2{padding-inline:calc(var(--spacing)*2)}.lg\:px-3{padding-inline:calc(var(--spacing)*3)}.lg\:px-4{padding-inline:calc(var(--spacing)*4)}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}.lg\:px-10{padding-inline:calc(var(--spacing)*10)}.lg\:px-16{padding-inline:calc(var(--spacing)*16)}.lg\:px-24{padding-inline:calc(var(--spacing)*24)}.lg\:py-3{padding-block:calc(var(--spacing)*3)}.lg\:py-6{padding-block:calc(var(--spacing)*6)}.lg\:py-24{padding-block:calc(var(--spacing)*24)}.lg\:ps-4{padding-inline-start:calc(var(--spacing)*4)}.lg\:ps-10{padding-inline-start:calc(var(--spacing)*10)}.lg\:ps-20{padding-inline-start:calc(var(--spacing)*20)}.lg\:pe-4{padding-inline-end:calc(var(--spacing)*4)}.lg\:pe-20{padding-inline-end:calc(var(--spacing)*20)}.lg\:pt-8{padding-top:calc(var(--spacing)*8)}.lg\:pt-12{padding-top:calc(var(--spacing)*12)}.lg\:pb-12{padding-bottom:calc(var(--spacing)*12)}.lg\:text-start{text-align:start}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.lg\:text-\[36px\]{font-size:36px}.lg\:shadow-\[15px_0_30px_0_rgba\(0\,0\,0\,0\.18\)\]{--tw-shadow:15px 0 30px 0 var(--tw-shadow-color,#0000002e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media (min-width:80rem){.xl\:min-h-44{min-height:calc(var(--spacing)*44)}.xl\:max-w-3xl{max-width:var(--container-3xl)}.xl\:max-w-4xl{max-width:var(--container-4xl)}.xl\:max-w-64{max-width:calc(var(--spacing)*64)}.xl\:max-w-\[48rem\]{max-width:48rem}.xl\:max-w-xs{max-width:var(--container-xs)}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:gap-2{gap:calc(var(--spacing)*2)}.xl\:gap-x-2\.5{column-gap:calc(var(--spacing)*2.5)}.xl\:gap-y-2\.5{row-gap:calc(var(--spacing)*2.5)}.xl\:px-2{padding-inline:calc(var(--spacing)*2)}.xl\:px-3{padding-inline:calc(var(--spacing)*3)}.xl\:px-24{padding-inline:calc(var(--spacing)*24)}.xl\:pt-10{padding-top:calc(var(--spacing)*10)}.xl\:text-\[14px\]{font-size:14px}}@media (min-width:96rem){.\32xl\:mb-8{margin-bottom:calc(var(--spacing)*8)}.\32xl\:scroll-ps-\[calc\(\(100\%_-_96rem\)_\/_2_\+_32px\)\]{scroll-padding-inline-start:calc(50% - 48rem + 32px)}.\32xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.\32xl\:ps-\[calc\(\(100\%_-_96rem\)_\/_2_\+_32px\)\]{padding-inline-start:calc(50% - 48rem + 32px)}.\32xl\:pt-8{padding-top:calc(var(--spacing)*8)}.\32xl\:pt-12{padding-top:calc(var(--spacing)*12)}.\32xl\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media (min-height:700px){.tall\:sticky{position:sticky}.tall\:top-header-height{top:var(--header-height)}.tall\:z-30{z-index:30}.tall\:group-data-scrolled-from-top\/scrollport\:shadow-\(--sharp-edge-top-shadow\):is(:where(.group\/scrollport)[data-scrolled-from-top] *){--tw-shadow:var(--sharp-edge-top-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-height:700px){.short\:group-data-scrolled-from-top\/scrollport\:shadow-\(--sharp-edge-top-shadow\):is(:where(.group\/scrollport)[data-scrolled-from-top] *){--tw-shadow:var(--sharp-edge-top-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@container thread not (min-width:521px){.\@max-\[521px\]\/thread\:ms-1{margin-inline-start:calc(var(--spacing)*1)}}@container not (min-width:48rem){.\@max-3xl\:-top-2{top:calc(var(--spacing)*-2)}}@container thread not (min-width:31.9rem){.\@max-\[31\.9rem\]\/thread\:grow{flex-grow:1}.\@max-\[31\.9rem\]\/thread\:justify-center{justify-content:center}}@container (min-width:0){.\@\[0px\]\:hidden{display:none}}@container (min-width:150px){.\@\[150px\]\:block{display:block}}@container composer (min-width:300px){.\@\[300px\]\/composer\:flex{display:flex}}@container composer (min-width:310px){.\@\[310px\]\/composer\:flex{display:flex}}@container composer (min-width:400px){.\@\[400px\]\/composer\:flex{display:flex}}@container composer (min-width:800px){.\@\[800px\]\/composer\:flex{display:flex}}@container thread (min-width:32rem){.\@lg\/thread\:mt-\[calc\(30dvh\+25px\)\]{margin-top:calc(30dvh + 25px)}.\@lg\/thread\:block{display:block}.\@lg\/thread\:hidden{display:none}.\@lg\/thread\:grow{flex-grow:1}.\@lg\/thread\:items-end{align-items:flex-end}}@container (min-width:34rem){.\@\[34rem\]\:\[--thread-content-max-width\:40rem\]{--thread-content-max-width:40rem}}@container (min-width:37rem){.\@\[37rem\]\:\[--thread-content-margin\:--spacing\(6\)\]{--thread-content-margin:calc(var(--spacing)*6)}}@container (min-width:42rem){.\@2xl\:flex-row{flex-direction:row}.\@2xl\:justify-between{justify-content:space-between}.\@2xl\:text-start{text-align:start}}@container (min-width:48rem){.\@3xl\:-start-3{inset-inline-start:calc(var(--spacing)*-3)}.\@3xl\:-top-4{top:calc(var(--spacing)*-4)}.\@3xl\:mx-\[calc\(--spacing\(2\)-1px\)\]{margin-inline:calc(var(--spacing)*2 - 1px)}}@container thread (min-width:64rem){.\@5xl\/thread\:w-61{width:calc(var(--spacing)*61)}}@container (min-width:64rem){.\@\[64rem\]\:\[--thread-content-max-width\:48rem\]{--thread-content-max-width:48rem}}@container (min-width:72rem){.\@\[72rem\]\:\[--thread-content-margin\:--spacing\(16\)\]{--thread-content-margin:calc(var(--spacing)*16)}}@container thread (min-width:84rem){.\@\[84rem\]\/thread\:absolute{position:absolute}.\@\[84rem\]\/thread\:start-0{inset-inline-start:calc(var(--spacing)*0)}.\@\[84rem\]\/thread\:end-0{inset-inline-end:calc(var(--spacing)*0)}.\@\[84rem\]\/thread\:bg-token-main-surface-primary{background-color:var(--main-surface-primary)}.\@\[84rem\]\/thread\:bg-transparent{background-color:#0000}.\@\[84rem\]\/thread\:pt-\(--header-height\){padding-top:var(--header-height)}.\@\[84rem\]\/thread\:shadow-none\!{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.\@\[84rem\]\/thread\:\[box-shadow\:var\(--sharp-edge-top-shadow\)\]\!{box-shadow:var(--sharp-edge-top-shadow)!important}}.ltr\:me-auto:where(:dir(ltr),[dir=ltr],[dir=ltr] *){margin-inline-end:auto}.ltr\:-translate-x-1\/2:where(:dir(ltr),[dir=ltr],[dir=ltr] *){--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.ltr\:-rotate-90:where(:dir(ltr),[dir=ltr],[dir=ltr] *){rotate:-90deg}.rtl\:ms-auto:where(:dir(rtl),[dir=rtl],[dir=rtl] *){margin-inline-start:auto}.rtl\:translate-x-1\/2:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.rtl\:rotate-90:where(:dir(rtl),[dir=rtl],[dir=rtl] *){rotate:90deg}.rtl\:cursor-e-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:e-resize}.rtl\:cursor-w-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:w-resize}.rtl\:items-start:where(:dir(rtl),[dir=rtl],[dir=rtl] *){align-items:flex-start}.rtl\:\[--dir\:-1\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--dir:-1}:where(.dark\:divide-token-border-heavy:is(.dark *)>:not(:last-child)){border-color:var(--border-heavy)}.dark\:border:is(.dark *){border-style:var(--tw-border-style);border-width:1px}.dark\:border-e:is(.dark *){border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.dark\:border-b:is(.dark *){border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.dark\:border-none:is(.dark *){--tw-border-style:none;border-style:none}.dark\:border-\[\#0088FF\]:is(.dark *){border-color:#08f}.dark\:border-\[\#252525\]:is(.dark *){border-color:#252525}.dark\:border-\[\#FF9E6C\]:is(.dark *){border-color:#ff9e6c}.dark\:border-\[rgba\(255\,255\,255\,0\.1\)\]:is(.dark *){border-color:#ffffff1a}.dark\:border-black\/20:is(.dark *){border-color:oklab(0 none none/.2)}.dark\:border-gray-300:is(.dark *){border-color:#cdcdcd}.dark\:border-gray-500:is(.dark *){border-color:#9b9b9b}.dark\:border-gray-600:is(.dark *){border-color:#676767}.dark\:border-gray-700:is(.dark *){border-color:#424242}.dark\:border-gray-800:is(.dark *){border-color:#212121}.dark\:border-token-bg-tertiary:is(.dark *){border-color:var(--bg-tertiary)}.dark\:border-token-border-default:is(.dark *){border-color:var(--border-default)}.dark\:border-token-border-heavy:is(.dark *){border-color:var(--border-heavy)}.dark\:border-token-border-light:is(.dark *){border-color:var(--border-light)}.dark\:border-token-border-medium:is(.dark *){border-color:var(--border-medium)}.dark\:border-token-border-medium\!:is(.dark *){border-color:var(--border-medium)!important}.dark\:border-token-border-xheavy:is(.dark *){border-color:var(--border-xheavy)}.dark\:border-token-border-xlight:is(.dark *){border-color:var(--border-xlight)}.dark\:border-token-main-surface-secondary:is(.dark *){border-color:var(--main-surface-secondary)}.dark\:border-transparent:is(.dark *){border-color:#0000}.dark\:border-white:is(.dark *){border-color:#fff}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}.dark\:border-white\/20:is(.dark *){border-color:#fff3}.dark\:border-x-token-border-xheavy:is(.dark *){border-inline-color:var(--border-xheavy)}.dark\:border-b-token-border-heavy:is(.dark *){border-bottom-color:var(--border-heavy)}.dark\:border-b-white:is(.dark *){border-bottom-color:#fff}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.dark\:prose-invert:is(.dark *) :where(pre):not(:where([class~=not-prose] *)) code{background-color:#0000}.dark\:prose-invert:is(.dark *) :where(code):not(:where([class~=not-prose] *)){background-color:var(--gray-700)}.dark\:bg-\(--gray-800\):is(.dark *){background-color:var(--gray-800)}.dark\:bg-\[\#1E1E1E\]:is(.dark *){background-color:#1e1e1e}.dark\:bg-\[\#2A4A6D\]:is(.dark *){background-color:#2a4a6d}.dark\:bg-\[\#6BBD6720\]:is(.dark *){background-color:#6bbd6720}.dark\:bg-\[\#64572A\]:is(.dark *){background-color:#64572a}.dark\:bg-\[\#171717\]:is(.dark *){background-color:#171717}.dark\:bg-\[\#232323\]:is(.dark *){background-color:#232323}.dark\:bg-\[\#252525\]:is(.dark *){background-color:#252525}.dark\:bg-\[\#303030\]:is(.dark *){background-color:#303030}.dark\:bg-\[\#303030\]\!:is(.dark *){background-color:#303030!important}.dark\:bg-\[\#353535\]:is(.dark *){background-color:#353535}.dark\:bg-\[\#373669\]:is(.dark *){background-color:#373669}.dark\:bg-\[\#393939\]:is(.dark *){background-color:#393939}.dark\:bg-\[\#444444\]:is(.dark *){background-color:#444}.dark\:bg-\[\#B2B2B220\]:is(.dark *){background-color:#b2b2b220}.dark\:bg-\[\#C26FFD20\]:is(.dark *){background-color:#c26ffd20}.dark\:bg-\[\#EA8444\]:is(.dark *){background-color:#ea8444}.dark\:bg-\[\#FD756F20\]:is(.dark *){background-color:#fd756f20}.dark\:bg-\[\#FFFFFF29\]:is(.dark *){background-color:#ffffff29}.dark\:bg-\[rgb\(51\,36\,35\)\]\!:is(.dark *){background-color:#332423!important}.dark\:bg-\[rgba\(33\,33\,33\,1\)\]:is(.dark *){background-color:#212121}.dark\:bg-\[rgba\(48\,48\,48\,0\.8\)\]:is(.dark *){background-color:#303030cc}.dark\:bg-\[rgba\(202\,58\,49\,0\.16\)\]:is(.dark *){background-color:#ca3a3129}.dark\:bg-\[rgba\(255\,255\,255\,0\.04\)\]:is(.dark *){background-color:#ffffff0a}.dark\:bg-\[rgba\(255\,255\,255\,0\.05\)\]:is(.dark *){background-color:#ffffff0d}.dark\:bg-black:is(.dark *){background-color:#000}.dark\:bg-black\/10:is(.dark *){background-color:oklab(0 none none/.1)}.dark\:bg-black\/40:is(.dark *){background-color:oklab(0 none none/.4)}.dark\:bg-black\/50:is(.dark *){background-color:oklab(0 none none/.5)}.dark\:bg-black\/80:is(.dark *){background-color:oklab(0 none none/.8)}.dark\:bg-black\/85:is(.dark *){background-color:oklab(0 none none/.85)}.dark\:bg-blue-500:is(.dark *){background-color:#0169cc}.dark\:bg-blue-900:is(.dark *){background-color:#00284d}.dark\:bg-gray-50:is(.dark *){background-color:#f9f9f9}.dark\:bg-gray-50\/5:is(.dark *){background-color:#f9f9f90d}.dark\:bg-gray-100:is(.dark *){background-color:#ececec}.dark\:bg-gray-600:is(.dark *){background-color:#676767}.dark\:bg-gray-700:is(.dark *){background-color:#424242}.dark\:bg-gray-700\/50:is(.dark *){background-color:#42424280}.dark\:bg-gray-700\/70:is(.dark *){background-color:#424242b3}.dark\:bg-gray-700\/75:is(.dark *){background-color:#424242bf}.dark\:bg-gray-750:is(.dark *){background-color:#2f2f2f}.dark\:bg-gray-800:is(.dark *){background-color:#212121}.dark\:bg-gray-800\/70:is(.dark *){background-color:#212121b3}.dark\:bg-gray-900:is(.dark *){background-color:#171717}.dark\:bg-gray-950:is(.dark *){background-color:#0d0d0d}.dark\:bg-green-600:is(.dark *){background-color:#008635}.dark\:bg-green-600\/30:is(.dark *){background-color:#0086354d}.dark\:bg-green-800:is(.dark *){background-color:#004f1f}.dark\:bg-green-900:is(.dark *){background-color:#003716}.dark\:bg-orange-800:is(.dark *){background-color:#6d2e0f}.dark\:bg-orange-900:is(.dark *){background-color:#4a2206}.dark\:bg-pink-900:is(.dark *){background-color:#4d1f34}.dark\:bg-red-500\/10:is(.dark *){background-color:#e02e2a1a}.dark\:bg-red-600:is(.dark *){background-color:#ba2623}.dark\:bg-red-600\/30:is(.dark *){background-color:#ba26234d}.dark\:bg-red-800:is(.dark *){background-color:#6e1615}.dark\:bg-red-900:is(.dark *){background-color:#4d100e}.dark\:bg-token-bg-elevated-secondary:is(.dark *){background-color:var(--bg-elevated-secondary)}.dark\:bg-token-bg-secondary:is(.dark *){background-color:var(--bg-secondary)}.dark\:bg-token-border-default:is(.dark *){background-color:var(--border-default)}.dark\:bg-token-border-heavy:is(.dark *){background-color:var(--border-heavy)}.dark\:bg-token-main-surface-primary:is(.dark *){background-color:var(--main-surface-primary)}.dark\:bg-token-main-surface-primary-inverse:is(.dark *){background-color:var(--main-surface-primary-inverse)}.dark\:bg-token-main-surface-secondary:is(.dark *){background-color:var(--main-surface-secondary)}.dark\:bg-token-main-surface-tertiary:is(.dark *){background-color:var(--main-surface-tertiary)}.dark\:bg-token-surface-error\/5:is(.dark *){background-color:rgb(var(--surface-error)/1)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-token-surface-error\/5:is(.dark *){background-color:color-mix(in oklab,rgb(var(--surface-error)/1) 5%,transparent)}}.dark\:bg-token-text-tertiary:is(.dark *){background-color:var(--text-tertiary)}.dark\:bg-transparent:is(.dark *){background-color:#0000}.dark\:bg-white:is(.dark *){background-color:#fff}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}.dark\:bg-white\/20:is(.dark *){background-color:#fff3}.dark\:bg-yellow-400:is(.dark *){background-color:#ffc300}.dark\:bg-yellow-400\/30:is(.dark *){background-color:#ffc3004d}.dark\:bg-yellow-400\/50:is(.dark *){background-color:#ffc30080}.dark\:bg-yellow-500\/50:is(.dark *){background-color:#e0ac0080}.dark\:bg-yellow-500\/70:is(.dark *){background-color:#e0ac00b3}.dark\:bg-yellow-600:is(.dark *){background-color:#ba8e00}.dark\:bg-yellow-900:is(.dark *){background-color:#4d3b00}.dark\:bg-linear-to-t:is(.dark *){--tw-gradient-position:to top;background-image:linear-gradient(var(--tw-gradient-stops))}@supports (background-image:linear-gradient(in lab,red,red)){.dark\:bg-linear-to-t:is(.dark *){--tw-gradient-position:to top in oklab}}.dark\:from-\[\#212121\]:is(.dark *){--tw-gradient-from:#212121;--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))}.dark\:from-black:is(.dark *){--tw-gradient-from:#000;--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))}.dark\:from-gray-700:is(.dark *){--tw-gradient-from:#424242;--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))}.dark\:from-gray-800:is(.dark *){--tw-gradient-from:#212121;--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))}.dark\:from-token-main-surface-primary:is(.dark *){--tw-gradient-from:var(--main-surface-primary);--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))}.dark\:via-\[\#212121\]\/60:is(.dark *){--tw-gradient-via:oklab(24.7759% 0 0/.6);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:via-gray-800:is(.dark *){--tw-gradient-via:#212121;--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:via-token-bg-primary:is(.dark *){--tw-gradient-via:var(--bg-primary);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:via-white\/5:is(.dark *){--tw-gradient-via:oklab(100% 0 5.96046e-8/.05);--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);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:to-gray-700:is(.dark *){--tw-gradient-to:#424242;--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))}.dark\:to-transparent:is(.dark *){--tw-gradient-to:transparent;--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))}.dark\:to-white\/15:is(.dark *){--tw-gradient-to:oklab(100% 0 5.96046e-8/.15);--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))}.dark\:stroke-\[rgba\(0\,0\,0\,0\.32\)\]:is(.dark *){stroke:#00000052}.dark\:stroke-\[rgba\(255\,255\,255\,0\.4\)\]:is(.dark *){stroke:#fff6}.dark\:stroke-brand-purple\/50:is(.dark *){stroke:#ab68ff80}.dark\:stroke-white\/10:is(.dark *){stroke:#ffffff1a}.dark\:text-\[\#6BBD67\]:is(.dark *){color:#6bbd67}.dark\:text-\[\#48AAFF\]:is(.dark *){color:#48aaff}.dark\:text-\[\#B2B2B2\]:is(.dark *){color:#b2b2b2}.dark\:text-\[\#C4C4C4\]:is(.dark *){color:#c4c4c4}.dark\:text-\[\#C26FFD\]:is(.dark *){color:#c26ffd}.dark\:text-\[\#D292FF\]:is(.dark *){color:#d292ff}.dark\:text-\[\#DC2626\]:is(.dark *){color:#dc2626}.dark\:text-\[\#DCDBF6\]:is(.dark *){color:#dcdbf6}.dark\:text-\[\#FD756F\]:is(.dark *){color:#fd756f}.dark\:text-\[\#FF9E6C\]:is(.dark *){color:#ff9e6c}.dark\:text-\[rgba\(255\,255\,255\,0\.7\)\]:is(.dark *){color:#ffffffb3}.dark\:text-\[var\(--text-secondary\)\]:is(.dark *){color:var(--text-secondary)}.dark\:text-black:is(.dark *){color:#000}.dark\:text-blue-75:is(.dark *){color:#cce6ff}.dark\:text-blue-200:is(.dark *){color:#66b5ff}.dark\:text-blue-400:is(.dark *){color:#0285ff}.dark\:text-brand-purple-600:is(.dark *){color:#715fde}.dark\:text-gray-100:is(.dark *){color:#ececec}.dark\:text-gray-200:is(.dark *){color:#e3e3e3}.dark\:text-gray-300:is(.dark *){color:#cdcdcd}.dark\:text-gray-400:is(.dark *){color:#b4b4b4}.dark\:text-gray-500:is(.dark *){color:#9b9b9b}.dark\:text-gray-700:is(.dark *){color:#424242}.dark\:text-gray-800:is(.dark *){color:#212121}.dark\:text-green-200:is(.dark *){color:#66d492}.dark\:text-orange-200:is(.dark *){color:#ff9e6c}.dark\:text-pink-200:is(.dark *){color:#ffa3ce}.dark\:text-red-200:is(.dark *){color:#ff8583}.dark\:text-token-main-surface-tertiary:is(.dark *){color:var(--main-surface-tertiary)}.dark\:text-token-text-primary:is(.dark *){color:var(--text-primary)}.dark\:text-token-text-secondary:is(.dark *){color:var(--text-secondary)}.dark\:text-token-text-tertiary:is(.dark *){color:var(--text-tertiary)}.dark\:text-white:is(.dark *){color:#fff}.dark\:text-white\/30:is(.dark *){color:#ffffff4d}.dark\:text-yellow-100:is(.dark *){color:#ffe48c}.dark\:opacity-20:is(.dark *){opacity:.2}.dark\:opacity-60:is(.dark *){opacity:.6}.dark\:shadow-\[0_-4px_32px_rgba\(0\,0\,0\,0\.12\)\]:is(.dark *){--tw-shadow:0 -4px 32px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-\[0_10px_20px_-6px_rgb\(20_20_20_\/_0\.5\)\,0_0_1px_rgb\(255_255_255_\/_0\.7\)\]:is(.dark *),.dark\:shadow-\[0_10px_20px_-6px_rgb\(20_20_20_\/_0\.5\)\,_0_0_1px_rgb\(255_255_255_\/_0\.7\)\]:is(.dark *){--tw-shadow:0 10px 20px -6px var(--tw-shadow-color,#14141480),0 0 1px var(--tw-shadow-color,#ffffffb3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-\[0_10px_20px_-6px_rgb\(20_20_20_\/_0\.5\)\,inset_0_0_1px_rgb\(255_255_255_\/_0\.3\)\]:is(.dark *){--tw-shadow:0 10px 20px -6px var(--tw-shadow-color,#14141480),inset 0 0 1px var(--tw-shadow-color,#ffffff4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-\[0_12px_32px_-12px_rgb\(0_0_0_\/_1\)\,inset_0_0_1px_rgb\(255_255_255_\/_0\.3\)\]:is(.dark *){--tw-shadow:0 12px 32px -12px var(--tw-shadow-color,#000),inset 0 0 1px var(--tw-shadow-color,#ffffff4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-\[0_12px_32px_-12px_rgb\(20_20_20_\/_0\.5\)\,_0_0_1px_rgb\(255_255_255_\/_1\)\]:is(.dark *){--tw-shadow:0 12px 32px -12px var(--tw-shadow-color,#14141480),0 0 1px var(--tw-shadow-color,#fff);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-\[0_32px_48px_rgba\(0\,0\,0\,0\.175\)\,_0_0_1px_rgba\(255\,255\,255\,0\.4\)\]:is(.dark *){--tw-shadow:0 32px 48px var(--tw-shadow-color,#0000002d),0 0 1px var(--tw-shadow-color,#fff6);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-\[inset_0_0_0_1px_rgba\(255\,255\,255\,0\.1\)\]:is(.dark *){--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,#ffffff1a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-md:is(.dark *){--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-none:is(.dark *){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:shadow-none\!:is(.dark *){--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.dark\:hue-rotate-180:is(.dark *){--tw-hue-rotate:hue-rotate(180deg);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.dark\:invert:is(.dark *){--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.dark\:backdrop-blur-lg:is(.dark *){--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.dark\:\[--right-bg\:black\]:is(.dark *){--right-bg:#000}@media (hover:hover){.dark\:group-hover\:border-token-text-primary:is(.dark *):is(:where(.group):hover *){border-color:var(--text-primary)}.dark\:group-hover\/icon\:bg-gray-600:is(.dark *):is(:where(.group\/icon):hover *){background-color:#676767}.dark\:group-hover\/row\:bg-gray-700:is(.dark *):is(:where(.group\/row):hover *){background-color:#424242}}.dark\:before\:bg-black\/50:is(.dark *):before{background-color:oklab(0 none none/.5);content:var(--tw-content)}.dark\:before\:bg-gray-750\/50:is(.dark *):before{background-color:#2f2f2f80;content:var(--tw-content)}.dark\:after\:bg-\[Highlight\]:is(.dark *):after{background-color:highlight;content:var(--tw-content)}.dark\:after\:invert:is(.dark *):after{--tw-invert:invert(100%);content:var(--tw-content);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.dark\:focus-within\:border-token-border-xheavy:is(.dark *):focus-within{border-color:var(--border-xheavy)}.dark\:focus-within\:ring-0:is(.dark *):focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.dark\:hover\:border-gray-800:is(.dark *):hover{border-color:#212121}.dark\:hover\:bg-\[\#1A416A\]:is(.dark *):hover{background-color:#1a416a}.dark\:hover\:bg-\[\#414071\]:is(.dark *):hover{background-color:#414071}.dark\:hover\:bg-\[rgba\(255\,255\,255\,0\.1\)\]:is(.dark *):hover{background-color:#ffffff1a}.dark\:hover\:bg-gray-500\/10:is(.dark *):hover{background-color:#9b9b9b1a}.dark\:hover\:bg-gray-600:is(.dark *):hover{background-color:#676767}.dark\:hover\:bg-gray-700:is(.dark *):hover{background-color:#424242}.dark\:hover\:bg-red-500\/15:is(.dark *):hover{background-color:#e02e2a26}.dark\:hover\:bg-token-bg-primary:is(.dark *):hover{background-color:var(--bg-primary)}.dark\:hover\:bg-token-bg-secondary:is(.dark *):hover{background-color:var(--bg-secondary)}.dark\:hover\:bg-token-bg-tertiary:is(.dark *):hover{background-color:var(--bg-tertiary)}.dark\:hover\:bg-token-main-surface-secondary:is(.dark *):hover{background-color:var(--main-surface-secondary)}.dark\:hover\:bg-token-main-surface-tertiary:is(.dark *):hover{background-color:var(--main-surface-tertiary)}.dark\:hover\:bg-token-text-primary:is(.dark *):hover{background-color:var(--text-primary)}.dark\:hover\:bg-token-text-tertiary:is(.dark *):hover{background-color:var(--text-tertiary)}.dark\:hover\:bg-transparent:is(.dark *):hover{background-color:#0000}.dark\:hover\:bg-white:is(.dark *):hover{background-color:#fff}.dark\:hover\:bg-white\/5:is(.dark *):hover{background-color:#ffffff0d}.dark\:hover\:bg-white\/10:is(.dark *):hover{background-color:#ffffff1a}.dark\:hover\:bg-white\/10\!:is(.dark *):hover{background-color:#ffffff1a!important}.dark\:hover\:bg-white\/20:is(.dark *):hover{background-color:#fff3}.hover\:dark\:bg-\[\#FFFFFF3D\]:hover:is(.dark *){background-color:#ffffff3d}.hover\:dark\:bg-gray-100\/10:hover:is(.dark *){background-color:#ececec1a}.dark\:hover\:text-black:is(.dark *):hover{color:#000}.dark\:hover\:text-gray-100:is(.dark *):hover{color:#ececec}.dark\:hover\:text-token-main-surface-tertiary:is(.dark *):hover{color:var(--main-surface-tertiary)}.dark\:hover\:opacity-100:is(.dark *):hover{opacity:1}}.dark\:focus\:border-white:is(.dark *):focus{border-color:#fff}.dark\:focus\:ring-white:is(.dark *):focus{--tw-ring-color:#fff}.dark\:focus-visible\:outline-white:is(.dark *):focus-visible{outline-color:#fff}.dark\:active\:bg-gray-600:is(.dark *):active{background-color:#676767}.dark\:active\:bg-red-500\/20:is(.dark *):active{background-color:#e02e2a33}.dark\:active\:bg-white\/10:is(.dark *):active{background-color:#ffffff1a}@media (hover:hover){.dark\:enabled\:hover\:bg-white\/10:is(.dark *):enabled:hover{background-color:#ffffff1a}}.dark\:data-\[state\=checked\]\:border-white:is(.dark *)[data-state=checked]{border-color:#fff}.dark\:data-\[state\=checked\]\:bg-white:is(.dark *)[data-state=checked]{background-color:#fff}@media (min-width:48rem){.md\:dark\:border-gray-700:is(.dark *){border-color:#424242}.md\:dark\:border-transparent:is(.dark *){border-color:#0000}.dark\:md\:bg-transparent:is(.dark *){background-color:#0000}.md\:dark\:bg-black\/20:is(.dark *){background-color:oklab(0 none none/.2)}.dark\:md\:bg-vert-dark-gradient:is(.dark *){background-image:linear-gradient(#35374000,#353740 58.85%)}@media (hover:hover){.dark\:md\:hover\:bg-gray-700:is(.dark *):hover{background-color:#424242}}}.before\:starting\:opacity-0:before{content:var(--tw-content)}@starting-style{.before\:starting\:opacity-0:before{opacity:0}}@media print{.print\:hidden{display:none}.print\:border-none{--tw-border-style:none;border-style:none}.print\:pt-2{padding-top:calc(var(--spacing)*2)}.print\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.radix-disabled\:pointer-events-auto[data-disabled]{pointer-events:auto}.radix-disabled\:pointer-events-none[data-disabled]{pointer-events:none}.radix-disabled\:cursor-auto[data-disabled]{cursor:auto}.radix-disabled\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.radix-disabled\:bg-transparent[data-disabled]{background-color:#0000}.radix-disabled\:text-token-text-tertiary[data-disabled]{color:var(--text-tertiary)}.radix-disabled\:opacity-50[data-disabled]{opacity:.5}@media (hover:hover){.radix-disabled\:hover\:bg-transparent[data-disabled]:hover{background-color:#0000}}.dark\:radix-disabled\:bg-transparent:is(.dark *)[data-disabled]{background-color:#0000}.radix-state-active\:bg-white[data-state=active]{background-color:#fff}.radix-state-active\:text-token-text-primary[data-state=active]{color:var(--text-primary)}.radix-state-active\:text-token-text-secondary[data-state=active]{color:var(--text-secondary)}@media (min-width:48rem){.md\:radix-state-active\:bg-token-main-surface-tertiary[data-state=active]{background-color:var(--main-surface-tertiary)}.md\:radix-state-active\:text-token-text-primary[data-state=active]{color:var(--text-primary)}}.dark\:radix-state-active\:bg-token-main-surface-tertiary:is(.dark *)[data-state=active]{background-color:var(--main-surface-tertiary)}.radix-state-checked\:translate-x-\[calc\(var\(--dir\,1\)\*100\%\*\(7\/4-1\)\)\][data-state=checked]{--tw-translate-x:calc(var(--dir,1)*100%*.75);translate:var(--tw-translate-x)var(--tw-translate-y)}.radix-state-checked\:border[data-state=checked]{border-style:var(--tw-border-style);border-width:1px}.radix-state-checked\:border-green-500[data-state=checked]{border-color:#00a240}.radix-state-checked\:border-token-text-tertiary[data-state=checked]{border-color:var(--text-tertiary)}.radix-state-checked\:bg-black[data-state=checked]{background-color:#000}.radix-state-checked\:bg-blue-400[data-state=checked]{background-color:#0285ff}.radix-state-checked\:bg-green-500[data-state=checked]{background-color:#00a240}.radix-state-checked\:bg-token-main-surface-primary[data-state=checked]{background-color:var(--main-surface-primary)}.radix-state-checked\:bg-token-text-primary[data-state=checked]{background-color:var(--text-primary)}.radix-state-checked\:font-semibold[data-state=checked]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.radix-state-checked\:text-token-main-surface-primary[data-state=checked]{color:var(--main-surface-primary)}.radix-state-checked\:text-token-text-primary[data-state=checked]{color:var(--text-primary)}.radix-state-checked\:shadow-\[0_0_2px_rgba\(0\,0\,0\,\.03\)\][data-state=checked]{--tw-shadow:0 0 2px var(--tw-shadow-color,#00000008);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:radix-state-checked\:bg-white:is(.dark *)[data-state=checked]{background-color:#fff}.radix-state-open\:animate-show[data-state=open]{animation:show .1s cubic-bezier(.16,1,.3,1)}.radix-state-open\:bg-black\/10[data-state=open]{background-color:oklab(0 none none/.1)}.radix-state-open\:bg-token-bg-tertiary[data-state=open]{background-color:var(--bg-tertiary)}.radix-state-open\:bg-token-interactive-bg-secondary-hover[data-state=open]{background-color:var(--interactive-bg-secondary-hover)}.radix-state-open\:bg-token-main-surface-secondary[data-state=open]{background-color:var(--main-surface-secondary)}.radix-state-open\:bg-token-surface-hover[data-state=open]{background-color:var(--surface-hover)}.radix-state-open\:text-token-icon-primary[data-state=open]{color:var(--icon-primary)}.radix-state-open\:text-token-text-primary[data-state=open]{color:var(--text-primary)}.radix-state-open\:text-token-text-secondary[data-state=open]{color:var(--text-secondary)}.radix-state-open\:text-token-text-tertiary[data-state=open]{color:var(--text-tertiary)}.radix-state-open\:opacity-100[data-state=open]{opacity:1}.dark\:radix-state-open\:text-gray-400:is(.dark *)[data-state=open]{color:#b4b4b4}.radix-side-bottom\:flex-col-reverse[data-side=bottom]{flex-direction:column-reverse}@media (hover:hover){.can-hover\:pointer-events-none{pointer-events:none}.can-hover\:w-full{width:100%}.can-hover\:opacity-0{opacity:0}.can-hover\:group-hover\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.can-hover\:group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.can-hover\:active\:scale-100:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.can-hover\:active\:scale-\[0\.98\]:active{scale:.98}}@media (hover:none){.cant-hover\:hidden{display:none}}.screen-arch .screen-arch\:static{position:static}.screen-arch .screen-arch\:top-12{top:calc(var(--spacing)*12)}.screen-arch .screen-arch\:flex{display:flex}.screen-arch .screen-arch\:hidden{display:none}.screen-arch .screen-arch\:min-h-\[calc\(100dvh-var\(--thread-leading-height\)-var\(--thread-trailing-height\)-12px\)\]{min-height:calc(100dvh - var(--thread-leading-height) - var(--thread-trailing-height) - 12px)}.screen-arch .screen-arch\:w-full{width:100%}.screen-arch .screen-arch\:items-center{align-items:center}.screen-arch .screen-arch\:justify-evenly{justify-content:space-evenly}.screen-arch .screen-arch\:bg-none{background-image:none}@media (min-width:48rem){.screen-arch .md\:screen-arch\:flex{display:flex}}.keyboard-open .keyboard-open\:fixed{position:fixed}.keyboard-open .keyboard-open\:start-3{inset-inline-start:calc(var(--spacing)*3)}.keyboard-open .keyboard-open\:end-3{inset-inline-end:calc(var(--spacing)*3)}.keyboard-open .keyboard-open\:bottom-\[var\(--screen-keyboard-height\,0\)\]{bottom:var(--screen-keyboard-height,0)}.keyboard-open .keyboard-open\:z-50{z-index:50}.keyboard-open .keyboard-open\:h-\[calc\(100\%-var\(--screen-keyboard-height\,0px\)-var\(--composer-height\,100px\)\)\]{height:calc(100% - var(--screen-keyboard-height,0px) - var(--composer-height,100px))}.keyboard-open .keyboard-open\:h-\[var\(--screen-height-override\,calc\(var\(--cqh-full\)-env\(keyboard-inset-height\,0px\)-var\(--screen-height-offset\,0px\)-var\(--force-redraw\,0px\)\)\)\]{height:var(--screen-height-override,calc(var(--cqh-full) - env(keyboard-inset-height,0px) - var(--screen-height-offset,0px) - var(--force-redraw,0px)))}.keyboard-open .keyboard-open\:w-auto\!{width:auto!important}.keyboard-open .keyboard-open\:-translate-y-2{--tw-translate-y:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.keyboard-open .keyboard-open\:pb-\[calc\(var\(--composer-height\,100px\)\+var\(--screen-keyboard-height\,0\)\)\]{padding-bottom:calc(var(--composer-height,100px) + var(--screen-keyboard-height,0))}.panel-has-scrolled\:\[box-shadow\:var\(--sharp-edge-top-shadow\)\].panel-has-scrolled{box-shadow:var(--sharp-edge-top-shadow)}.panel-is-scrolling-to-end\:\[box-shadow\:var\(--sharp-edge-bottom-shadow\)\].panel-is-scrolling-to-end{box-shadow:var(--sharp-edge-bottom-shadow)}.top-banner-visible .top-banner-visible\:top-\(--top-banner-height\,0px\){top:var(--top-banner-height,0)}.top-banner-visible .top-banner-visible\:bottom-0{bottom:calc(var(--spacing)*0)}.top-banner-visible .top-banner-visible\:h-auto{height:auto}@media (pointer:coarse){.touch\:-ms-3\.5{margin-inline-start:calc(var(--spacing)*-3.5)}.touch\:-me-2{margin-inline-end:calc(var(--spacing)*-2)}.touch\:hidden{display:none}.touch\:h-3{height:calc(var(--spacing)*3)}.touch\:h-10{height:calc(var(--spacing)*10)}.touch\:min-h-10{min-height:calc(var(--spacing)*10)}.touch\:w-3{width:calc(var(--spacing)*3)}.touch\:w-10{width:calc(var(--spacing)*10)}.touch\:w-\[32px\]{width:32px}.touch\:w-\[38px\]{width:38px}.touch\:w-\[calc\(100\%\+--spacing\(3\.5\)\)\]{width:calc(100% + var(--spacing)*3.5)}.touch\:justify-between{justify-content:space-between}.touch\:p-2\.5{padding:calc(var(--spacing)*2.5)}.touch\:px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.touch\:px-2\.5{padding-inline:calc(var(--spacing)*2.5)}}.group\/component-group[data-multi-columns=true] .multi-columns\:col-start-2{grid-column-start:2}.group\/component-group[data-multi-columns=true] .multi-columns\:mt-4{margin-top:calc(var(--spacing)*4)}.\[\&\]\:border-0{border-style:var(--tw-border-style);border-width:0}.\[\&_path\]\:stroke-current path{stroke:currentColor}.\[\&_svg\]\:h-full svg{height:100%}.\[\&_svg\]\:w-full svg{width:100%}.\[\&_tr\:last-child\]\:border-b-0 tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\&\]\:text-black.\[\&\&\]\:text-black{color:#000}.\[\&\&\]\:underline.\[\&\&\]\:underline{text-decoration-line:underline}@media (hover:hover){.\[\&\&\]\:hover\:text-black.\[\&\&\]\:hover\:text-black:hover{color:#000}}.dark\:\[\&\&\]\:text-white:is(.dark *).dark\:\[\&\&\]\:text-white:is(.dark *){color:#fff}@media (hover:hover){.dark\:\[\&\&\]\:hover\:text-white:is(.dark *).dark\:\[\&\&\]\:hover\:text-white:is(.dark *):hover{color:#fff}}.\[\&\:\:-webkit-search-cancel-button\]\:hidden::-webkit-search-cancel-button{display:none}.\[\&\:not\(\:has\(strong\)\)\]\:mb-\[18px\]:not(:has(strong)){margin-bottom:18px}.\[\&\>\*\]\:pointer-events-none>*{pointer-events:none}.\[\&\>\:last-child\]\:mb-0>:last-child{margin-bottom:calc(var(--spacing)*0)}.\[\&\>div\:nth-child\(2\)\]\:overflow-y-hidden>div:nth-child(2){overflow-y:hidden}.\[\&\>p\:last-child\]\:mb-0\!>p:last-child{margin-bottom:calc(var(--spacing)*0)!important}.\[\&\>td\]\:py-2>td{padding-block:calc(var(--spacing)*2)}.text-message+.\[\.text-message\+\&\]\:mt-5{margin-top:calc(var(--spacing)*5)}@media (max-height:550px){.\[\@media\(max-height\:550px\)\]\:hidden{display:none}}@media (min-width:1560px){.\[\@media\(min-width\:1560px\)\]\:top-0{top:calc(var(--spacing)*0)}}tr:last-child .\[tr\:last-child_\&\]\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}tr[data-disabled=true] .\[tr\[data-disabled\=true\]_\&\]\:opacity-50{opacity:.5}.text-page-header{--tw-leading:34px;--tw-font-weight:var(--font-weight-normal);--tw-tracking:.38px;font-size:28px;font-weight:var(--font-weight-normal);letter-spacing:.38px;line-height:34px}.composer-btn{align-items:center;border-color:#0000;border-style:var(--tw-border-style);border-width:1px;color:var(--text-primary);display:flex;font-size:var(--text-sm);height:calc(var(--spacing)*9);justify-content:center;line-height:var(--tw-leading,var(--text-sm--line-height));min-width:calc(var(--spacing)*9);position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap;z-index:0}@media (hover:hover){.composer-btn:where(:not(:disabled,:active)):hover:before{background-color:var(--interactive-bg-secondary-hover);content:var(--tw-content)}.composer-btn:where(:not(:disabled,:active))[data-is-selected=true]:hover:before{background-color:var(--interactive-bg-accent-muted-hover);content:var(--tw-content)}}@container thread not (min-width:401px){.composer-btn:where(:not(:disabled,:active))[data-is-selected=true]:before{background-color:var(--interactive-bg-accent-muted-hover);content:var(--tw-content)}}.composer-btn:enabled{cursor:pointer}.composer-btn:disabled{cursor:not-allowed}:is(.composer-btn>*){pointer-events:none}.composer-btn:focus-visible{--tw-outline-style:none;outline-style:none}.composer-btn:focus-visible:before{content:var(--tw-content);outline-color:#000;outline-style:var(--tw-outline-style);outline-width:2px}.composer-btn:disabled{opacity:.3}.composer-btn:is(.dark *):focus-visible:before{content:var(--tw-content);outline-color:#fff}.composer-btn[data-is-selected]{color:var(--interactive-label-accent-default)}.composer-btn[data-is-selected]:active:before{background-color:var(--interactive-bg-accent-muted-press);content:var(--tw-content)}.composer-btn[data-pill]{margin-inline-start:-1px;padding-inline:calc(var(--spacing)*2)}@container thread not (min-width:401px){.composer-btn[data-pill]{gap:calc(var(--spacing)*0)}}@container thread not (min-width:521px){.composer-btn [data-label]{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}}.composer-btn:active:before,.composer-btn[data-is-open]:before,.composer-btn[data-state=open]:before{background-color:var(--interactive-bg-secondary-press);content:var(--tw-content)}.composer-btn:before{--tw-content:"";border-radius:3.40282e+38px;content:var(--tw-content);display:block;inset:calc(var(--spacing)*0);position:absolute;z-index:-1}.composer-submit-btn{align-items:center;background-color:#000;border-radius:3.40282e+38px;color:#fff;display:flex;justify-content:center;transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}@media (hover:hover){.composer-submit-btn:hover{opacity:.7}}.composer-submit-btn:disabled{color:#f4f4f4}@media (hover:hover){.composer-submit-btn:disabled:hover{opacity:1}}.composer-submit-btn:is(.dark *):focus-visible{outline-color:#fff}.composer-submit-btn:is(.dark *):disabled{background-color:var(--text-quaternary);color:var(--main-surface-secondary)}.composer-submit-btn:disabled{background-color:#d7d7d7}.composer-submit-btn:is(.dark *){background-color:#fff;color:#000}.overflow-auto>*,.overflow-scroll>*,.overflow-x-auto>*,.overflow-y-auto>*{scrollbar-color:auto}.overflow-auto,.overflow-scroll,.overflow-x-auto,.overflow-x-scroll,.overflow-y-auto,.overflow-y-scroll{scrollbar-color:var(--main-surface-tertiary)transparent}.overflow-auto:hover,.overflow-scroll:hover,.overflow-x-auto:hover,.overflow-y-auto:hover{scrollbar-color:var(--gray-200)transparent}.dark .overflow-auto:hover,.dark .overflow-scroll:hover,.dark .overflow-x-auto:hover,.dark .overflow-y-auto:hover{scrollbar-color:var(--gray-600)transparent}.content-fade:after{--fade-start-color:var(--bg-primary);--fade-end-color:var(--bg-primary);background:linear-gradient(to bottom,transparent,var(--bg-primary)),linear-gradient(to bottom,transparent 55px,var(--bg-primary)55px);background:linear-gradient(to bottom,var(--fade-start-color),var(--fade-end-color)),linear-gradient(to bottom,transparent 55px,var(--bg-primary)55px);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 55px,100% 100%;content:"";inset:0;position:absolute;z-index:-1}@supports (color:color-mix(in lab,red,red)){.content-fade:after{--fade-start-color:color-mix(in lch longer hue,var(--bg-primary),transparent 100%);--fade-end-color:color-mix(in lch longer hue,var(--bg-primary),transparent 0%)}}}.dark .light,.light,html{--bg-primary:#fff;--bg-secondary:#e8e8e8;--bg-tertiary:#f3f3f3;--bg-scrim:#0d0d0d80;--bg-elevated-primary:#fff;--bg-elevated-secondary:#f9f9f9;--bg-status-warning:#fff5f0;--bg-status-error:#fff0f0;--border-default:#0d0d0d1a;--border-heavy:#0d0d0d26;--border-light:#0d0d0d0d;--border-status-warning:#ffe7d9;--border-status-error:#ffe1e0;--text-primary:#0d0d0d;--text-secondary:#5d5d5d;--text-tertiary:#8f8f8f;--text-inverted:#fff;--text-inverted-static:#fff;--text-accent:#66b5ff;--text-status-warning:#e25507;--text-status-error:#e02e2a;--icon-primary:#0d0d0d;--icon-secondary:#5d5d5d;--icon-tertiary:#8f8f8f;--icon-inverted:#fff;--icon-inverted-static:#fff;--icon-accent:#0285ff;--icon-status-warning:#e25507;--icon-status-error:#e02e2a;--interactive-bg-primary-default:#0d0d0d;--interactive-bg-primary-hover:#0d0d0dcc;--interactive-bg-primary-press:#0d0d0de5;--interactive-bg-primary-inactive:#0d0d0d;--interactive-bg-primary-selected:#0d0d0d;--interactive-bg-secondary-default:#0d0d0d00;--interactive-bg-secondary-hover:#0d0d0d05;--interactive-bg-secondary-press:#0d0d0d0d;--interactive-bg-secondary-inactive:#0d0d0d00;--interactive-bg-secondary-selected:#0d0d0d0d;--interactive-bg-tertiary-default:#fff;--interactive-bg-tertiary-hover:#f9f9f9;--interactive-bg-tertiary-press:#f3f3f3;--interactive-bg-tertiary-inactive:#fff;--interactive-bg-tertiary-selected:#fff;--interactive-bg-accent-default:#e5f3ff;--interactive-bg-accent-hover:#cce6ff;--interactive-bg-accent-muted-hover:#f5faff;--interactive-bg-accent-press:#99ceff;--interactive-bg-accent-muted-press:#e7f4ff;--interactive-bg-accent-inactive:#e5f3ff;--interactive-bg-danger-primary-default:#e02e2a;--interactive-bg-danger-primary-hover:#fa423e;--interactive-bg-danger-primary-press:#ba2623;--interactive-bg-danger-primary-inactive:#e02e2a;--interactive-bg-danger-secondary-default:#0d0d0d00;--interactive-bg-danger-secondary-hover:#0d0d0d00;--interactive-bg-danger-secondary-press:#0d0d0d00;--interactive-bg-danger-secondary-inactive:#0d0d0d00;--interactive-border-focus:#0d0d0d;--interactive-border-secondary-default:#0d0d0d1a;--interactive-border-secondary-hover:#0d0d0d0d;--interactive-border-secondary-press:#0d0d0d0d;--interactive-border-secondary-inactive:#0d0d0d1a;--interactive-border-tertiary-default:#0d0d0d1a;--interactive-border-tertiary-hover:#0d0d0d1a;--interactive-border-tertiary-press:#0d0d0d0d;--interactive-border-tertiary-inactive:#0d0d0d1a;--interactive-border-danger-secondary-default:#e02e2a;--interactive-border-danger-secondary-hover:#fa423e;--interactive-border-danger-secondary-press:#ba2623;--interactive-border-danger-secondary-inactive:#e02e2a;--interactive-label-primary-default:#fff;--interactive-label-primary-hover:#fff;--interactive-label-primary-press:#fff;--interactive-label-primary-inactive:#fff;--interactive-label-primary-selected:#fff;--interactive-label-secondary-default:#0d0d0d;--interactive-label-secondary-hover:#0d0d0de5;--interactive-label-secondary-press:#0d0d0dcc;--interactive-label-secondary-inactive:#0d0d0d;--interactive-label-secondary-selected:#0d0d0d;--interactive-label-tertiary-default:#5d5d5d;--interactive-label-tertiary-hover:#5d5d5d;--interactive-label-tertiary-press:#5d5d5d;--interactive-label-tertiary-inactive:#5d5d5d;--interactive-label-tertiary-selected:#5d5d5d;--interactive-label-accent-default:#0285ff;--interactive-label-accent-hover:#0285ff;--interactive-label-accent-press:#0285ff;--interactive-label-accent-inactive:#0285ff;--interactive-label-accent-selected:#0285ff;--interactive-label-danger-primary-default:#fff;--interactive-label-danger-primary-hover:#fff;--interactive-label-danger-primary-press:#fff;--interactive-label-danger-primary-inactive:#fff;--interactive-label-danger-secondary-default:#e02e2a;--interactive-label-danger-secondary-hover:#fa423e;--interactive-label-danger-secondary-press:#ba2623;--interactive-label-danger-secondary-inactive:#e02e2a;--interactive-icon-primary-default:#fff;--interactive-icon-primary-hover:#fff;--interactive-icon-primary-press:#fff;--interactive-icon-primary-selected:#fff;--interactive-icon-primary-inactive:#fff;--interactive-icon-secondary-default:#0d0d0d;--interactive-icon-secondary-hover:#0d0d0de5;--interactive-icon-secondary-press:#0d0d0dcc;--interactive-icon-secondary-selected:#0d0d0d;--interactive-icon-secondary-inactive:#0d0d0d;--interactive-icon-tertiary-default:#5d5d5d;--interactive-icon-tertiary-hover:#5d5d5d;--interactive-icon-tertiary-press:#5d5d5d;--interactive-icon-tertiary-selected:#5d5d5d;--interactive-icon-tertiary-inactive:#5d5d5d;--interactive-icon-accent-default:#0285ff;--interactive-icon-accent-hover:#0285ff;--interactive-icon-accent-press:#0285ff;--interactive-icon-accent-selected:#0285ff;--interactive-icon-accent-inactive:#0285ff;--interactive-icon-danger-primary-default:#fff;--interactive-icon-danger-primary-hover:#fff;--interactive-icon-danger-primary-press:#fff;--interactive-icon-danger-primary-inactive:#fff;--interactive-icon-danger-secondary-default:#e02e2a;--interactive-icon-danger-secondary-hover:#fa423e;--interactive-icon-danger-secondary-press:#ba2623;--interactive-icon-danger-secondary-inactive:#e02e2a;--utility-scrollbar:#0000000a}.dark{--bg-primary:#212121;--bg-secondary:#303030;--bg-tertiary:#414141;--bg-scrim:#0d0d0d80;--bg-elevated-primary:#303030;--bg-elevated-secondary:#181818;--bg-status-warning:#4a2206;--bg-status-error:#4d100e;--border-default:#ffffff26;--border-heavy:#fff3;--border-light:#ffffff0d;--border-status-warning:#4a2206;--border-status-error:#4d100e;--text-primary:#fff;--text-secondary:#f3f3f3;--text-tertiary:#afafaf;--text-inverted:#0d0d0d;--text-inverted-static:#fff;--text-accent:#66b5ff;--text-status-warning:#ff9e6c;--text-status-error:#ff8583;--icon-primary:#e8e8e8;--icon-secondary:#cdcdcd;--icon-tertiary:#afafaf;--icon-inverted:#0d0d0d;--icon-inverted-static:#fff;--icon-accent:#66b5ff;--icon-status-warning:#ff9e6c;--icon-status-error:#ff8583;--interactive-bg-primary-default:#fff;--interactive-bg-primary-hover:#fffc;--interactive-bg-primary-press:#ffffffe5;--interactive-bg-primary-inactive:#fff;--interactive-bg-primary-selected:#fff;--interactive-bg-secondary-default:#fff0;--interactive-bg-secondary-hover:#ffffff1a;--interactive-bg-secondary-press:#ffffff0d;--interactive-bg-secondary-inactive:#fff0;--interactive-bg-secondary-selected:#ffffff1a;--interactive-bg-tertiary-default:#212121;--interactive-bg-tertiary-hover:#181818;--interactive-bg-tertiary-press:#0d0d0d;--interactive-bg-tertiary-inactive:#212121;--interactive-bg-tertiary-selected:#212121;--interactive-bg-accent-default:#013566;--interactive-bg-accent-hover:#003f7a;--interactive-bg-accent-muted-hover:#3b4045;--interactive-bg-accent-press:#004f99;--interactive-bg-accent-muted-press:#40484f;--interactive-bg-accent-inactive:#013566;--interactive-bg-danger-primary-default:#e02e2a;--interactive-bg-danger-primary-hover:#fa423e;--interactive-bg-danger-primary-press:#ba2623;--interactive-bg-danger-primary-inactive:#e02e2a;--interactive-bg-danger-secondary-default:#fff0;--interactive-bg-danger-secondary-hover:#fff0;--interactive-bg-danger-secondary-press:#fff0;--interactive-bg-danger-secondary-inactive:#fff0;--interactive-border-focus:#fff;--interactive-border-secondary-default:#ffffff26;--interactive-border-secondary-hover:#ffffff26;--interactive-border-secondary-press:#fff3;--interactive-border-secondary-inactive:#ffffff1a;--interactive-border-tertiary-default:#ffffff1a;--interactive-border-tertiary-hover:#ffffff26;--interactive-border-tertiary-press:#ffffff1a;--interactive-border-tertiary-inactive:#ffffff1a;--interactive-border-danger-secondary-default:#fa423e;--interactive-border-danger-secondary-hover:#ff6764;--interactive-border-danger-secondary-press:#e02e2a;--interactive-border-danger-secondary-inactive:#fa423e;--interactive-label-primary-default:#0d0d0d;--interactive-label-primary-hover:#0d0d0d;--interactive-label-primary-press:#0d0d0d;--interactive-label-primary-inactive:#0d0d0d;--interactive-label-primary-selected:#0d0d0d;--interactive-label-secondary-default:#f3f3f3;--interactive-label-secondary-hover:#ffffffe5;--interactive-label-secondary-press:#fffc;--interactive-label-secondary-inactive:#f3f3f3;--interactive-label-secondary-selected:#f3f3f3;--interactive-label-tertiary-default:#cdcdcd;--interactive-label-tertiary-hover:#cdcdcd;--interactive-label-tertiary-press:#cdcdcd;--interactive-label-tertiary-inactive:#cdcdcd;--interactive-label-tertiary-selected:#cdcdcd;--interactive-label-accent-default:#99ceff;--interactive-label-accent-hover:#99ceff;--interactive-label-accent-press:#99ceff;--interactive-label-accent-inactive:#99ceff;--interactive-label-accent-selected:#99ceff;--interactive-label-danger-primary-default:#fff;--interactive-label-danger-primary-hover:#fff;--interactive-label-danger-primary-press:#fff;--interactive-label-danger-primary-inactive:#fff;--interactive-label-danger-secondary-default:#fa423e;--interactive-label-danger-secondary-hover:#ff6764;--interactive-label-danger-secondary-press:#e02e2a;--interactive-label-danger-secondary-inactive:#fa423e;--interactive-icon-primary-default:#0d0d0d;--interactive-icon-primary-hover:#0d0d0d;--interactive-icon-primary-press:#0d0d0d;--interactive-icon-primary-selected:#0d0d0d;--interactive-icon-primary-inactive:#0d0d0d;--interactive-icon-secondary-default:#f3f3f3;--interactive-icon-secondary-hover:#ffffffe5;--interactive-icon-secondary-press:#fffc;--interactive-icon-secondary-selected:#f3f3f3;--interactive-icon-secondary-inactive:#f3f3f3;--interactive-icon-tertiary-default:#cdcdcd;--interactive-icon-tertiary-hover:#cdcdcd;--interactive-icon-tertiary-press:#cdcdcd;--interactive-icon-tertiary-selected:#cdcdcd;--interactive-icon-tertiary-inactive:#cdcdcd;--interactive-icon-accent-default:#99ceff;--interactive-icon-accent-hover:#99ceff;--interactive-icon-accent-press:#99ceff;--interactive-icon-accent-selected:#99ceff;--interactive-icon-accent-inactive:#99ceff;--interactive-icon-danger-primary-default:#fff;--interactive-icon-danger-primary-hover:#fff;--interactive-icon-danger-primary-press:#fff;--interactive-icon-danger-primary-inactive:#fff;--interactive-icon-danger-secondary-default:#fa423e;--interactive-icon-danger-secondary-hover:#ff6764;--interactive-icon-danger-secondary-press:#e02e2a;--interactive-icon-danger-secondary-inactive:#fa423e;--utility-scrollbar:#fff3}html:not(.screen-arch),html:not(.screen-arch) body{height:100%}html.screen-arch,html.screen-arch body{min-height:100%}#__next,#root{height:100%}.markdown{max-width:unset}.markdown.streaming-animation.block-entry-animation pre,.markdown.streaming-animation.block-entry-animation table{overflow:clip!important;position:relative}:is(.markdown.streaming-animation.block-entry-animation pre,.markdown.streaming-animation.block-entry-animation table):after{--overlap-distance:10px;--overlap-negative-distance:-10px;content:"";display:flex;height:calc(100% + var(--overlap-distance)*2);inset:0;position:absolute;translate:0 var(--streaming-reveal-amount,var(--overlap-negative-distance))}[dir=ltr] :is(.markdown.streaming-animation.block-entry-animation pre,.markdown.streaming-animation.block-entry-animation table):after{background-image:linear-gradient(180deg,transparent,var(--main-surface-primary)var(--overlap-distance))}[dir=rtl] :is(.markdown.streaming-animation.block-entry-animation pre,.markdown.streaming-animation.block-entry-animation table):after{background-image:linear-gradient(-180deg,transparent,var(--main-surface-primary)var(--overlap-distance))}@media (prefers-reduced-motion:no-preference){:is(.markdown.streaming-animation.block-entry-animation pre,.markdown.streaming-animation.block-entry-animation table):after{transition:.5s translate var(--spring-standard)}}.markdown.streaming-animation h1,.markdown.streaming-animation h2,.markdown.streaming-animation h3,.markdown.streaming-animation h4,.markdown.streaming-animation h5,.markdown.streaming-animation h6,.markdown.streaming-animation li:not(:has(pre)){width:fit-content}.markdown pre{margin-top:calc(var(--spacing)*2)}.markdown pre:first-child{margin-top:calc(var(--spacing)*0)}.markdown h1{--tw-font-weight:var(--font-weight-semibold);--tw-tracking:-.04rem;font-weight:var(--font-weight-semibold);letter-spacing:-.04rem}.markdown-new-styling :is(.markdown h1){--tw-tracking:var(--tracking-normal);font-size:var(--text-2xl);letter-spacing:var(--tracking-normal);line-height:var(--tw-leading,var(--text-2xl--line-height));margin-bottom:calc(var(--spacing)*2)}.markdown h1:first-child{margin-top:calc(var(--spacing)*0)}.markdown h2{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);margin-bottom:calc(var(--spacing)*3);margin-top:calc(var(--spacing)*8)}.markdown-new-styling :is(.markdown h2){font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));margin-bottom:calc(var(--spacing)*1);margin-top:calc(var(--spacing)*4)}.markdown h2:first-child{margin-top:calc(var(--spacing)*0)}.markdown h3{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);margin-bottom:calc(var(--spacing)*2);margin-top:calc(var(--spacing)*6)}.markdown-new-styling :is(.markdown h3){font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));margin-bottom:calc(var(--spacing)*1);margin-top:calc(var(--spacing)*4)}.markdown h3:first-child{margin-top:calc(var(--spacing)*0)}.markdown h4{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);margin-bottom:calc(var(--spacing)*2);margin-top:calc(var(--spacing)*4)}.markdown-new-styling :is(.markdown h4){margin-bottom:calc(var(--spacing)*0)}.markdown h4:first-child,.markdown-new-styling :is(.markdown h4+p){margin-top:calc(var(--spacing)*0)}.markdown h5{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.markdown h5:first-child{margin-top:calc(var(--spacing)*0)}.markdown blockquote{--tw-leading:calc(var(--spacing)*6);border-style:var(--tw-border-style);border-width:0;line-height:calc(var(--spacing)*6);margin:calc(var(--spacing)*0);padding-block:calc(var(--spacing)*2);position:relative}[dir=ltr] .markdown blockquote{padding-left:calc(var(--spacing)*6)}[dir=rtl] .markdown blockquote{padding-right:calc(var(--spacing)*6)}.markdown-new-styling :is(.markdown blockquote){margin-bottom:calc(var(--spacing)*2);margin-top:calc(var(--spacing)*0)}.markdown blockquote>p{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);margin:calc(var(--spacing)*0)}.markdown blockquote>p:after,.markdown blockquote>p:before{display:none}.markdown blockquote:after{background-color:var(--border-medium);border-radius:2px;bottom:.5rem;content:"";position:absolute;top:.5rem;width:4px}[dir=ltr] .markdown blockquote:after{left:0}[dir=rtl] .markdown blockquote:after{right:0}.markdown p{margin-bottom:.5rem}.markdown-new-styling :is(.markdown p){margin-block:calc(var(--spacing)*1)}.markdown-new-styling :is(.markdown p):first-child{margin-top:calc(var(--spacing)*0)}.markdown p:not(:first-child){margin-top:.5rem}.markdown-new-styling :is(.markdown p+p){margin-block:calc(var(--spacing)*4)}.markdown p+:where(ol,ul){margin-top:0}.markdown :where(ol,ul)>li>:last-child{margin-bottom:0}.markdown :where(ol,ul)>li>:first-child{margin-bottom:0;margin-top:0}.markdown table{--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);border-collapse:separate;border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y);margin:calc(var(--spacing)*0)}.markdown table [data-col-size=sm]{max-width:calc(var(--thread-content-max-width)*6/24);min-width:calc(var(--thread-content-max-width)*4/24)}.markdown table [data-col-size=md]{max-width:calc(var(--thread-content-max-width)*8/24);min-width:calc(var(--thread-content-max-width)*6/24)}.markdown table [data-col-size=lg]{max-width:calc(var(--thread-content-max-width)*12/24);min-width:calc(var(--thread-content-max-width)*8/24)}.markdown table [data-col-size=xl]{max-width:calc(var(--thread-content-max-width)*18/24);min-width:calc(var(--thread-content-max-width)*14/24)}.markdown th{--tw-leading:calc(var(--spacing)*4);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border-medium);line-height:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2)}.markdown th:not(:last-child){padding-inline-end:calc(var(--spacing)*6)}.markdown tr:not(:last-child) td{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border-light)}.markdown tr:last-child td{padding-bottom:calc(var(--spacing)*6)}.markdown td{padding-block:calc(var(--spacing)*2.5)}.markdown td:not(:last-child){padding-inline-end:calc(var(--spacing)*6)}.markdown ol,.markdown ul{margin-bottom:calc(var(--spacing)*4)}.markdown-new-styling :is(.markdown ul,.markdown ol){margin:calc(var(--spacing)*0)}.markdown-new-styling :is(.markdown ul+h1,.markdown ul+h2,.markdown ul+h3,.markdown ul+h4,.markdown ul+h5,.markdown ul+h6,.markdown ol+h1,.markdown ol+h2,.markdown ol+h3,.markdown ol+h4,.markdown ol+h5,.markdown ol+h6){margin-top:calc(var(--spacing)*4)}.markdown-new-styling :is(.markdown ul li,.markdown ol li){margin-block:calc(var(--spacing)*0)}.markdown li::marker{--tw-font-weight:var(--font-weight-bold);color:var(--text-secondary);font-weight:var(--font-weight-bold)}.markdown-new-styling :is(){--tw-font-weight:var(--font-weight-semibold);color:var(--text-primary);font-weight:var(--font-weight-semibold)}.markdown a{--tw-font-weight:var(--font-weight-normal);color:var(--link);font-weight:var(--font-weight-normal);text-decoration-line:none}@media (hover:hover){.markdown a:hover{color:var(--link-hover)}}.markdown-new-styling :is(.markdown strong){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.gizmo .markdown>:not(pre),.gizmo .markdown>:not(pre)>:not(a){color:var(--text-primary)}.markdown .float-image+p,.markdown-new-styling :is(.markdown hr+*){margin-top:calc(var(--spacing)*0)}.markdown hr{border-color:var(--border-light);margin-block:calc(var(--spacing)*10)}.markdown-new-styling :is(.markdown hr){border-color:var(--border-medium);margin-block:calc(var(--spacing)*7)}.markdown-new-styling-hidden-hrs :is(.markdown hr){--tw-border-style:none;border-style:none}.deep-research-result p{display:inline-block;vertical-align:top;width:100%}@keyframes blink{to{visibility:hidden}}@keyframes show{0%{opacity:0}to{opacity:1}}.result-streaming>:not(ol,ul,pre,div):last-child:after,.result-streaming>pre:last-child code:after{content:"●";font-family:Circle,system-ui,sans-serif;line-height:normal;vertical-align:baseline}.result-streaming.no-flow>:not(ol,ul,pre):last-child:after,.result-streaming.no-flow>pre:last-child code:after{margin-top:.25rem;position:absolute}.pulse>:not(ol,ul,pre,div):last-child:after,.pulse>pre:last-child code:after{-webkit-font-smoothing:subpixel-antialiased;animation:pulseSize 1.25s ease-in-out infinite;backface-visibility:hidden;border-radius:50%;content:"●";display:inline-block;transform:translateZ(0);transform-origin:50%;will-change:transform}[dir=ltr] .pulse>:not(ol,ul,pre,div):last-child:after,[dir=ltr] .pulse>pre:last-child code:after{padding-left:.1em}[dir=rtl] .pulse>:not(ol,ul,pre,div):last-child:after,[dir=rtl] .pulse>pre:last-child code:after{padding-right:.1em}.result-thinking p:last-child:after{-webkit-font-smoothing:subpixel-antialiased;animation:pulseSize 1.25s ease-in-out infinite;backface-visibility:hidden;background-color:var(--text-primary);border-radius:50%;box-sizing:border-box;content:" ";display:block;height:12px;position:absolute;top:11px;transform:translateZ(0);transform-origin:50%;width:12px;will-change:transform}:root{--sharp-edge-top-shadow:0 1px 0 var(--border-sharp);--sharp-edge-top-shadow-placeholder:0 1px 0 transparent;--sharp-edge-bottom-shadow:0 -1px 0 var(--border-sharp);--sharp-edge-bottom-shadow-placeholder:0 -1px 0 transparent}@keyframes add-top-shadow{0%{box-shadow:var(--sharp-edge-top-shadow-placeholder)}.1%,to{box-shadow:var(--sharp-edge-top-shadow)}}@keyframes add-bottom-shadow{0%,99.9%{box-shadow:var(--sharp-edge-bottom-shadow)}to{box-shadow:var(--sharp-edge-bottom-shadow-placeholder)}}.sharp-edge-on-scroll-start{box-shadow:0 1px #0000}@supports (animation-timeline:--agi){.sharp-edge-on-scroll-start{animation-range:0 1px;animation:add-top-shadow 1ms linear both}}.sharp-edge-on-scroll-end{box-shadow:0 -1px #0000}.sharp-edge-on-scroll-end,.sharp-edge-on-scroll-start{animation-timeline:scroll()}@keyframes shimmer-skeleton{0%{background-position:100%}to{background-position:0}}@supports selector(:has(*)){.result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child:not(:has(*>li)):after,.result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child:after,.result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child:after{content:"●";font-family:Circle,system-ui,sans-serif;line-height:normal;vertical-align:baseline}[dir=ltr] .result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child:not(:has(*>li)):after,[dir=ltr] .result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child:after,[dir=ltr] .result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child:after{margin-left:.25rem}[dir=rtl] .result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child:not(:has(*>li)):after,[dir=rtl] .result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child:after,[dir=rtl] .result-streaming:not(.streaming-animation)>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child>:is(ul,ol):last-child>li:last-child:after{margin-right:.25rem}}@supports not selector(:has(*)){.result-streaming>ol:last-child>li:last-child:after,.result-streaming>ul:last-child>li:last-child:after{content:"●";font-family:Circle,system-ui,sans-serif;line-height:normal;vertical-align:baseline}[dir=ltr] .result-streaming>ol:last-child>li:last-child:after,[dir=ltr] .result-streaming>ul:last-child>li:last-child:after{margin-left:.25rem}[dir=rtl] .result-streaming>ol:last-child>li:last-child:after,[dir=rtl] .result-streaming>ul:last-child>li:last-child:after{margin-right:.25rem}}.result-streaming .katex-error{display:none}@keyframes pulse-dot{to{transform:scale(var(--pulse-scale,1.3))}}@keyframes float-sidebar-in{0%{opacity:0;translate:-60%}70%{opacity:1}to{translate:0}}@keyframes float-sidebar-out{0%{translate:0}30%{opacity:1}to{opacity:0;translate:-60%}}.pulsing-dot{aspect-ratio:1;background:var(--dot-color);border-radius:50%;opacity:var(--dot-opacity,1);width:1rem}@media (prefers-reduced-motion:no-preference){.pulsing-dot{animation:pulse-dot 1s infinite var(--easing-common)alternate-reverse;transition:.2s opacity var(--easing-common);translate:0 3px}}@keyframes pulseSize{0%,to{transform:scale(1)}50%{transform:scale(1.25)}}@keyframes toast-open{0%{opacity:0;transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes toast-close{0%{opacity:1}to{opacity:0}}.toast-root{align-items:center;display:flex;flex-direction:column;height:0;transition:all .24s cubic-bezier(0,0,.2,1)}.toast-root[data-state=entered],.toast-root[data-state=entering]{animation:toast-open .24s cubic-bezier(.175,.885,.32,1) both}.toast-root[data-state=exiting]{animation:toast-close .12s cubic-bezier(.4,0,1,1) both}.toast-root .alert-root{box-shadow:0 0 1px #435a6f4d,0 5px 8px -4px #435a6f4d;flex-shrink:0;pointer-events:all}.title{font-feature-settings:normal;font-family:ui-sans-serif,system-ui,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal}.icon-shimmer{animation:icon-shimmer 5s cubic-bezier(.2,.44,.38,1.02) infinite;background-repeat:no-repeat;-webkit-mask:linear-gradient(80deg,currentColor 30%,#0005,currentColor 70%) 100%/300% 100%;mask:linear-gradient(80deg,currentColor 30%,#0005,currentColor 70%) 100%/300% 100%}@keyframes icon-shimmer{0%{-webkit-mask-position:100%;mask-position:100%}20%{-webkit-mask-position:0;mask-position:0}to{-webkit-mask-position:0;mask-position:0}}@keyframes loading-results-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes scalePulse{0%,to{filter:blur();transform:scale(1)}50%{filter:blur(8px);transform:scale(1.1)}}.bg-scale-pulse{animation:scalePulse 3.5s ease-in-out infinite;transform-origin:50%}@keyframes diagonalSweep{0%{transform:translate(-100%,-100%)}to{transform:translate(100%,100%)}}.diagonal-sweep-gradient{animation:diagonalSweep 4s ease-out infinite}[dir=ltr] .diagonal-sweep-gradient{background-image:linear-gradient(135deg,#fff0 46%,#fff3,#fff0 54%)}[dir=rtl] .diagonal-sweep-gradient{background-image:linear-gradient(-135deg,#fff0 46%,#fff3,#fff0 54%)}@media (prefers-reduced-motion:reduce){.diagonal-sweep-gradient{animation:none}}.loading-results-shimmer{animation:loading-results-shimmer 3s linear infinite;background:var(--main-surface-secondary)gradient(linear,100% 0,0 0,from(var(--main-surface-secondary)),color-stop(.5,var(--main-surface-tertiary)),to(var(--main-surface-secondary)));background:var(--main-surface-secondary)-webkit-gradient(linear,100% 0,0 0,from(var(--main-surface-secondary)),color-stop(.5,var(--main-surface-tertiary)),to(var(--main-surface-secondary)));background-size:1000px 100%}@media (prefers-reduced-motion:reduce){.loading-results-shimmer{animation:none}}.hint-pill{--tw-font-weight:var(--font-weight-semibold);color:var(--hint-text);font-weight:var(--font-weight-semibold)}@keyframes loading-shimmer{0%{background-position:-100% 0}to{background-position:250% 0}}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.gizmo-bot-avatar{outline:solid 1px var(--main-surface-tertiary)}[dir=ltr] div[data-radix-popper-content-wrapper]:has(>div[data-side=right]){left:min(0px,var(--radix-popper-available-width) + (-1*var(--radix-popper-anchor-width)))!important}[dir=rtl] div[data-radix-popper-content-wrapper]:has(>div[data-side=right]){right:min(0px,var(--radix-popper-available-width) + (-1*var(--radix-popper-anchor-width)))!important}[dir=ltr] div[data-radix-popper-content-wrapper]:has(>div[data-side=left]){left:max(0px,(-1*var(--radix-popper-available-width) + var(--radix-popper-anchor-width) + 40px))!important}[dir=rtl] div[data-radix-popper-content-wrapper]:has(>div[data-side=left]){right:max(0px,(-1*var(--radix-popper-available-width) + var(--radix-popper-anchor-width) + 40px))!important}@media not all and (min-width:342px){:where(div[data-radix-popper-content-wrapper]:has(>div[data-side]) [data-radix-collection-item]){max-width:85dvw}}#sidebar-summarizer p:not(:first-child){margin-top:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-contain-size{syntax:"*";inherits:false}@property --tw-contain-layout{syntax:"*";inherits:false}@property --tw-contain-paint{syntax:"*";inherits:false}@property --tw-contain-style{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes pulsing{0%{opacity:1;scale:1}50%{opacity:.9;scale:.875}to{opacity:1;scale:1}}@keyframes slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slide-out-left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slide-out-right{0%{transform:translate(0)}to{transform:translate(100%)}}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_AMS-Regular-e1why8ff.woff2) format("woff2")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(https://cdn.oaistatic.com/assets/KaTeX_Caligraphic-Bold-n63xiolk.woff2) format("woff2")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Caligraphic-Regular-npwmqylf.woff2) format("woff2")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(https://cdn.oaistatic.com/assets/KaTeX_Fraktur-Bold-ikhebgtj.woff2) format("woff2")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Fraktur-Regular-i0egury6.woff2) format("woff2")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(https://cdn.oaistatic.com/assets/KaTeX_Main-Bold-ktk38ybk.woff2) format("woff2")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(https://cdn.oaistatic.com/assets/KaTeX_Main-BoldItalic-oj033t4i.woff2) format("woff2")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Main-Italic-2p4bq1jf.woff2) format("woff2")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Main-Regular-hbkzldb8.woff2) format("woff2")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(https://cdn.oaistatic.com/assets/KaTeX_Math-BoldItalic-jdo1yxu8.woff2) format("woff2")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Math-Italic-cz4b2ure.woff2) format("woff2")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(https://cdn.oaistatic.com/assets/KaTeX_SansSerif-Bold-otxc8itm.woff2) format("woff2")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_SansSerif-Italic-k4kksncm.woff2) format("woff2")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_SansSerif-Regular-ltw53ck4.woff2) format("woff2")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Script-Regular-oybd33cp.woff2) format("woff2")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Size1-Regular-cjccv44r.woff2) format("woff2")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Size2-Regular-onxq3bzc.woff2) format("woff2")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Size4-Regular-nv9nppzf.woff2) format("woff2")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(https://cdn.oaistatic.com/assets/KaTeX_Typewriter-Regular-iqvr3vwu.woff2) format("woff2")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentcolor}.katex .katex-version:after{content:"0.16.0"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}[dir=ltr] .katex .vlist-t2{margin-right:-2px}[dir=rtl] .katex .vlist-t2{margin-left:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}[dir=ltr] .katex .msupsub{text-align:left}[dir=rtl] .katex .msupsub{text-align:right}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}[dir=ltr] .katex .llap>.inner{right:0}[dir=rtl] .katex .llap>.inner{left:0}[dir=ltr] .katex .clap>.inner,[dir=ltr] .katex .rlap>.inner{left:0}[dir=rtl] .katex .clap>.inner,[dir=rtl] .katex .rlap>.inner{right:0}[dir=ltr] .katex .clap>.inner>span{margin-left:-50%;margin-right:50%}[dir=rtl] .katex .clap>.inner>span{margin-left:50%;margin-right:-50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}[dir=ltr] .katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}[dir=rtl] .katex .sqrt>.root{margin-left:-.55555556em;margin-right:.27777778em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}[dir=ltr] .katex .mtable .col-align-l>.vlist-t{text-align:left}[dir=rtl] .katex .mtable .col-align-l>.vlist-t{text-align:right}[dir=ltr] .katex .mtable .col-align-r>.vlist-t{text-align:right}[dir=rtl] .katex .mtable .col-align-r>.vlist-t{text-align:left}[dir=ltr] .katex .svg-align{text-align:left}[dir=rtl] .katex .svg-align{text-align:right}.katex svg{fill:currentcolor;stroke:currentcolor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{overflow:hidden;position:absolute;width:50.2%}[dir=ltr] .katex .halfarrow-left{left:0}[dir=rtl] .katex .halfarrow-left{right:0}.katex .halfarrow-right{overflow:hidden;position:absolute;width:50.2%}[dir=ltr] .katex .halfarrow-right{right:0}[dir=rtl] .katex .halfarrow-right{left:0}.katex .brace-left{overflow:hidden;position:absolute;width:25.1%}[dir=ltr] .katex .brace-left{left:0}[dir=rtl] .katex .brace-left{right:0}.katex .brace-center{overflow:hidden;position:absolute;width:50%}[dir=ltr] .katex .brace-center{left:25%}[dir=rtl] .katex .brace-center{right:25%}.katex .brace-right{overflow:hidden;position:absolute;width:25.1%}[dir=ltr] .katex .brace-right{right:0}[dir=rtl] .katex .brace-right{left:0}.katex .x-arrow-pad{padding:0 .5em}[dir=ltr] .katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}[dir=rtl] .katex .cd-arrow-pad{padding:0 .27778em 0 .55556em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-top:.049em solid;box-sizing:border-box}[dir=ltr] .katex .angl{border-right:.049em solid;margin-right:.03889em}[dir=rtl] .katex .angl{border-left:.049em solid;margin-left:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute}[dir=ltr] .katex .cd-label-left{right:calc(50% + .3em);text-align:left}[dir=rtl] .katex .cd-label-left{left:calc(50% + .3em);text-align:right}.katex .cd-label-right{display:inline-block;position:absolute}[dir=ltr] .katex .cd-label-right{left:calc(50% + .3em);text-align:right}[dir=rtl] .katex .cd-label-right{right:calc(50% + .3em);text-align:left}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute}[dir=ltr] .katex-display>.katex>.katex-html>.tag{right:0}[dir=rtl] .katex-display>.katex>.katex-html>.tag{left:0}[dir=ltr] .katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}[dir=rtl] .katex-display.leqno>.katex>.katex-html>.tag{left:auto;right:0}[dir=ltr] .katex-display.fleqn>.katex{padding-left:2em;text-align:left}[dir=rtl] .katex-display.fleqn>.katex{padding-right:2em;text-align:right}body{counter-reset:katexEqnNo mmlEqnNo}html.mini-root{--mini-thread-turn-vertical-spacing:2rem;--mini-tab-height:78px}@media (max-width:640px){html.mini-root{--mini-tab-height:42px}}html.mini-root,html.mini-root.dark,html.mini-root.light{--header-height:0px}html.mini-root.light,html.mini-root.light .markdown.prose.light{--mini-link-color:#007afd}html.mini-root.dark,html.mini-root.dark .markdown.prose.dark{--mini-link-color:#56aaff}body.mini{--mini-thread-content-inset:0}body.mini [data-type=unified-composer]{margin-inline:calc(var(--spacing,.25rem)*-3);width:calc(100% + 1.5rem)}body.mini .group\/conversation-turn,body.mini .prose{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,1.42857))}body.mini .prose{padding-inline:var(--mini-thread-content-inset)}body.mini .prose .image-carousel{margin-inline:calc(var(--mini-thread-content-inset)*-1)}body.mini .prose hr{display:none}body.mini .prose:has(.image-carousel),body.mini .super-widget-visible{--mini-thread-content-inset:.75rem}.sdtrn-root{background:unset!important;font-size:14px;line-height:20px}.sdtrn-root .draggable{app-region:drag}.sdtrn-root .no-draggable{app-region:no-drag}.sdtrn-root .no-draggable-children *{app-region:no-drag;-webkit-user-select:none;user-select:none}.sdtrn-root [data-radix-popper-content-wrapper],.sdtrn-root [role=dialog]{app-region:no-drag}.sdtrn-root [data-radix-popper-content-wrapper] li a,.sdtrn-root [role=button],.sdtrn-root button,.sdtrn-root div[role=menu],.sdtrn-root input[type=button],.sdtrn-root input[type=reset],.sdtrn-root input[type=submit],.sdtrn-root label{cursor:default}.sdtrn-root nav a{cursor:default;-webkit-user-select:none;user-select:none}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-font-weight:initial}}}.snc-root{font-size:var(--snc-text-base)}.snc{--snc-1:1.5rem;--snc-2:1.75rem;--snc-3:3rem;--snc-results-padding:1rem;--snc-input-height:2.875rem;--snc-text-base:16px;--snc-hover:#00000008;--main-surface-secondary:#f7f7f7;--main-surface-tertiary:#f1f1f1;--text-secondary:var(--gray-600);--text-tertiary:var(--gray-500);--snc-result-search-input-shadow:0 12px 20px -8px;--snc-answer-followup-input-shadow:0 -12px 20px -8px;--snc-input-shadow-mult:0}.snc .snc-accent-border{border:0}.snc ::-webkit-scrollbar{width:16px}[dir=ltr] .snc ::-webkit-scrollbar{background:0 0}[dir=rtl] .snc ::-webkit-scrollbar{background:100% 0}.snc ::-webkit-scrollbar-thumb{background:var(--main-surface-tertiary);border:4px solid var(--main-surface-primary);border-radius:8px}.snc ::-webkit-scrollbar-thumb:hover{background:var(--gray-200)}.dark .snc ::-webkit-scrollbar-thumb:hover{background:var(--gray-600)}@screen sm{--snc-input-shadow-mult:.1;--snc-input-height:3.25rem}.dark .snc,.dark .snc .dark{--snc-hover:#ffffff08;--snc-focus-border:#ffffffbf;--main-surface-primary:var(--gray-950);--main-surface-secondary:var(--gray-900);--main-surface-tertiary:var(--gray-700);--text-secondary:var(--gray-300);--text-tertiary:var(--gray-500);--border-light:#ffffff0d;--border-medium:#ffffff1f;--border-xheavy:#fff3;--gray-950:#141414;--snc-result-search-input-shadow:0 8px 12px -8px;--snc-answer-followup-input-shadow:0 -8px 12px -8px}:is(.dark .snc .dark,.dark .snc) .snc-accent-border{border:.5px solid var(--border-xheavy)}@screen sm{--snc-input-shadow-mult:1}.snc .user-query .prose p:first-child{margin-bottom:calc(var(--spacing,.25rem)*0)}.snc .prose :not(.not-prose,.not-prose *){max-width:100%}.snc .prose :not(.not-prose,.not-prose *) a{--tw-font-weight:var(--font-weight-normal,400);color:var(--link);font-weight:var(--font-weight-normal,400);text-decoration-line:none;text-underline-offset:2px}.snc .prose :not(.not-prose,.not-prose *)>h1:first-child{font-size:1.125rem}@screen 2xl{font-size:1.25rem}.snc .prose :not(.not-prose,.not-prose *) h1,.snc .prose :not(.not-prose,.not-prose *) h2,.snc .prose :not(.not-prose,.not-prose *) h3,.snc .prose :not(.not-prose,.not-prose *) h4,.snc .prose :not(.not-prose,.not-prose *) h5{--tw-font-weight:var(--font-weight-semibold,600);font-size:1rem;font-weight:var(--font-weight-semibold,600)}.snc .prose :not(.not-prose,.not-prose *) h3,.snc .prose :not(.not-prose,.not-prose *) h4{margin-bottom:calc(var(--spacing,.25rem)*1)}.snc .prose :not(.not-prose,.not-prose *) h3:first-child a{font-size:1.25rem;font-weight:500}.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) p,.snc .prose :not(.not-prose,.not-prose *) ul{margin-bottom:calc(var(--spacing,.25rem)*4)}:is(.snc .prose :not(.not-prose,.not-prose *) p,.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul):last-child{margin-bottom:calc(var(--spacing,.25rem)*0)}.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul{display:contents;list-style-position:inside;list-style-type:none;margin-top:calc(var(--spacing,.25rem)*0)}:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li{position:relative}:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li:has(.title-citation){margin-bottom:calc(var(--spacing,.25rem)*3)}:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li:has(.title-citation):last-child{margin-bottom:calc(var(--spacing,.25rem)*0)}:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li:before{position:absolute}[dir=ltr] :is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li:before{left:calc(var(--spacing,.25rem)*0)}[dir=rtl] :is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li:before{right:calc(var(--spacing,.25rem)*0)}:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li button,:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li>a{margin-block:calc(var(--spacing,.25rem)*0)}:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li p{margin-bottom:calc(var(--spacing,.25rem)*2);margin-top:calc(var(--spacing,.25rem)*0)}:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li ol,:is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li ul{display:block;margin-block:calc(var(--spacing,.25rem)*0);padding:calc(var(--spacing,.25rem)*0)}[dir=ltr] :is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li ol,[dir=ltr] :is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li ul{margin-left:calc(var(--spacing,.25rem)*4)}[dir=rtl] :is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li ol,[dir=rtl] :is(.snc .prose :not(.not-prose,.not-prose *) ol,.snc .prose :not(.not-prose,.not-prose *) ul)>li ul{margin-right:calc(var(--spacing,.25rem)*4)}.snc .prose :not(.not-prose,.not-prose *) ol{counter-reset:list-counter}.snc .prose :not(.not-prose,.not-prose *) ol>li{counter-increment:list-counter}[dir=ltr] .snc .prose :not(.not-prose,.not-prose *) ol>li{padding-left:calc(var(--spacing,.25rem)*8)}[dir=rtl] .snc .prose :not(.not-prose,.not-prose *) ol>li{padding-right:calc(var(--spacing,.25rem)*8)}.snc .prose :not(.not-prose,.not-prose *) ol>li:before{color:var(--text-secondary);content:counter(list-counter)"."}[dir=ltr] .snc .prose :not(.not-prose,.not-prose *) ul>li{padding-left:calc(var(--spacing,.25rem)*6)}[dir=rtl] .snc .prose :not(.not-prose,.not-prose *) ul>li{padding-right:calc(var(--spacing,.25rem)*6)}.snc .prose :not(.not-prose,.not-prose *) ul>li:before{content:"•"}.snc .prose :not(.not-prose,.not-prose *) strong{--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}.snc .prose.result-streaming .context-list:last-child:has(p):after{display:none}.snc .prose.result-streaming .context-list:last-child p:last-child:after{content:"●";display:inline;font-family:Circle,system-ui,sans-serif;line-height:normal;vertical-align:baseline}[dir=ltr] .snc .prose.result-streaming .context-list:last-child p:last-child:after{margin-left:.25rem}[dir=rtl] .snc .prose.result-streaming .context-list:last-child p:last-child:after{margin-right:.25rem}@property --tw-font-weight{syntax:"*";inherits:false}code,pre{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace!important}code[class=language-plaintext]{white-space:pre-line}code.hljs,code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;-webkit-hyphens:none;hyphens:none;line-height:1.5;tab-size:4;white-space:pre;word-break:normal;word-spacing:normal}[dir=ltr] code.hljs,[dir=ltr] code[class*=language-],[dir=ltr] pre[class*=language-]{text-align:left}[dir=rtl] code.hljs,[dir=rtl] code[class*=language-],[dir=rtl] pre[class*=language-]{text-align:right}pre[class*=language-]{border-radius:.3em;overflow:auto}:not(pre)>code.hljs,:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}:is(.light .dark,.dark) code.hljs,:is(.light .dark,.dark) code[class*=language-],:is(.light .dark,.dark) pre[class*=language-]{color:#fff}:is(.light .dark,.dark) .hljs-comment{color:#ffffff80}:is(.light .dark,.dark) .hljs-meta{color:#fff9}:is(.light .dark,.dark) .hljs-built_in,:is(.light .dark,.dark) .hljs-class .hljs-title{color:#e9950c}:is(.light .dark,.dark) .hljs-doctag,:is(.light .dark,.dark) .hljs-formula,:is(.light .dark,.dark) .hljs-keyword,:is(.light .dark,.dark) .hljs-literal{color:#2e95d3}:is(.light .dark,.dark) .hljs-addition,:is(.light .dark,.dark) .hljs-attribute,:is(.light .dark,.dark) .hljs-meta-string,:is(.light .dark,.dark) .hljs-regexp,:is(.light .dark,.dark) .hljs-string{color:#00a67d}:is(.light .dark,.dark) .hljs-attr,:is(.light .dark,.dark) .hljs-number,:is(.light .dark,.dark) .hljs-selector-attr,:is(.light .dark,.dark) .hljs-selector-class,:is(.light .dark,.dark) .hljs-selector-pseudo,:is(.light .dark,.dark) .hljs-template-variable,:is(.light .dark,.dark) .hljs-type,:is(.light .dark,.dark) .hljs-variable{color:#df3079}:is(.light .dark,.dark) .hljs-bullet,:is(.light .dark,.dark) .hljs-link,:is(.light .dark,.dark) .hljs-selector-id,:is(.light .dark,.dark) .hljs-symbol,:is(.light .dark,.dark) .hljs-title{color:#f22c3d}.light code.hljs,.light code[class*=language-],.light pre[class*=language-]{color:#383a42}.light .hljs-comment,.light .hljs-quote{color:#a0a1a7;font-style:italic}.light .hljs-doctag,.light .hljs-formula,.light .hljs-keyword{color:#a626a4}.light .hljs-deletion,.light .hljs-name,.light .hljs-section,.light .hljs-selector-tag,.light .hljs-subst{color:#e45649}.light .hljs-literal{color:#0184bb}.light .hljs-addition,.light .hljs-attribute,.light .hljs-meta-string,.light .hljs-regexp,.light .hljs-string{color:#50a14f}.light .hljs-built_in,.light .hljs-class .hljs-title{color:#c18401}.light .hljs-attr,.light .hljs-number,.light .hljs-selector-attr,.light .hljs-selector-class,.light .hljs-selector-pseudo,.light .hljs-template-variable,.light .hljs-type,.light .hljs-variable{color:#986801}.light .hljs-bullet,.light .hljs-link,.light .hljs-meta,.light .hljs-selector-id,.light .hljs-symbol,.light .hljs-title{color:#4078f2}.light .hljs-emphasis{font-style:italic}.light .hljs-strong{font-weight:700}.light .hljs-link{text-decoration:underline}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#a9aec1}.token.punctuation{color:#fefefe}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ffa07a}.token.boolean,.token.number{color:#00e0e0}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#abe338}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#00e0e0}.token.atrule,.token.attr-value,.token.function{color:gold}.token.keyword{color:#00e0e0}.token.important,.token.regex{color:gold}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@media screen and (-ms-high-contrast:active){code[class*=language-],pre[class*=language-]{background:window;color:windowText}:not(pre)>code[class*=language-],pre[class*=language-]{background:window}.token.important{background:highlight;color:window;font-weight:400}.token.atrule,.token.attr-value,.token.function,.token.keyword,.token.operator,.token.selector{font-weight:700}.token.attr-value,.token.comment,.token.doctype,.token.function,.token.keyword,.token.operator,.token.property,.token.string{color:highlight}.token.attr-value,.token.url{font-weight:400}}/*! tailwindcss v4.1.6 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}.react-select-container input:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.react-select-container .react-select__control{align-items:flex-start;border-color:#ececec;border-radius:var(--radius-lg,.5rem);font-size:var(--text-sm,.875rem);height:192px;line-height:var(--tw-leading,var(--text-sm--line-height,1.42857));min-height:192px;overflow:auto;padding:calc(var(--spacing,.25rem)*2)}@media (hover:hover){.react-select-container .react-select__control:hover{border-color:#e3e3e3}}.react-select-container .react-select__control:is(.dark *){background-color:#171717;border-color:#ffffff1a}@media (hover:hover){.react-select-container .react-select__control:hover:is(.dark *){border-color:#fff3}}.react-select-container.react-select--invalid .react-select__control,.react-select-container.react-select--invalid .react-select__control:is(.dark *){border-color:#e02e2a}.react-select-container .react-select__placeholder{padding-inline:calc(var(--spacing,.25rem)*2)}.react-select-container .react-select__input-container{color:var(--text-secondary);padding-inline:calc(var(--spacing,.25rem)*2)}.react-select-container .react-select__input{height:calc(var(--spacing,.25rem)*8)}.react-select-container .react-select__control--is-focused{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);border-color:#e3e3e3!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.react-select-container .react-select__control--is-focused:is(.dark *){border-color:#fff3!important}.react-select-container .react-select__value-container{padding:calc(var(--spacing,.25rem)*0)}.react-select-container .react-select__indicators:empty{display:none}.react-select-container .react-select__multi-value{background-color:#0000;margin:calc(var(--spacing,.25rem)*0)}.react-select-container .react-select__multi-value__label{padding:calc(var(--spacing,.25rem)*0)}#intercom-container{display:none}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000} diff --git a/CrossCoreEmbeddedStudio_Installation_Guide.pdf b/CrossCoreEmbeddedStudio_Installation_Guide.pdf new file mode 100644 index 0000000..249c741 Binary files /dev/null and b/CrossCoreEmbeddedStudio_Installation_Guide.pdf differ diff --git a/Mach-Zander_driver.png b/Mach-Zander_driver.png new file mode 100644 index 0000000..d8c5d06 Binary files /dev/null and b/Mach-Zander_driver.png differ diff --git a/Mach-Zander_voltage_plot.html b/Mach-Zander_voltage_plot.html new file mode 100644 index 0000000..ec84a64 --- /dev/null +++ b/Mach-Zander_voltage_plot.html @@ -0,0 +1,263972 @@ + + + +
+
+ + \ No newline at end of file diff --git a/Mach-Zehnder modulator.pdf b/Mach-Zehnder modulator.pdf new file mode 100644 index 0000000..356c743 Binary files /dev/null and b/Mach-Zehnder modulator.pdf differ diff --git a/Pasted image 20250109164828.png b/Pasted image 20250109164828.png new file mode 100644 index 0000000..a760e32 Binary files /dev/null and b/Pasted image 20250109164828.png differ diff --git a/Pasted image 20250211154358.png b/Pasted image 20250211154358.png new file mode 100644 index 0000000..39cf2ff Binary files /dev/null and b/Pasted image 20250211154358.png differ diff --git a/Pasted image 20250307134126.png b/Pasted image 20250307134126.png new file mode 100644 index 0000000..0e7ee6d Binary files /dev/null and b/Pasted image 20250307134126.png differ diff --git a/Pasted image 20250307134129.png b/Pasted image 20250307134129.png new file mode 100644 index 0000000..0e7ee6d Binary files /dev/null and b/Pasted image 20250307134129.png differ diff --git a/Pasted image 20250307134310.png b/Pasted image 20250307134310.png new file mode 100644 index 0000000..b314d04 Binary files /dev/null and b/Pasted image 20250307134310.png differ diff --git a/Pasted image 20250307134944.png b/Pasted image 20250307134944.png new file mode 100644 index 0000000..e07df25 Binary files /dev/null and b/Pasted image 20250307134944.png differ diff --git a/Pasted image 20250307135311.png b/Pasted image 20250307135311.png new file mode 100644 index 0000000..7ba57b1 Binary files /dev/null and b/Pasted image 20250307135311.png differ diff --git a/Pasted image 20250307135353.png b/Pasted image 20250307135353.png new file mode 100644 index 0000000..c3f0cad Binary files /dev/null and b/Pasted image 20250307135353.png differ diff --git a/Pasted image 20250307135409.png b/Pasted image 20250307135409.png new file mode 100644 index 0000000..f4215c3 Binary files /dev/null and b/Pasted image 20250307135409.png differ diff --git a/Pasted image 20250307165738.png b/Pasted image 20250307165738.png new file mode 100644 index 0000000..9a6c0fd Binary files /dev/null and b/Pasted image 20250307165738.png differ diff --git a/Pasted image 20250307170056.png b/Pasted image 20250307170056.png new file mode 100644 index 0000000..94b654e Binary files /dev/null and b/Pasted image 20250307170056.png differ diff --git a/Pasted image 20250407153513.png b/Pasted image 20250407153513.png new file mode 100644 index 0000000..5b36d18 Binary files /dev/null and b/Pasted image 20250407153513.png differ diff --git a/Pasted image 20250408214013.png b/Pasted image 20250408214013.png new file mode 100644 index 0000000..78af5a2 Binary files /dev/null and b/Pasted image 20250408214013.png differ diff --git a/Pasted image 20250408215951.png b/Pasted image 20250408215951.png new file mode 100644 index 0000000..037257c Binary files /dev/null and b/Pasted image 20250408215951.png differ diff --git a/Pasted image 20250408220233.png b/Pasted image 20250408220233.png new file mode 100644 index 0000000..88eddc1 Binary files /dev/null and b/Pasted image 20250408220233.png differ diff --git a/Pasted image 20250425151638.png b/Pasted image 20250425151638.png new file mode 100644 index 0000000..2188bed Binary files /dev/null and b/Pasted image 20250425151638.png differ diff --git a/Pasted image 20250627192138.png b/Pasted image 20250627192138.png new file mode 100644 index 0000000..7b23b0d Binary files /dev/null and b/Pasted image 20250627192138.png differ diff --git a/Pasted image 20250711184340.png b/Pasted image 20250711184340.png new file mode 100644 index 0000000..6a9cb06 Binary files /dev/null and b/Pasted image 20250711184340.png differ diff --git a/Pasted image 20250711184407.png b/Pasted image 20250711184407.png new file mode 100644 index 0000000..9730677 Binary files /dev/null and b/Pasted image 20250711184407.png differ diff --git a/Pasted image 20250711184438.png b/Pasted image 20250711184438.png new file mode 100644 index 0000000..eda76a3 Binary files /dev/null and b/Pasted image 20250711184438.png differ diff --git a/Pasted image 20250916220932.png b/Pasted image 20250916220932.png new file mode 100644 index 0000000..6477468 Binary files /dev/null and b/Pasted image 20250916220932.png differ diff --git a/Pasted image 20250916221016.png b/Pasted image 20250916221016.png new file mode 100644 index 0000000..91fbc91 Binary files /dev/null and b/Pasted image 20250916221016.png differ diff --git a/Pasted image 20250916221400.png b/Pasted image 20250916221400.png new file mode 100644 index 0000000..6ce1d60 Binary files /dev/null and b/Pasted image 20250916221400.png differ diff --git a/Pasted image 20250916221611.png b/Pasted image 20250916221611.png new file mode 100644 index 0000000..2910cdf Binary files /dev/null and b/Pasted image 20250916221611.png differ diff --git a/Pasted image 20250916221856.png b/Pasted image 20250916221856.png new file mode 100644 index 0000000..2c0c016 Binary files /dev/null and b/Pasted image 20250916221856.png differ diff --git a/Pasted image 20250917153156.png b/Pasted image 20250917153156.png new file mode 100644 index 0000000..311efb1 Binary files /dev/null and b/Pasted image 20250917153156.png differ diff --git a/Pasted image 20250917161539.png b/Pasted image 20250917161539.png new file mode 100644 index 0000000..e69de29 diff --git a/Pasted image 20250917161645.png b/Pasted image 20250917161645.png new file mode 100644 index 0000000..7205986 Binary files /dev/null and b/Pasted image 20250917161645.png differ diff --git a/Pasted image 20250917161724.png b/Pasted image 20250917161724.png new file mode 100644 index 0000000..e4a155d Binary files /dev/null and b/Pasted image 20250917161724.png differ diff --git a/Pasted image 20250917193215.png b/Pasted image 20250917193215.png new file mode 100644 index 0000000..8433484 Binary files /dev/null and b/Pasted image 20250917193215.png differ diff --git a/Pasted image 20250917193217.png b/Pasted image 20250917193217.png new file mode 100644 index 0000000..8433484 Binary files /dev/null and b/Pasted image 20250917193217.png differ diff --git a/Pasted image 20250917193401.png b/Pasted image 20250917193401.png new file mode 100644 index 0000000..1ab3081 Binary files /dev/null and b/Pasted image 20250917193401.png differ diff --git a/Pasted image 20250917193951.png b/Pasted image 20250917193951.png new file mode 100644 index 0000000..24ad3ca Binary files /dev/null and b/Pasted image 20250917193951.png differ diff --git a/Pasted image 20250917194104.png b/Pasted image 20250917194104.png new file mode 100644 index 0000000..66cf698 Binary files /dev/null and b/Pasted image 20250917194104.png differ diff --git a/Pasted image 20250917194134.png b/Pasted image 20250917194134.png new file mode 100644 index 0000000..f13f90f Binary files /dev/null and b/Pasted image 20250917194134.png differ diff --git a/R31c (aka REF31xx).pdf b/R31c (aka REF31xx).pdf new file mode 100644 index 0000000..d522287 Binary files /dev/null and b/R31c (aka REF31xx).pdf differ diff --git a/RigolDS0 1.png b/RigolDS0 1.png new file mode 100644 index 0000000..e980488 Binary files /dev/null and b/RigolDS0 1.png differ diff --git a/RigolDS0 2.png b/RigolDS0 2.png new file mode 100644 index 0000000..a0d69ec Binary files /dev/null and b/RigolDS0 2.png differ diff --git a/RigolDS0.bmp b/RigolDS0.bmp new file mode 100644 index 0000000..f9ce79b Binary files /dev/null and b/RigolDS0.bmp differ diff --git a/RigolDS0.png b/RigolDS0.png new file mode 100644 index 0000000..ed66ab5 Binary files /dev/null and b/RigolDS0.png differ diff --git a/RigolDS1 1.png b/RigolDS1 1.png new file mode 100644 index 0000000..7d83ee0 Binary files /dev/null and b/RigolDS1 1.png differ diff --git a/RigolDS1.png b/RigolDS1.png new file mode 100644 index 0000000..d60fa89 Binary files /dev/null and b/RigolDS1.png differ diff --git a/RigolDS10.png b/RigolDS10.png new file mode 100644 index 0000000..1e2a22c Binary files /dev/null and b/RigolDS10.png differ diff --git a/RigolDS11.png b/RigolDS11.png new file mode 100644 index 0000000..b0d940f Binary files /dev/null and b/RigolDS11.png differ diff --git a/RigolDS12.png b/RigolDS12.png new file mode 100644 index 0000000..60d09c8 Binary files /dev/null and b/RigolDS12.png differ diff --git a/RigolDS13.png b/RigolDS13.png new file mode 100644 index 0000000..ed815ac Binary files /dev/null and b/RigolDS13.png differ diff --git a/RigolDS14.png b/RigolDS14.png new file mode 100644 index 0000000..d7f26f1 Binary files /dev/null and b/RigolDS14.png differ diff --git a/RigolDS16.png b/RigolDS16.png new file mode 100644 index 0000000..b0478f9 Binary files /dev/null and b/RigolDS16.png differ diff --git a/RigolDS17.png b/RigolDS17.png new file mode 100644 index 0000000..4d74552 Binary files /dev/null and b/RigolDS17.png differ diff --git a/RigolDS2 1.png b/RigolDS2 1.png new file mode 100644 index 0000000..9591e67 Binary files /dev/null and b/RigolDS2 1.png differ diff --git a/RigolDS2.png b/RigolDS2.png new file mode 100644 index 0000000..51bca46 Binary files /dev/null and b/RigolDS2.png differ diff --git a/RigolDS20.png b/RigolDS20.png new file mode 100644 index 0000000..f204acc Binary files /dev/null and b/RigolDS20.png differ diff --git a/RigolDS23.png b/RigolDS23.png new file mode 100644 index 0000000..64ad75f Binary files /dev/null and b/RigolDS23.png differ diff --git a/RigolDS24.png b/RigolDS24.png new file mode 100644 index 0000000..82115a5 Binary files /dev/null and b/RigolDS24.png differ diff --git a/RigolDS25.png b/RigolDS25.png new file mode 100644 index 0000000..8a2db5f Binary files /dev/null and b/RigolDS25.png differ diff --git a/RigolDS26.png b/RigolDS26.png new file mode 100644 index 0000000..e2e8b6f Binary files /dev/null and b/RigolDS26.png differ diff --git a/RigolDS3.png b/RigolDS3.png new file mode 100644 index 0000000..cb6f11c Binary files /dev/null and b/RigolDS3.png differ diff --git a/RigolDS4.png b/RigolDS4.png new file mode 100644 index 0000000..ede0a59 Binary files /dev/null and b/RigolDS4.png differ diff --git a/RigolDS5 1.png b/RigolDS5 1.png new file mode 100644 index 0000000..dbaf160 Binary files /dev/null and b/RigolDS5 1.png differ diff --git a/RigolDS5.png b/RigolDS5.png new file mode 100644 index 0000000..5dd6d94 Binary files /dev/null and b/RigolDS5.png differ diff --git a/RigolDS6 1.png b/RigolDS6 1.png new file mode 100644 index 0000000..d3eb2f9 Binary files /dev/null and b/RigolDS6 1.png differ diff --git a/RigolDS6.png b/RigolDS6.png new file mode 100644 index 0000000..f75267a Binary files /dev/null and b/RigolDS6.png differ diff --git a/RigolDS7.png b/RigolDS7.png new file mode 100644 index 0000000..f1ba1a1 Binary files /dev/null and b/RigolDS7.png differ diff --git a/RigolDS8 1.png b/RigolDS8 1.png new file mode 100644 index 0000000..a58f966 Binary files /dev/null and b/RigolDS8 1.png differ diff --git a/RigolDS8.png b/RigolDS8.png new file mode 100644 index 0000000..7f8a2fb Binary files /dev/null and b/RigolDS8.png differ diff --git a/RigolDS9 1.png b/RigolDS9 1.png new file mode 100644 index 0000000..bfe7a39 Binary files /dev/null and b/RigolDS9 1.png differ diff --git a/RigolDS9.png b/RigolDS9.png new file mode 100644 index 0000000..f4f5cbd Binary files /dev/null and b/RigolDS9.png differ diff --git a/TPH2501_GBW_120M.pdf b/TPH2501_GBW_120M.pdf new file mode 100644 index 0000000..689b817 Binary files /dev/null and b/TPH2501_GBW_120M.pdf differ diff --git a/Templates/Задача template.md b/Templates/Задача template.md new file mode 100644 index 0000000..34d1afb --- /dev/null +++ b/Templates/Задача template.md @@ -0,0 +1,6 @@ +# +## Проблема + +## Анализ + +## Решение diff --git a/Untitled.md b/Untitled.md new file mode 100644 index 0000000..e69de29 diff --git a/Upper_layer_described.png b/Upper_layer_described.png new file mode 100644 index 0000000..35f37de Binary files /dev/null and b/Upper_layer_described.png differ diff --git a/Welcome.md b/Welcome.md new file mode 100644 index 0000000..db65fcb --- /dev/null +++ b/Welcome.md @@ -0,0 +1,6 @@ +[[Железо]] +[[Задачи]] +[[анализ кода for_stm32_cubeide]] +[[код for_stm32_2023_12_08]] +[[Кодовая база]] +[[laser diode module]] \ No newline at end of file diff --git a/ad5541a.pdf b/ad5541a.pdf new file mode 100644 index 0000000..ade9eb6 Binary files /dev/null and b/ad5541a.pdf differ diff --git a/ad623.pdf b/ad623.pdf new file mode 100644 index 0000000..109f2cd Binary files /dev/null and b/ad623.pdf differ diff --git a/device_commands.py b/device_commands.py new file mode 100644 index 0000000..e839576 --- /dev/null +++ b/device_commands.py @@ -0,0 +1,346 @@ +from enum import IntEnum +from serial import Serial +from serial.tools import list_ports +import device_conversion as cnv +from datetime import datetime + +#### ---- Constants + +GET_DATA_TOTAL_LENGTH = 30 # Total number of bytes when getting DATA +SEND_PARAMS_TOTAL_LENGTH = 30 # Total number of bytes when sending parameters +TASK_ENABLE_COMMAND_LENGTH = 32 # Total number of bytes when sending TASK_ENABLE command + +class TaskType(IntEnum): + Manual = 0x00 + ChangeCurrentLD1 = 0x01 + ChangeCurrentLD2 = 0x02 + ChangeTemperatureLD1 = 0x03 + ChangeTemperatureLD2 = 0x04 +#### ---- Auxiliary functions + +def int_to_hex(inp): + if inp<0 or inp>65535: + print("Error. Input should be within [0, 65535]. Returning N=0.") + return "0000" + return f"{inp:#0{6}x}"[2:] + +def crc(lst): + crc=int("0x"+lst[0],16) + for i in range(1,len(lst)): + crc=crc^int("0x"+lst[i],16) + return int_to_hex(crc) + +def show_hex_string(string): + return "".join("\\x{}".format(char.encode()) for char in (string[i:i+2] for i in range(0, len(string), 2))) + + +def flipfour(s): + ''' Changes "abcd" to "cdba" + ''' + if len(s) != 4: + print("Error. Trying to flip string with length not equal to 4.") + return None + return s[2:4]+s[0:2] + + +#### ---- Port Operations + + +def setup_port_connection(baudrate: int, port: str, timeout_sec: float): + prt = Serial() + prt.baudrate = baudrate + prt.port = port + prt.timeout = timeout_sec + return prt + + +def open_port(prt): + prt.open() + + if prt.is_open: + print("Connection succesful. Port is opened.") + print("Port parameters:", prt) + print("") + else: + print("Can't open port. Exiting program.") + exit() + + +def close_port(prt): + prt.close() + print("") + if prt.is_open: + print("Can't close port. Exiting program.") + exit() + else: + print("Port is closed. Exiting program.") + exit() + + +#### ---- Interacting with device: low-level + +# ---- Sending commands + +def send_TASK_ENABLE(prt, bytestring): + ''' Set task parameters (x7777 + ...). + Expected device answer: STATE. + ''' + if len(bytestring) != TASK_ENABLE_COMMAND_LENGTH: + print("Error. Wrong parameter string for TASK_ENABLE.") + return None + prt.write(bytestring) + print("Sent: Set control parameters (TASK_ENABLE).") + +def send_DECODE_ENABLE(prt, bytestring): + ''' Set control parameters (x1111 + ...). + Expected device answer: STATE. + ''' + if len(bytestring) != SEND_PARAMS_TOTAL_LENGTH: + print("Error. Wrong parameter string for DECODE_ENABLE.") + return None + prt.write(bytestring) + print("Sent: Set control parameters (DECODE_ENABLE).") + + +def send_DEFAULT_ENABLE(prt): + ''' Reset the device (x2222). + Expected device answer: STATE. + ''' + input = bytearray.fromhex(flipfour("2222")) + prt.write(input) + print("Sent: Reset device (DEFAULT_ENABLE).") + + +def send_TRANSS_ENABLE(prt): + ''' Request all saved data (x3333). + Expected device answer: SAVED_DATA. + ''' + # TODO later. + pass + + +def send_TRANS_ENABLE(prt): + ''' Request last piece of data (x4444). + Expected device answer: DATA. + ''' + input = bytearray.fromhex(flipfour("4444")) + prt.write(input) + print("Sent: Request last data (TRANS_ENABLE).") + + +def send_REMOVE_FILE(prt): + ''' Delete saved data (x5555). + Expected device answer: STATE. + ''' + input = bytearray.fromhex(flipfour("5555")) + prt.write(input) + print("Sent: Delete saved data (REMOVE_FILE).") + pass + + +def send_STATE(prt): + ''' Request state (x6666). + Expected device answer: STATE. + ''' + input = bytearray.fromhex(flipfour("6666")) + prt.write(input) + print("Sent: Request state (STATE).") + pass + + +# ---- Getting data + + +def get_STATE(prt): + ''' Get decoded state of the device in byte format (2 bytes). + ''' + + print("Received "+str(prt.inWaiting())+" bytes.") + if prt.inWaiting()!=2: + print("Error. Couldn't get STATE data. prt.inWaiting():", prt.inWaiting()) + print("Flushing input data:", prt.read(prt.inWaiting())) + # print("Flushing input data:", prt.read(2), prt.read(2)) + return None + + out_bytes = prt.read(2) + return out_bytes + + +def get_DATA(prt): + ''' Get decoded state of the device in byte format (426 bytes). + ''' + + print("Received "+str(prt.inWaiting())+" bytes.\n") + if prt.inWaiting()!=GET_DATA_TOTAL_LENGTH: + print("Error. Couldn't get DATA data.") + return None + + out_bytes = prt.read(GET_DATA_TOTAL_LENGTH) + return out_bytes + + +#### ---- Interacting with device: decode/encode messages + +# ---- Encoding functions +def CalculateCRC(data): + CRC_input = [] + for i in range(1,int(len(data)/4)): + CRC_input.append(data[4*i:4*i+4]) + return crc(CRC_input) + +def encode_Setup(): + bits=['0']*16 + + bits[15] = "1" # enable work + bits[14] = "1" # enable 5v1 + bits[13] = "1" # enable 5v2 + bits[12] = "1" # enable LD1 + bits[11] = "1" # enable LD2 + bits[10] = "1" # enable REF1 + bits[9] = "1" # enable REF2 + bits[8] = "1" # enable TEC1 + bits[7] = "1" # enable TEC2 + bits[6] = "1" # enable temp stab 1 + bits[5] = "1" # enable temp stab 2 + bits[4] = "0" # enable sd save + bits[3] = "1" # enable PI1 coef read + bits[2] = "1" # enable PI2 coef read + bits[1] = "0" # reserved + bits[0] = "0" # reserved + + s="".join([str(i) for i in bits]) + return hex(int(s,2))[2:] + +def create_TaskEnableCommand(sending_param): + data = flipfour("7777") # Word 0 + data += flipfour(encode_Setup()) # Word 1 + data += flipfour(int_to_hex(sending_param['TaskType'])) # Word 2 + match sending_param['TaskType']: + case TaskType.ChangeCurrentLD1.value: + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MinC1']))) # Word 3 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MaxC1']))) # Word 4 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['DeltaC1']))) # Word 5 + data += flipfour(int_to_hex(int(sending_param['Dt']*100))) # Word 6 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T1']))) # Word 7 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['I2']))) # Word 8 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T2']))) # Word 9 + case TaskType.ChangeCurrentLD2.value: + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MinC2']))) # Word 3 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MaxC2']))) # Word 4 + data += flipfour(int_to_hex(int(sending_param['DeltaC2']*100))) # Word 5 + data += flipfour(int_to_hex(int(sending_param['Dt']*100))) # Word 6 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T2']))) # Word 7 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['I1']))) # Word 8 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T1']))) # Word 9 + case TaskType.ChangeTemperatureLD1: + raise Exception("Temperature changing is not implemented yet") + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MinT1']))) # Word 3 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MaxT1']))) # Word 4 + data += flipfour(int_to_hex(sending_param['DeltaT1']*100)) # Word 5 + data += flipfour(int_to_hex(sending_param['Dt']*100)) # Word 6 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['I1']))) # Word 7 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['I2']))) # Word 8 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T2']))) # Word 9 + case TaskType.ChangeTemperatureLD2: + raise Exception("Temperature changing is not implemented yet") + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MinT2']))) # Word 3 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['MaxT2']))) # Word 4 + data += flipfour(int_to_hex(sending_param['DeltaT2']*100)) # Word 5 + data += flipfour(int_to_hex(sending_param['Dt']*100)) # Word 6 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['I2']))) # Word 7 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(sending_param['I1']))) # Word 8 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(sending_param['T1']))) # Word 9 + case _: + raise Exception(f"Undefined TaskType:{sending_param['TaskType']}") + data += flipfour(int_to_hex(int(sending_param['Tau']))) # Word 10 + data += flipfour(int_to_hex(sending_param['ProportionalCoeff_1'])) # Word 11 + data += flipfour(int_to_hex(sending_param['IntegralCoeff_1'])) # Word 12 + data += flipfour(int_to_hex(sending_param['ProportionalCoeff_2'])) # Word 13 + data += flipfour(int_to_hex(sending_param['IntegralCoeff_2'])) # Word 14 + data += CalculateCRC(data) # Word 15 + + return bytearray.fromhex(data) + +def encode_Input(params): + + if params is None: + return bytearray.fromhex("1111"+"00"*14) + + data = flipfour("1111") # Word 0 + data += flipfour(encode_Setup()) # Word 1 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(params['Temp_1']))) # Word 2 + data += flipfour(int_to_hex(cnv.conv_T_C_to_N(params['Temp_2']))) # Word 3 + data += flipfour("0000")*3 # Words 4-6 + data += flipfour(int_to_hex(params['ProportionalCoeff_1'])) # Word 7 + data += flipfour(int_to_hex(params['IntegralCoeff_1'])) # Word 8 + data += flipfour(int_to_hex(params['ProportionalCoeff_2'])) # Word 9 + data += flipfour(int_to_hex(params['IntegralCoeff_2'])) # Word 10 + data += flipfour(params['Message_ID']) # Word 11 + + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(params['Iset_1']))) # Word 12 + data += flipfour(int_to_hex(cnv.conv_I_mA_to_N(params['Iset_2']))) # Word 13 + + CRC_input = [] + for i in range(1,int(len(data)/4)): + CRC_input.append(data[4*i:4*i+4]) + + CRC = crc(CRC_input) + data += CRC # Word 14 + + return bytearray.fromhex(data) + + +# ---- Decoding functions + +def decode_STATE(state): + st = flipfour(state) + if st == '0000': + status = "All ok." + elif st == '0001': + status = "SD Card reading/writing error (SD_ERR)." + elif st == '0002': + status = "Command error (UART_ERR)." + elif st == '0004': + status = "Wrong parameter value error (UART_DECODE_ERR)." + elif st == '0008': + status = "Laser 1: TEC driver overheat (TEC1_ERR)." + elif st == '0010': + status = "Laser 2: TEC driver overheat (TEC2_ERR)." + elif st == '0020': + status = "Resetting system error (DEFAULT_ERR)." + elif st == '0040': + status = "File deletion error (REMOVE_ERR)." + else: + status = "Unknown or reserved error." + return status + + +def decode_DATA(dh): + def get_word(s,num): + return flipfour(s[num*2*2:num*2*2+4]) + def get_int_word(s,num): + return int(get_word(s,num),16) + + data = {} + data['datetime'] = datetime.now() + data['Header'] = get_word(dh, 0) + data['I1'] = cnv.conv_I_N_to_mA(get_int_word(dh, 1)) + data['I2'] = cnv.conv_I_N_to_mA(get_int_word(dh, 2)) + data['TO_LSB'] = get_int_word(dh, 3) + data['TO_MSB'] = get_int_word(dh, 4) + data['Temp_1'] = cnv.conv_T_N_to_C(get_int_word(dh, 5)) + data['Temp_2'] = cnv.conv_T_N_to_C(get_int_word(dh, 6)) + data['Temp_Ext_1'] = cnv.conv_TExt_N_to_C(get_int_word(dh, 7)) + data['Temp_Ext_2'] = cnv.conv_TExt_N_to_C(get_int_word(dh, 8)) + data['MON_3V3'] = cnv.conv_U3V3_N_to_V(get_int_word(dh, 9)) + data['MON_5V1'] = cnv.conv_U5V_N_to_V(get_int_word(dh, 10)) + data['MON_5V2'] = cnv.conv_U5V_N_to_V(get_int_word(dh, 11)) + data['MON_7V0'] = cnv.conv_U7V_N_to_V(get_int_word(dh, 12)) + data['Message_ID'] = get_word(dh, 13) # Last received command + data['CRC'] = get_word(dh, 14) + + return data + + + + diff --git a/e-502_users_guide.pdf b/e-502_users_guide.pdf new file mode 100644 index 0000000..dea424c Binary files /dev/null and b/e-502_users_guide.pdf differ diff --git a/laser diode module.md b/laser diode module.md new file mode 100644 index 0000000..7877ca3 --- /dev/null +++ b/laser diode module.md @@ -0,0 +1,4 @@ +модель сборки: BFLD-1550-40SM-FA2 +статья про DFB (Distributed FeedBack) laser modules: [[recent20advances20DFB20lasers20ultradense20wdm20JSTQE04.pdf]] +строение модуля: +![[Pasted image 20250109164828.png]] \ No newline at end of file diff --git a/newplot(1).png b/newplot(1).png new file mode 100644 index 0000000..a91cab4 Binary files /dev/null and b/newplot(1).png differ diff --git a/newplot(2).png b/newplot(2).png new file mode 100644 index 0000000..b271cb0 Binary files /dev/null and b/newplot(2).png differ diff --git a/newplot(3).png b/newplot(3).png new file mode 100644 index 0000000..931b3ef Binary files /dev/null and b/newplot(3).png differ diff --git a/newplot.png b/newplot.png new file mode 100644 index 0000000..c4d1aea Binary files /dev/null and b/newplot.png differ diff --git a/opa569.pdf b/opa569.pdf new file mode 100644 index 0000000..8879e3d Binary files /dev/null and b/opa569.pdf differ diff --git a/photo_2025-04-25_15-40-33.jpg b/photo_2025-04-25_15-40-33.jpg new file mode 100644 index 0000000..f9b72fd Binary files /dev/null and b/photo_2025-04-25_15-40-33.jpg differ diff --git a/photo_2025-04-25_15-40-35.jpg b/photo_2025-04-25_15-40-35.jpg new file mode 100644 index 0000000..6b27ec8 Binary files /dev/null and b/photo_2025-04-25_15-40-35.jpg differ diff --git a/recent20advances20DFB20lasers20ultradense20wdm20JSTQE04.pdf b/recent20advances20DFB20lasers20ultradense20wdm20JSTQE04.pdf new file mode 100644 index 0000000..a2d3d0b Binary files /dev/null and b/recent20advances20DFB20lasers20ultradense20wdm20JSTQE04.pdf differ diff --git a/rm0410-stm32f76xxx-stm32f77xxx-reference_manual.pdf b/rm0410-stm32f76xxx-stm32f77xxx-reference_manual.pdf new file mode 100644 index 0000000..36eb449 Binary files /dev/null and b/rm0410-stm32f76xxx-stm32f77xxx-reference_manual.pdf differ diff --git a/t4531-diff-op-amp.pdf b/t4531-diff-op-amp.pdf new file mode 100644 index 0000000..7df8494 Binary files /dev/null and b/t4531-diff-op-amp.pdf differ diff --git a/x502_low_level.pdf b/x502_low_level.pdf new file mode 100644 index 0000000..9df04f2 Binary files /dev/null and b/x502_low_level.pdf differ diff --git a/АЦП E-502.md b/АЦП E-502.md new file mode 100644 index 0000000..70ddccf --- /dev/null +++ b/АЦП E-502.md @@ -0,0 +1,72 @@ +kihttps://www.lcard.ru/products/external/e-502 + +[[модулятор Маха-Цандера]] +[[детекторная головка]] +# Linux +установка из репозитория: +`sudo apt-add-repository deb https://download.opensuse.org/repositories/home:/l-card/xUbuntu_24.10 / +sudo apt install ltrd ltrmanger libltrapi1-dev` + + +![[e-502_users_guide.pdf]] + + +### Оценка времени семплирования АЦП +![[RigolDS0 2.png]] +Желтый -- сигнал синхронизации АЦП (по растущему фронту). Голубой -- сигнал, подаваемый на вход АЦП. +Когда сигнал синхронизации находится в положении AX (-37 нс) -- результат АЦП близок к минимуму (не более 10 %), когда синхронизация происходит в положении BX (+71 нс) -- результат АЦП близок к максимуму (~ 90%). +==> Семплирование происходит в промежутке __от -71 нс до +37 нс__ (инвертированный промежуток A-B). + + + +# Синхронное детектирование с АЦП +Принцип: +Плата генератора создает 3 сигнала: +1. меандр для модулятора Маха-Цандера +2. тактовая частота для АПЦ +3. синхроимпульс для запуска АЦП + +Рабочий цикл: +1. комп настраивает плату генератора и АЦП +2. python на компе запускает ЛЧМ на плате +3. плата начинает цикл ЛЧМ, модулируя сигнал и подавая тактирующие импульсы на АЦП в правильные моменты +4. после N циклов ЛЧМ тактирование прекращается, плата сигнализирует компу. +5. Комп запускает выгрузку данных с АЦП. +### realisation + +Фазы обеих клоков будем обнулять в начале цикла ЛЧМ. +#### BP9 (OUT_11) -- Modulation -> Mach-Zander +TIM11_CH1 +Тактирование от APB2 (184 MHz). Желаемая частота -- 1 МГц. => Prescaler =1, ARR = 91, OCR1=22 +Подключим его через драйвер к модулятору Маха-Цандера. +#### BP8 (OUT_10) -- ADC_clock -> DI_SYN1 +TIM4_CH3 +Тактирование от APB1 (92 MHz). Желаемая частота -- 2 МГц. => Prescaler = 0, ARR = 45, OCR3=22 +Подключим его к DI_SYN1. + + +#### PD7 (TASK_TRG) -- trigger -> DI_SYN2 + + +#### E-502 DAC +Выходы ЦАП могут быть использованы для задания уровней сигналов для драйвера модулятора Маха-Цандера! + + +#TODO шунтировать резистором 1кОм на землю выход детекторной головки. Желательно, в разъеме для подключения к АЦП. + + +#### Драйвер модулятора Маха-Цандера: +![[Pasted image 20250408214013.png]] +![[Mach-Zander_driver.png]] + + +#### Адаптер на разъем платы генератора +![[Pasted image 20250408215951.png]] + +#### Нагрузка для детекторной головки +![[Pasted image 20250408220233.png]] +Нужный резистор выбирается напаиванием короткого черного проводка слева. Сейчас выбрана нагрузка 1 кОм + + +## +## \ No newline at end of file diff --git a/Железо.md b/Железо.md new file mode 100644 index 0000000..5f7663c --- /dev/null +++ b/Железо.md @@ -0,0 +1,72 @@ + +| номер на плате | роль | микросхема | полное название | назначение | datasheet | +| -------------- | ---------------------------------------------------------- | ---------------- | --------------- | -------------------------- | ------------------------------------------------------------------------------------------------ | +| DA6 | | R31C | REF312A | LDO/Vref | [[R31c (aka REF31xx).pdf]]; https://www.ti.com/product/REF3125 | +| DA13 | DAC пельтье | AD5541A | AD5541 | DAC | [[ad5541a.pdf]]; https://www.analog.com/en/products/ad5541a.html | +| DA12 | предусилитель пельтье | AD8571A | AD8571 | op-amp | [[AD8571.pdf]]; https://docs.rs-online.com/498a/0900766b804ffe33.pdf | +| DA11 | драйвер пельтье. Дифф выходы подаются на силовые усилители | T4531 | T4531 | differential op-amp | [[t4531-diff-op-amp.pdf]]; https://www.ti.com/lit/ds/symlink/ths4531.pdf | +| DA10 | силовой драйвер пельтье | 24C3PKT; OPA569A | OPA569 | powerful op-amp (Iout =2A) | [[opa569.pdf]];https://www.ti.com/lit/ds/symlink/opa569.pdf | +| DA11 | силовой драйвер пельтье | 24C3PKT; OPA569A | OPA569 | powerful op-amp (Iout =2A) | [[opa569.pdf]];https://www.ti.com/lit/ds/symlink/opa569.pdf | +| DA30 | усилитель температуры | AD8656 | AD8656 | op-amp | [[AD8655_8656.pdf]]; https://www.analog.com/en/products/ad8656.html | +| DA29 | ADC температуры | C3P | AD7686 | ADC | [[AD7686 2.pdf]]; https://www.analog.com/media/en/technical-documentation/data-sheets/AD7686.pdf | +| DA31 | усилитель фотодиода | AD8656 | AD8656 | op-amp | [[AD8655_8656.pdf]]; https://www.analog.com/en/products/ad8656.html | +| DA32 | ADC фотодиода | C3P | AD7686 | ADC | [[AD7686 2.pdf]]; https://www.analog.com/media/en/technical-documentation/data-sheets/AD7686.pdf | +| DA15 | DAC лазера | AD5541A | AD5541 | DAC | [[ad5541a.pdf]]; https://www.analog.com/en/products/ad5541a.html | +| DA33 | Усилитель сигнала, идущего в сторону MCU | AD623A | AD623 | instrumentation amplifier | [[ad623.pdf]];https://www.analog.com/en/products/ad623.html | +когда температура скачет -- на входах в ацп -- всё хорошо, изменения плавные +SPI2 -- сначала установка температуры, потом (через 17 мкс) тока лазера. #TODO проверить, совпадает ли с кодом? каким? +При "колебаниях" температуры -- мощность действительно меняется. +На выходе температурного АЦП -- значения скачут от 0 до 0xFFFF. + + +#U_Rtx_ext_Gain +Датчики температуры, расположенные рядом с каждым из лазерных модулей. +Принцип работы: термистор RT2 -> делитель -> DA20 (ОУ AD623, запрограммированный на усиление в 1.556 раз) -> PB(0,1). + + +![[Upper_layer_described.png]] + + +![[Pasted image 20250407153513.png]] +## STM32F767 +### тактирование +1. APB1 + 1. TIM 2, 3, 4, 5, 6, 7, 12, 13, 14 + 2. LPTIM 1 + 3. UART 2, 3, 4, 5, 7, 8 + 4. SPI 2, 3 + 5. I2C 1, 2, 3, 4 + 6. CAN 1, 2, 3 + 7. DAC + 8. WWDG + 9. PWE + 10. CEC +2. APB2 + 1. TIM 1, 8, 9, 10, 11 + 2. USART 1, 6 + 3. SPI 1, 4, 5, 6 + 4. ADC + 5. SDMMC 1, 2 + 6. SYSCFG + 7. LTDC + 8. DSI + 9. MDIO + 10. DFSDM 1 + 11. SAI 1, 2 + + +### TIM +Тактирование: + + +[[rm0410-stm32f76xxx-stm32f77xxx-reference_manual.pdf]] + + + + + +[[Радар и связи компонентов]] + + + +## [[Bit Setting in C]] \ No newline at end of file diff --git a/Задачи.md b/Задачи.md new file mode 100644 index 0000000..ecd0c89 --- /dev/null +++ b/Задачи.md @@ -0,0 +1,265 @@ +# 1 +NaN: +Всё взаимодействие через UART +вопрос в следующем после получения пакета с заданием 0х7777 он начинает работу по перестройке тока, параметры заданы в пакете. каждую секунду приходит еще пакет +`Sent: Request last data (TRANS_ENABLE). +`Received 30 bytes + +формируется ответ и отправляются значения температур диодов + +**вопрос где тут в коде формируется ответный пакет с параметрами температур** + +Вы посмотрите, а потом решим когда) + +![[0x1111_descrtxt.txt]] +У меня возникает недопонимание тут, +![[0x7777_task_command.txt]] + +вместе с начальным током перестроения лазера 1, устанавливается ток лазера 1 +и я не могу понять в **каком месте он ставит этот ток при сообщении 0х7777** -- DONE +0х7777 передается один раз при установке настроек +Непонятно **как измеренные значения назад отправляются по команде 4444** + +![[device_commands.py]] + + +![[1_1_Report_generator_heterodyne_20240124.pdf]] + + +# Контроль температуры во время TASK. +## Проблема +Во время варьирования тока лазера никакая температура не измеряется и не поддерживается. +## Анализ +### Быстрый фикс: +Поставить старую поддержку температуры на варьирование тока второго лазера. На task варьирования тока первого -- оставить как было. + +### Нормальное решение +1 цикл измерения температуры 35 us. +Это больше, чем минимальный временной шаг изменения тока. +Следовательно, есть 2 подхода: +- написать асинхронные MPhD_T() и Set_LTEC(). +- сделать варьирование тока через DMA, а температуры контролировать обычным способом. Это более перспективно, т.к.разгрузит вычислительные ресурсы во время варьирования. +- сделать варьирование тока в обработке прерывания, а температуру контролировать в блокирующем цикле. +#### Варьирование тока в прерывании +Добавил глобальную переменную task_state + task_state = 0 -- task не выполняется -- устанавливается в конце работы в прерывании. + task_state = 1 -- task в процессе выполнения. Устанавливается после подготовок в main.c + + + + + + + +# Что такое Temp_ext_1/2? +Парсинг ответа на команду 0x4444: + data = {} + data['datetime'] = datetime.now() + data['Header'] = get_word(dh, 0) + data['I1'] = cnv.conv_I_N_to_mA(get_int_word(dh, 1)) + data['I2'] = cnv.conv_I_N_to_mA(get_int_word(dh, 2)) + data['TO_LSB'] = get_int_word(dh, 3) + data['TO_MSB'] = get_int_word(dh, 4) + data['Temp_1'] = cnv.conv_T_N_to_C(get_int_word(dh, 5)) + data['Temp_2'] = cnv.conv_T_N_to_C(get_int_word(dh, 6)) + data['Temp_Ext_1'] = cnv.conv_TExt_N_to_C(get_int_word(dh, 7)) + data['Temp_Ext_2'] = cnv.conv_TExt_N_to_C(get_int_word(dh, 8)) + data['MON_3V3'] = cnv.conv_U3V3_N_to_V(get_int_word(dh, 9)) + data['MON_5V1'] = cnv.conv_U5V_N_to_V(get_int_word(dh, 10)) + data['MON_5V2'] = cnv.conv_U5V_N_to_V(get_int_word(dh, 11)) + data['MON_7V0'] = cnv.conv_U7V_N_to_V(get_int_word(dh, 12)) + data['Message_ID'] = get_word(dh, 13) # Last received command + data['CRC'] = get_word(dh, 14) +dh -- принятый ответ, формируемый в MCU в виде массива LongData. +Формирование LongData: +``` + Long_Data[1] = LD1_param.POWER;//Translate Data from monitor photodiode of LD1 to Long_Data + Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + Set_LTEC(1,LD1_curr_setup.CURRENT);//Drive Laser diode 1 + Set_LTEC(2,LD2_curr_setup.CURRENT);//Drive Laser diode 2 + //Prepare DATA of internals ADCs + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(0); + temp16 = Get_ADC(1); // measure ADC1 IN2 -- PA2 -- 3V_monitor + Long_Data[7] = temp16; // 3V_monitor -- Temp_Ext_1 + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); // measure ADC1 IN8 -- PB0 -- U_Rt2_ext_Gain + Long_Data[8] = temp16; // U_Rt2_ext_Gain -- Temp_Ext_2 + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); // measure ADC1 IN9 -- PB1 -- U_Rt1_ext_Gain + Long_Data[9] = temp16; // U_Rt1_ext_Gain -- MON_3V3 + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); // measure ADC1 IN10 -- PC0 -- 5V1_monitor + Long_Data[10] = temp16; // 5V1_monitor -- MON_5V1 + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); // measure ADC1 IN11 -- PC1 -- 5V2_monitor + Long_Data[11] = temp16; // 5V2_monitor -- MON_5V2 + temp16 = Get_ADC(2); // turn ADC1 OFF + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(3); + temp16 = Get_ADC(4); // measure ADC3 IN 15 -- PF5 -- 7V_monitor + Long_Data[12] = temp16; // 7V_monitor -- MON_7V0 + temp16 = Get_ADC(5); // turn ADC3 OFF + //Put the timer tick to Long_Data: + TO6_stop = TO6; + Long_Data[3] = (TO6_stop)&0xffff; + Long_Data[4] = (TO6_stop>>16)&0xffff; + //Put the average temperature of LD1 to Long_Data: + Long_Data[5] = LD1_param.LD_CURR_TEMP; + //Put the average temperature of LD2 to Long_Data: + Long_Data[6] = LD2_param.LD_CURR_TEMP; +``` +ADC1 -- scan conversion mode. + +# [[синхронное детектирование]] +[[]] + +# Кривые тайминги варьирования тока +## Проблема: +- Камиль: 1 шаг перестроения тока -- не 50 мкс (как надо), а 70 мкс. +- после удаления поддержания температуры -- 1 шаг перестройки -- на 10 мкс меньше установленного. Если установлен шаг менее 30 мкс -- GUI вылетает. +## анализ +#### В коде GUI: +Установка шага времени. +1. GUI -> params['Delta_Time'] +2. в create_TaskEnableCommand(): запись в посылаемые данные: sending_param['Dt']\*100 //(Word 6) +3. в main(): sending_param['Dt'] = float(params['Delta_Time']) +Тоесть "передаваемое значение" = "значение из GUI" \* 100. +#### В коде MCU: +TIM10 тактируется от APB2 (184 MHz), prescaler=183, ARR = 9. => **TIM10 update -- каждые 10 мкс**. (проверено на железе -- верно ) +Обработка значения: +1. task.dt = "принятое значение"/100 (main.c:2070) +2. TO10_counter = task.dt / 10 - 1 (main.c:2080, 625) +=> из GUI и кода MCU: +**период события TIM10_coflag = ('Delta_Time'/10 - 1) * 10 мкс** +## решение +т.к. период события TIM10_coflag = ('Delta_Time'/10 - 1) * 10 мкс +Получаемый период варьирования тока -- на 10 мкс меньше, чем в GUI. +main.c:2080,625: "TO10_counter = task.dt / 10 - 1;" -> "TO10_counter = task.dt / 10;" +в итоге период события TIM10_coflag = ('Delta_Time'/10) * 10 мкс. +Сделать период обновления TIM10 менее 10 мкс -- сложно, т.к. увеличится частота прерываний. => шаг времени -- 10 мкс. **добавим в описание поля в GUIte** + +# Клоки для модулятора и АЦП недетерменированно выключаются в конце ЛЧМ. +## Проблема +Наблюденные варианты выключения клоков в конце ЛЧМ. +Желтый -- клок АЦП (семплирование по спадающему фронту) +Синий -- сигнал на модулятор Маха-Цандера. +Розовый -- триггер (рассматривается конец процедуры ЛЧМ, триггер произошел 176 мс назад) +![[RigolDS5 1.png]] + +![[RigolDS6 1.png]] + +![[RigolDS8 1.png]] +Дополнительная проблема: процедура ЛЧМ не всегда содержит одинаковое число шагов. +## анализ +Проблема в выключении таймеров. Так как выключение (HAL_TIM_PWM_Stop(&htim11, TIM_CHANNEL_1)) происходит в коде по завершению ЛЧМ -- точный момент выключения зависит от выполнения остального кода, не детерменирован. Надо как-то + + + +## решение +### Вариант 0 +Выключать таймеры атомарной записью в регистр, а не через HAL. +Реализация: + + +### Вариант 1. +Зафиксировать число шагов ЛЧМ. Выключать клоки в обработчике прерывания TIM10. +## Вариант 2. Реализован +Когда приходит пора выключить таймеры, включаем прерывание TIM11. В прерывании переводим оба таймера в one-pulse mode. Они сами выключаются. Затем перед следующим запуском ЛЧМ -- выключаем one-pulse, прервывание, обнуляем счетчики и запускаем. +![[RigolDS9 1.png]] + +![[RigolDS10.png]] + +![[RigolDS11.png]] + +![[RigolDS12.png]] + +![[RigolDS13.png]] + +![[RigolDS14.png]] + + +TODO: сделать атомарный запуск обоих таймеров. +TODO: настроить сдвиг фазы АЦП относительно модуляции. + + + +# настройка таймингов модулятора и АПЦ +## Проблема +Клок АЦП плохо соотносится с принятым модулированным сигналом. + +| ![[RigolDS16.png]] | +| ----------------------------------------- | +| Синий -- на модулятор Маха-Цандера | +| Желтый -- клок АЦП (запуск по спаду) | +| Голубой -- принятый модулированный сигнал | +Сигнал с АЦП +![[newplot(3).png]] + + +## Анализ +Проблема возникала из-за плохой настройки фаз клоков АЦП и модулятора Маха-Цандера. Большая малопредсказуемая задержка привносилась функцией запуска таймеров HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1) (main.c 437,438). +## Решение +После запуска таймеров повторно атомарно обнуляем счетчики (TIM -> CNT = 0). + +| ![[RigolDS17.png]] | +| ----------------------------------------- | +| Синий -- на модулятор Маха-Цандера | +| Желтый -- клок АЦП (запуск по спаду) | +| Голубой -- принятый модулированный сигнал | +Сигнал с АЦП: +![[newplot(2).png]] + +# развитие +Установлена небольшая задержка при запуске клока АЦП, чтобы семплирование происходило в конце периода модуляции. Таким образом, при увеличении задержек в радиочастотном тракте семплирование не будет происходить в момент изменения уровня сигнала. Запас по времени ~400 нс (120 м). +![[RigolDS20.png]] +Код: +`TIM4 -> CNT = TIM4 -> ARR - 20` (main.c:441) +#git commit f20ad2301b91b86eddc709a79106fe1518cce531 (HEAD -> master) + + +# оцифровка сигнала радара +[[АЦП E-502]] + + +# Нагрузка детекторной головки +## Проблема +Детекторная головка требует шунтирования резистором на землю. +Если роль резистора играет аттенюатор на выходе головки -- появляются непонятные колебания сигнала частотой ~ 100кГц.![[RigolDS23.png]] +Без непонятных помех: +![[RigolDS24.png]] + + +## Анализ +Колебания появляются также при подключении терминатора 50 Ом посередине кабеля от головки к осциллографу, в т.ч. при парралельном соединении АЦП и осциллографа. Однако, пропадают при подключении терминатора через тройник непосредственно на входе осциллографа или переключении входа осциллографа на 50 Ом. +При подключении осциллографа щупом к аттенюатору -- проблема не решается. + +## Решение +Поставить аттенюатор непосредственно на вход осла и АЦП? + + + + + +# Сделать [[обработка данных на blackfin в АЦП подготовка]] +## Проблема + +## Анализ + +## Решение + + +# +## Проблема + +## Анализ + +## Решение + + +# +## Проблема + +## Анализ + +## Решение diff --git a/Кодовая база.md b/Кодовая база.md new file mode 100644 index 0000000..5cb378a --- /dev/null +++ b/Кодовая база.md @@ -0,0 +1,14 @@ +Есть несколько версий кода: +For_stm32_cubeide +radiophotonics-main/For_stm32_cubeide + + +Push local repo to github: +### …or push an existing repository from the command line + +git remote add origin https://github.com/unamedt/RFG_DAC.git +git branch -M main +git push -u origin main + +github fine-grained token: +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 \ No newline at end of file diff --git a/Радар и связи компонентов.md b/Радар и связи компонентов.md new file mode 100644 index 0000000..0af8fd4 --- /dev/null +++ b/Радар и связи компонентов.md @@ -0,0 +1,21 @@ +```mermaid +graph TD +PC --> generator +generator --laser--> Mach-Zander +generator --modulation--> Mach-Zander +Mach-Zander --> transmitter +transmitter --> receiver +receiver --> detector +detector --> ADC +ADC --> PC +generator --[clock, start]--> ADC +a ==1234==> b +``` + +Плата генератора +АЦП +Комп --> плата генератора --> модулятор --> излучатель --> приемник --> детекторная головка --> АЦП + + + + diff --git a/анализ кода for_stm32_cubeide.md b/анализ кода for_stm32_cubeide.md new file mode 100644 index 0000000..4412ccd --- /dev/null +++ b/анализ кода for_stm32_cubeide.md @@ -0,0 +1,276 @@ +# отследим формирование ответа с отправки +Общий принцип такой: +- MESS_01 (default state) + - отправляем массив State_Data обычнфм блокирующим способом +- MESS_02 (Transmith packet) + - Формируем ответ в массиве Long_Data, отправляем (**что?**) через USART_TX_DMA +- MESS_03://Transmith saved packet + - обновляем данные в UART_DATA, + - запускаeм DMA отправку (**чего?**) + + +# отследим путь информации с ADC +hadc1.Init.DMAContinuousRequests = DISABLE; +hadc3.Init.DMAContinuousRequests = DISABLE; + +### static uint16_t Get_ADC(uint8_t num): +- num == 0 => запуск ADC1 +- num == 1 => возвращает данные ADC1 +- num == 2 => stop ADC1 +- num == 3 => запуск ADC3 +- num == 4 => возвращает данные ADC3 +- num == 5 => stop ADC3 + + + + + +## USART_TX(State_Data,2) (main.c:414) +Срабатывает, если UART_transmission_request == Default state (MESS_1) + + +# при получении 0x7777 +1. Decode _uart (main.c:1506) +2. Command копируется в temp2 +3. Устанавливаются параметры Curr_setup + 1. WORK_EN + 2. U5V1_EN + 3. U5V2_EN + 4. LD1_EN + 5. REF1_EN + 6. REF2_EN + 7. TEC1_EN + 8. TEC2_EN + 9. TS1_EN + 10. TS2_EN + 11. SD_EN + 12. PI1_RD + 13. PI2_RD +4. Парсится заголовок: +5. Eсли 0x1111: +6. Если 0x7777 -- Устанавливаются параметры task: + 1. task_type + 2. min_param + 3. current_param + 4. max_param + 5. delta_param + 6. dt + 7. tau + 8. sec_param + 9. curr + 10. temp + 11. p_coef_1 + 12. i_coef_1 + 13. p_coef_2 + 14. i_coef_2 + Температурные коэффициенты записываются в соотвестсвующие поля LD1_curr_setup и +7. + + + + + +# hardware: +MCU настроен так, что не имеет выходов DAC и TIM. Следовательно ток лазеров задается по цифровому интерфейсу. +- SDMMC1 -- карта памяти +- **SPI2 -- TX** +- SPI4 -- RX +- SPI5 -- RX +- **SPI6 -- TX** +- USART1 -- связь с компом + +main.c:1652: //LL_SPI_Enable(SPI6);//Enable SPI for Laser2 DAC -- *Догадка верна!* +Предыдущая строка (main.c:1651): `HAL_GPIO_WritePin(LD2_EN_GPIO_Port, LD2_EN_Pin, GPIO_PIN_SET); +Аналогично в(ы)ключается LD1 (main.c:1638-1647) +Что такое TEC2? `LL_SPI_Disable(SPI2);//Disable SPI for Laser1 DAC & TEC1` + +main.c:1739`LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC +--строка из функции void Set_LTEC(uint8_t num, uint16_t DATA). +Функция вызывается: +1. (main.c:260) `temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + `Set_LTEC(3, temp16);//Drive Laser TEC 1 +2. (main.c:262) `Set_LTEC(4, temp16);//Drive Laser TEC 2` -- аналогично предыдущему +3. (main.c:277) `Set_LTEC(1,LD1_curr_setup.CURRENT[Work_counter]);//Drive Laser diode 1` -- установка тока лазера +4. main.c:1717 -- definition Set_LTEC -- LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC, нужное устройство выбирается интерфейсом SPI (2 или 6) и сигналом EN через GPIO. + +LD1_curr_setup -- структура с полями: +- P_coeff_temp +- I_coeff_temp +- CURRENT -- массив +Заполнение LD1_curr_setup: -- **происходит при парсинге команды 0x1111** +`for (uint8_t i=0; iCURRENT[i] = (uint16_t)(*temp2); +`temp2++; +`}` (main.c:1579-1583) +temp2 -- сдвинутый указатель на массив Command. Многократное увеличение temp2 на единицу -- видимо для расшифровки разных параметров. + +# Структура команд +## 0x1111 + +| Номер | Название | Код | Расшифровка | +| ----- | ---------- | ------------------- | ------------------------------------ | +| 0 | Header | 0x1111 | Заголовок | +| 1 | Setup | 0xXXXX | Биты настроек | +| 2 | LD1_temp | 16bit float | Температура лазера 1 | +| 3 | LD2_temp | 16bit float | Температура лазера 1 | +| 4 | Reserved | 0x0000 | Зарезервировано | +| 5 | Reserved | 0x0000 | Зарезервировано | +| 6 | Reserved | 0x0000 | Зарезервировано | +| 7 | P_temp1 | 16bit float | Пропорциональный коэффициент для ЛМ1 | +| 8 | I_temp1 | 16bit float | Интегальный коэффициент для ЛМ1 | +| 9 | P_temp2 | 16bit float | Пропорциональный коэффициент для ЛМ2 | +| 10 | I_temp2 | 16bit float | Интегальный коэффициент для ЛМ2 | +| 11 | Message_ID | 16bit uint | Номер сообщения | +| 12 | LD1_curr | 16bit float***100** | Ток лазера 1 | +| 13 | LD2_curr | 16bit float***100** | Ток лазера 2 | +| 14 | CRC | 16bit uint | Контрольная сумма | +Итого 213 16-битовых слов. +## 0x7777 + +| Номер | Название | Код | Расшифровка | | | | +| ----- | ----------- | ----------- | ------------------------------------------------------------ | ----------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------- | +| 0 | Header | 0x7777 | Заголовок | поле в структуре | действие | ref | +| 1 | Setup | 0xXXXX | Биты настроек (как в 0х1111) | | | | +| 2 | TaskType | 16bit uint | 0х1 -- меняется ток лазера 1 | task.task_type | | | +| | | | 0х2 -- меняется ток лазера 2 | | | | +| | | | 0х3 -- меняется температура лазера 1 | | | | +| | | | 0х4 -- меняется температура лазера 2 | | | | +| 3 | chngd_p_min | 16bit uint | Минимальное значение изменяемого параметра (mA или C) | task.min_param = task.current_param | записывается в железный драйвер по SPI `Set_LTEC(task.task_type, task.current_param)` | main.c:373-377. И далее (main.c:384)... | +| 4 | chngd_p_max | 16bit uint | Максимальное значение изменяемого параметра (mA или C) | task.max_param | | | +| 5 | delta_p | 16bit uint | Шаг дискретизации изменяемого параметра (mA или C) | task.delta_param | | | +| 6 | delta_t | 16bit uint | Дискретный шаг по времени (мкс) | task.dt | период TIM10 | main.c:360 | +| 7 | fixed_param | 16bit uint | Значение другого параметра лазера с изменяемым параметром | task.tau | | | +| 8 | I_fixed | 16bit uint | Значение тока для лазера с фиксированными параметрами | task.sec_param | | | +| 9 | T_fixed | 16bit uint | Значение температуры для лазера с фиксированными параметрами | task.curr | | | +| 10 | Tau | 16bit uint | Значение тау (время релаксации, миллисекунды) | task.temp | | | +| 11 | P_temp1 | 16bit float | Пропорциональный коэффициент для ЛМ1 | task.p_coef_1 | | | +| 12 | I_temp1 | 16bit float | Интегальный коэффициент для ЛМ1 | task.i_coef_1 | | | +| 13 | P_temp2 | 16bit float | Пропорциональный коэффициент для ЛМ2 | task.p_coef_2 | | | +| 14 | I_temp2 | 16bit float | Интегальный коэффициент для ЛМ2 | task.i_coef_2 | | | +| 15 | CRC | 16bit uint | Контрольная сумма | | | | + +# Общий принцип работы: +С частотой 1кГц: +- Установили ток current\[Work_counter] +- Померяли температуры +- увеличили Work_counter на 1 + + +# получение температуры +Есть 2 подозрительные функции: Get_ADC и MPhD_T. +Что делает PID_Controller_Temp? -- Реализация ПИ контроллера. +### Get_ADC +В строках main.c:286:311 -- вызывается с параметрами 0-5, результат кладется в Long_Data\[CURRL_16\*2+5 -- CURRL_16\*2+10]. +CURRL_16 -- макрос для 100. +Вероятно, это `//Prepare DATA of internals ADCs` (main.c:281) +определение Get_ADC(uint8_t num): + num == 0 => HAL_ADC_Start(&hadc1); // Power on + num == 1 => ADC1 poll for conversion, return value + num == 2 => HAL_ADC_Stop(&hadc1); // Power off + num == 3 => HAL_ADC_Start(&hadc3); // Power on + num == 4 => ADC3 poll for conversion, return value + num == 5 => HAL_ADC_Stop(&hadc3); // Power off +=> заполнение массива Long_Data\[CURRL_16\*2 +5:9] == результат измерения ADC1. Затем ADC1 выключается. Long_Data\[CURRL_16\*2+10] == единичное измерение ADC3. +ADC3 -- включен всего один канал. +###### Измеряется один и тот же канал или разные? -- ADC1 -- Разные; ADC3 -- один (единственный включенный) +ADC1 подключено к 5 каналам: IN2, IN8-11. +Конфигурация ADC1: +**Mode: independent** +**Scan conversion mode: enabled** -- после каждого измерения ADC переключается на следующий канал. +**Continuous conversion mode: disabled** -- In continuous conversion mode, the ADC starts a new conversion as soon as it finishes one. -- FALSE +**Discontinuous conversion mode: disabled** -- По триггеру запускается последовательность из нескольких (ADC_CR1 -> DISCNUM\[2:0]) измерений включенных каналов (ADC_SQRx). +**DMA Continuous Requests: Disabled** +**End of conversion selection: EOC flag at the end of single channel conversion.** + +ADC1 и ADC3 -- сконфигурированы одинаково (кроме числа каналов.) +### MPhD_T(uint8_t num) -> uint16_t P +1. медленно дрыгаем ногами SPI(4:5)\_CNV_Pin для //Prepare conversion и //Stop acqusition & start conversion +2. Включаем SPI, ждем получения значения, возвращаем его. +3. Различия между параметрам num(1:4) -- дрыгаем разными ногами и слушаем разные SPI(4 или 5) +4. Ноги: (по 1_1_Report_generator_heterodyne_20240124 1.pdf)^[![[1_1_Report_generator_heterodyne_20240124 1.pdf#page=29]]] + +| название | на железе (по .ioc) | на схеме из report | окончание | | +| ----------------- | ------------------- | ------------------ | ------------------------------------------------------------------------------- | -------------------------------------------- | +| ADC_ThrLD1_CS_Pin | PE11 | SPI4_NSS | [AD7686CRMZ](https://www.analog.com/en/products/ad7686.html#part-details) (ADC) | меряет цепь ThrLD1 -- **подтянутую к 2V5_3** | +| ADC_MPD1_CS_Pin | PE10 | SPI4_IO1 | [AD7686CRMZ](https://www.analog.com/en/products/ad7686.html#part-details) (ADC) | меряет цепь `100 mV` -- 1/50 от 5VA2 | +[Даташит на AD7686](AD7686.pdf) +6. Читаются: + 1. num == 1 => MPD1 + 2. num == 2 => MPD2 + 3. num == 3 => ThrLD1 + 4. num == 4 => ThrLD2 +7. Зачем-то MPhD_T() в коде всегда вызывается 2 раза подряд с одним и тем же аргументом, причем результат первого вызова отбрасывается. +Что такое ThrLD1? -- **Temperature** LaserDiode? ThorlabsLaserDiode? +Что такое MPD1? -- Monitor PhotoDiode1? +### Set_LTEC(uint8_t num, uint16_t DATA) +- num == 1 => запись DATA в DAC_LD1 +- num == 2 => запись DATA в DAC_LD2 +- num == 3 => запись DATA в DAC_TEC1 +- num == 4 => запись DATA в DAC_TEC2 + Куда идут значения MPhD_T(uint8_t num) -> uint16_t adc_val? +# В основном рабочем цикле WORK_ENABLE (main.c:243), каждую 1 мс: +TO7 -- счетчик TIM7_overflow -- происходят каждую 1 мс(? -- согласно комментарию в коде. Можно проверить, найдя источник тактирования TIM7 и зная настройки таймера) +- LD1_param.POWER = MPhD_T(1) (MPD1);//Get Data from monitor photodiode of LD1 **измерили мощность** +- LD1_param.LD_CURR_TEMP = MPhD_T(3); **измерили температуру** +- temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); **рассчитали новую мощность нагревателя лазера +- Set_LTEC(3, temp16);//Drive Laser TEC 1 **отправили новую мощность в DAC нагревателя +- LD1_param.LD_CURR_TEMP -- средняя температура, реализовано через накопитель T1_temp. +- Корректировка нагревателя происходит непрерывно, каждый рабочий цикл (раз в 1 мс) +- Также непрерывно в Long_Data записывается LDx_param.POWER. LD1 -- в позиции от 0 до CURRL_16-1 (\==99), LD2 -- от 100 до 199. +- В DAC драйвера лазера записывается новая мощность из LD1_curr_setup.CURRENT\[WorkCounter] +- +- WorkCounter -- счетчик рабочих циклов. Меняется от 0 до 99, затем сбрасывается. При определенных значениях происходит: + - WorkCounter == 0 => старт нового цикла, + - WorkCounter == CURRL_16-8 (=92) -- запись значений внутренних ADC в конец Long_Data\[CURRL_16\*2 + 5:10]. (main.c:284) + - WorkCounter == CURRL_16-1 (main.c:317) + - В LDx_param.LD_CURR_TEMP записывается усредненная за весь цикл (WorkCounter от 0 до 99) температура + - В Long_Data\[CURRL_16\*2+1:2] записывается время с дискретностью 10 мс (т.е. единица времени -- 10 мс) + - В Long_Data\[CURRL_16\*2+3] записывается LD1_param.LD_CURR_TEMP; (main.c:337) + - В Long_Data\[CURRL_16\*2+4] записывается LD2_param.LD_CURR_TEMP; (main.c:340) + +## Структура Long_Data + +| Long_Data индекс | значение | кто пишет | +| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 0 : CURRL_16-1 (0:99) | Измеренная мониторным диодом мощность лазера 1 | LD1_param.POWER (main.c:269, 274), измеренное MPhD_T(1) (main.c:250) | +| CURR_L16 : CURRL_16\*2-1 (100:199) | Измеренная мониторным диодом мощность лазера 2 | LD2_param.POWER (main.c:270, 275), измеренное MPhD_T(2) (main.c:252) | +| CURR_L16\*2 +1:2 | Время в десятках мс | TO6_stop = TO6; и следующие 2 строки (main.c:332:334) (TO6 -- счетчик переполнения таймера TIM6, происходящего каждые 10 мс) | +| Long_Data\[CURRL_16\*2+3] | Усредненная за цикл варьирования мощности температура лазера 1 | LD1_param.LD_CURR_TEMP (main.c:337) Усреднение -- main.c:323 и main.c:264. Среднее рассчитывается прямо перед записью в массив. До этого в LD1_param.LD_CURR_TEMP хранится последняя измеренная температура | +| Long_Data\[CURRL_16\*2+4] | Усредненная за цикл варьирования мощности температура лазера 2 | Аналогично предыдущему | +| Long_Data\[CURRL_16\*2 + 5:10] | Значения внутренних ADC. Каналы и пины MCU соответственно: \[ADC1_IN2 - PA2, ADC1_IN8 - PB0, ADC1_IN9 - PB1, ADC1_IN10 - PC0, ADC1_IN11 - PC1, ADC2_IN15 - PF5] | Запись происходит когда WorkCounter == CURRL_16-8. main.c:284:311 | +| Long_Data\[CURRL_16\*2 + 11] | //Message ID | main.c:1577 | +| Long_Data\[DL_16-1] (212) | Checksum | main.c:342:348 | +Long_Data сохраняется на SD карточку (main.c:342:348) +Long_Data может быть прочитана с SDcard (main.c:216:218) +Long_Data отправляется по UART через DMA (main.c:434:442) или (main.c:420:433), взависимости от UART_transmission_request (если равна MESS_02 или MESS_03) + Long_Data (uint16_t) преобразуется в UART_DATA (uint8_t), затем вызывается функция USART_TX_DMA(data_length), запускающая отправку через DMA. DMA контроллер сконфигурирован брать данные из памяти, начиная с указателя UART_DATA (main.c:1437), отправлять в регистр LL_USART_DMA_REG_DATA_TRANSMIT, после чего инкрементировать адрес (main.c:1177), откуда берутся данные. И так data_length раз. +#### Где устанавливается флаг UART_transmission_request? +MESS_03 -- если Long_Data прочитан с SDcard +MESS_02 -- если CPU_state == TRANS_ENABLE +Установка флага CPU_state в состояние TRANS_ENABLE: + Если UART принял команду 0x4444. +# Обработка команды 0x4444 +1. по UART пришло сообщение. Когда прием сообщения окончился -- вызывается обработчик UART_RxCpltCallback (stm32f7xx_it.c:376) +2. Обработчик читает заголовок сообщения. Если это 0x4444 -- CPU_state устанавливается в TRANS_ENABLE. +3. В основном цикле (main.c:154) проверяется CPU_state. Если это TRANS_ENABLE -- UART_transmission_request устанавливается в MESS_02, CPU_state устанавливается в предыдущее состояние. +4. В том же цикле проверяется состояние UART_transmission_request. Если это MESS_02: + 1. Рассчитывается контрольная сумма массива Long_Data + 2. Long_Data отправляется через DMA на передачу UART +# Режим TASK_ENABLE +0. TIM10 -- установлен на генерацию прерывания и обновление TO10. Предделитель дает один отсчет таймера в 1 мкс. +1. Установили период TIM10 в dt микросекунд. (обновляем TO10) (main.c:357:363) +2. Каждое обновление TO10 через записываем Set_LTEC в DAC, увеличиваем параметр (task.current_param) на task.delta_param, пока не достигнем максимального значения (task.max_param) (main.c:373:379) +3. Останавливаем TIM10, обнуляем счетчики (TO10, TO10_before), task.current_param = min_param; +4. + +# почему при установке min, max тока одного лазера ток другого устанавливается == min первого? +В For_stm32_2023_12_08 — в main.c:339 — при варьировании тока диода 1 — ток диода 2 устанавливается в мин. значение тока диода 1. В main.c:378 — наоборот. Зачем так сделано — непонятно. +В For_stm32_cubeide -- всё хорошо, токи варьируются независимо. + + + + + + + diff --git a/баг с большим массивом blackfin and ChatGPT.md b/баг с большим массивом blackfin and ChatGPT.md new file mode 100644 index 0000000..42bdd56 --- /dev/null +++ b/баг с большим массивом blackfin and ChatGPT.md @@ -0,0 +1,1656 @@ +[Skip to content](file:///home/feda/MIPT/RadioPhotonic_Subserface_radar/RadioPhotoinc_genereator_obsidian/Clippings/big_array_in_SDRAM_BlackFin.html#main) + +## You said: + +x502_low_level.pdf + +PDF + +Прикреплена инструкция к модулю АПЦ с DSP BlackFin. Я работаю над обработкой данных в blackfin. Как создать большой массив, размещенный в sdram? При простом объявлении uint32_t arr[100000] возникает ошибка: region `MEM_L1_DATA_A' overflowed by 382848 bytes` + +## ChatGPT said: + +У вас ошибка потому, что массив по умолчанию попадает во **внутреннюю память L1 (MEM_L1_DATA_A)**, а она всего 32 КБ, тогда как вы пытаетесь разместить ~400 КБ (`100000 * 4 байта`). +Для больших буферов нужно использовать **внешнюю SDRAM** и указать компилятору, что эта переменная должна попасть в специальную секцию, описанную в линкер‑скрипте. + +В инструкции к модулю X502/BlackFin это сделано так + +: + +> В штатной прошивке для этого в файле линкера создана специальная секция во внешней SDRAM. +> В VisualDSP секция задаётся через `#pragma section(секция, NO_INIT)`. +> В проекте уже есть готовый хедер, который нужно подключить перед объявлением переменной: +> +> c + +> `#include "l502_sdram_noinit.h" static volatile uint32_t f_sport_in_buf[L502_SPORT_IN_BUF_SIZE];` +> +> Такой приём помещает массив в **неинициализируемую область SDRAM**. + +**Что нужно сделать у вас:** + +1. Найдите в проекте файл `l502_sdram_noinit.h` (для GCC будет `gcc/l502_sdram_noinit.h`, для VisualDSP — `vdsp/l502_sdram_noinit.h`). + +2. Подключите его **не в начале файла**, а прямо перед объявлением большого массива: + + c + + +3. `#include "l502_sdram_noinit.h" uint32_t arr[100000];` + +4. Линкер уже настроен так, чтобы эта секция располагалась во внешней SDRAM, объём которой ~32 МБ. + + +После этого массив попадёт не во внутренний L1, а в SDRAM, и ошибка `region 'MEM_L1_DATA_A' overflowed` исчезнет. + +Если хотите — могу помочь найти нужный `#pragma section` в вашем проекте или показать пример полного блока кода. Напишите! + +## You said: + +Я именно так и делаю: #include "l502_sdram_noinit.h" static volatile uint32_t TX_buff[TX_BUFF_SIZE] = {0,}; Ошибка возникает + +## ChatGPT said: + +Отличный вопрос — значит, вы уже используете `l502_sdram_noinit.h`, но массив всё равно попадает во внутренний L1 и даёт переполнение. +Давайте разберёмся, что может быть не так. + +--- + +### ✅ **1. Что делает `l502_sdram_noinit.h` в штатном проекте** + +В типовом проекте L‑502/E‑502 для BlackFin этот хедер содержит примерно такие директивы (для VisualDSP): + +c + +`#pragma section("sdram_noinit") #pragma retain` + +А для GCC может быть что-то вроде: + +c + +`__attribute__((section(".sdram_noinit")))` + +и в линкер‑скрипте (`*.ldf` для VDSP или `*.ld` для GCC) определена секция: + +scss + +`sdram_noinit { INPUT_SECTIONS(...) } >MEM_SDRAM` + +То есть _если проект собран с правильным линкером и секция прописана_, переменная окажется в SDRAM. + +--- + +### ✅ **2. Почему всё равно попадает в L1** + +Причины бывают такие: + +#### 🔸 **2.1. Не подключён правильный линкер‑скрипт** + +Например, вы собрали проект не с тем `LDF/LD` файлом, где описана секция SDRAM. +👉 Проверьте, что в настройках сборки выбран **linker description file**, где есть `MEM_SDRAM` и секция `sdram_noinit`. + +В `l502_low_level.pdf` (глава 5.5) сказано: + +> Внешняя память SDRAM доступна через секцию `.sdram_noinit`. +> Для её использования в проект нужно добавить соответствующий LDF с описанием памяти. + +Если сейчас у вас используется «умолчальный» линкер‑скрипт от шаблона, то секции `.sdram_noinit` в нём просто нет, и компилятор складывает переменные в L1. + +--- + +#### 🔸 **2.2. Размер массива всё равно слишком большой для SDRAM, если она не включена** + +На BlackFin ADSP‑BF523 внешняя SDRAM должна быть инициализирована. +В штатной прошивке её включают в startup‑коде: + +c + +`init_external_memory(); // обычно в initcode` + +Если проект собирали с нуля и инициализацию SDRAM не вызвали — линкер положит массив в доступный регион (L1), а потом скажет: overflow. + +--- + +#### 🔸 **2.3. `= {0,}` заставляет компилятор разместить в секции с инициализацией** + +`l502_sdram_noinit.h` как раз подразумевает секцию **NO_INIT** — туда можно класть только **неинициализированные** переменные. +Когда вы пишете `= {0,}` — компилятор относит её в секцию **инициализированных данных (.data)**, которая в линкере не перенаправлена в SDRAM. + +👉 **Попробуйте убрать инициализацию:** + +c + +`#include "l502_sdram_noinit.h" static volatile uint32_t TX_buff[TX_BUFF_SIZE]; // без = {0,}` + +В SDRAM инициализация нулями при старте не делается — но если нужно обнулить, можно потом сделать `memset()` вручную. + +--- + +### ✅ **3. Итог: как правильно объявить** + +**Минимальный пример для большого буфера в SDRAM:** + +c + +`#include "l502_sdram_noinit.h" static volatile uint32_t TX_buff[TX_BUFF_SIZE]; // без инициализатора` + +**Обязательно:** + +- Проект собран с линкер‑скриптом, где есть секция `.sdram_noinit` → MEM_SDRAM. + +- В startup‑коде инициализирована внешняя SDRAM. + +- Не использовать `= {0,}`. + + +--- + +### 🔧 **4. Что проверить прямо сейчас** + +✔ убрать `= {0,}` и пересобрать +✔ убедиться, что подключён правильный `LDF/LD` (ищите в проекте файл с `MEM_SDRAM` и секцией `.sdram_noinit`) +✔ проверить, вызывается ли в startup‑коде инициализация SDRAM + +--- + +Если нужно — могу помочь найти и поправить ваш линкер‑скрипт, показать, как должна выглядеть секция `sdram_noinit` или код инициализации SDRAM. +Напишите, если хотите, я могу дать готовый фрагмент `LDF` или `ld`! 🚀 + +## You said: + +Убрал ={0,}, ошибка осталась. В соседнем файле есть такой фрагмент, который компилируется без ошибок:#include "l502_sdram_noinit.h" static volatile uint32_t f_sport_in_buf[L502_SPORT_IN_BUF_SIZE]; + +## ChatGPT said: + +Отличная подсказка! +Если **в соседнем файле** такой же приём ( `#include "l502_sdram_noinit.h"` + `static volatile uint32_t f_sport_in_buf[...]` ) компилируется нормально, а ваш `TX_buff` – нет, значит: + +- секция SDRAM и линкер у вас **настроены правильно** (иначе и соседний массив не собрался бы); + +- проблема именно в **размере** или в том, **как вы объявили** массив. + + +--- + +### 🔎 Давайте прикинем размер + +`L502_SPORT_IN_BUF_SIZE` в типовом проекте ≈ несколько тысяч элементов (например, 8192 слов = 32 КБ). +А вы объявили: + +c + +`static volatile uint32_t TX_buff[TX_BUFF_SIZE];` + +и судя по первой ошибке: + +> overflowed by 382848 bytes + +👉 ваш `TX_BUFF_SIZE` ≈ **100000 элементов × 4 байта = 400 000 байт (≈ 391 КиБ)**. +Это не просто больше L1 (это понятно), а скорее всего **больше, чем выделено под секцию SDRAM** в линкер‑скрипте. + +--- + +### 🔧 Как устроена секция `.sdram_noinit` + +В проекте для L502 обычно в LDF прописано примерно так: + +ld + +`MEM_SDRAM { TYPE(RAM) START(0x0c000000) END(0x0c03FFFF) /* например, 256 Кбайт */ } SECTIONS { sdram_noinit { INPUT_SECTIONS(...) } >MEM_SDRAM }` + +👉 Если `MEM_SDRAM` в линкере у вас меньше 400 КБ, то второй массив в неё уже **не влезает**, и компилятор ругается. + +--- + +### ✅ Что проверить + +1. **Откройте ваш LDF/LD** и найдите описание `MEM_SDRAM` или `.sdram_noinit`: + + - START / END адреса покажут, сколько там реально памяти. + Например, `0x0c000000` – `0x0c03FFFF` = **256 КБ**. + +2. Если вы точно хотите 100 000 `uint32_t` (≈ 400 КБ), а в линкере выделено меньше — придётся: + + - либо **уменьшить TX_BUFF_SIZE** до размера доступной SDRAM‑секции, + + - либо **поправить линкер** и увеличить размер MEM_SDRAM (если на плате физически есть больше SDRAM), + + - либо разместить буфер по‑другому (например, разбить на несколько меньших массивов и подгружать их по очереди). + + +--- + +### ✨ Важные детали + +✔ Сам по себе приём с `#include "l502_sdram_noinit.h"` **работает** (доказано вашим `f_sport_in_buf`). +❌ Ошибка overflowed говорит не про атрибут, а именно про нехватку памяти в секции. + +--- + +### 📌 Что делать прямо сейчас + +- ✅ **Посмотрите линкер‑скрипт и узнайте реальный размер MEM_SDRAM.** + Если хотите — пришлите фрагмент LDF/LD с `MEM_SDRAM` и `sdram_noinit`, я помогу посчитать. + +- ✅ **Попробуйте временно уменьшить TX_BUFF_SIZE**, например до 8000: + + +c + +`#define TX_BUFF_SIZE 8000 #include "l502_sdram_noinit.h" static volatile uint32_t TX_buff[TX_BUFF_SIZE];` + +Если соберётся без ошибок — значит точно упираетесь в лимит секции. + +--- + +💡 **Вывод:** +Всё настроено правильно, просто ваш новый буфер слишком велик для определённой в линкере области SDRAM. Либо уменьшите размер, либо расширьте секцию в LDF (если аппаратно SDRAM позволяет). + +Хочешь — пришли кусок LDF, я подскажу, как его поправить. ✨🚀 + +## You said: + +В .ld: MEM_SDRAM : ORIGIN = 0x00000000, LENGTH = 32 * 1024 * 1024. Если уменьшить L502_SPORT_IN_BUF_SIZE с 2048*1024 до 2048, ошибка не меняется (число не влезших байтов остается тем-же) TX_BUFF_SIZE = 100000, т.е. TX_buff меньше, чем место, освободившееся при уменьшении SPORT_IN_BUFF. Если уменьшить размер TX_BUFF_SIZE, то соответственно уменьшается и число не влезший байтов. TX_BUFF_SIZE = 100000. + +## ChatGPT said: + +Спасибо, теперь картина проясняется. +У вас в **линкер‑скрипте MEM_SDRAM** действительно настроен на весь объём 32 МБ: + +ld + +`MEM_SDRAM : ORIGIN = 0x00000000, LENGTH = 32 * 1024 * 1024` + +значит, лимит в 400 КБ никак не должен быть проблемой — в SDRAM места хватает. + +Но из вашего эксперимента видно: + +- изменение **L502_SPORT_IN_BUF_SIZE** не влияет на overflow (значит, этот массив _не_ сидит в той же секции или вовсе не в SDRAM); + +- изменение **TX_BUFF_SIZE** изменяет overflow (значит, именно TX_buff заполняет L1 и даёт ошибку); + +- ошибка: `region 'MEM_L1_DATA_A' overflowed by N bytes` — это ключ! + 👉 **Линкер продолжает размещать TX_buff в L1, а не в SDRAM.** + + +То есть директива `#include "l502_sdram_noinit.h"` в этом месте **не срабатывает** так, как вы думаете. + +--- + +### 🔎 Что отличает ваш случай от `f_sport_in_buf` + +1. **Где вы разместили `#include "l502_sdram_noinit.h"`?** + + В рабочем примере обычно делается так: + + c + + +- `#include "l502_sdram_noinit.h" static volatile uint32_t f_sport_in_buf[L502_SPORT_IN_BUF_SIZE]; #include "l502_default_section.h"` + + Обратите внимание: после массива снова возвращают секцию через `l502_default_section.h`. + Если вы забыли вернуть, может влиять, но это не ваша проблема — у вас наоборот не переключается. + + **Важно:** `#include "l502_sdram_noinit.h"` должен стоять _не до всех include в начале файла_, а прямо перед объявлением массива. + +- **Как устроен `l502_sdram_noinit.h` в вашем проекте?** + + Для GCC он должен содержать что-то вроде: + + c + + +`#pragma push #pragma default_section(SDRAM_NO_INIT)` + +или + +c + +`#define __SDRAM_NOINIT __attribute__((section(".sdram_noinit")))` + +и тогда объявлять так: + +c + +`static volatile uint32_t TX_buff[TX_BUFF_SIZE] __SDRAM_NOINIT;` + +В некоторых вариантах API нужно явно добавить атрибут: + +c + +1. `#include "l502_sdram_noinit.h" static volatile uint32_t TX_buff[TX_BUFF_SIZE] __attribute__((section(".sdram_noinit")));` + + 📌 **Посмотрите сам `l502_sdram_noinit.h` — что там внутри?** + Если там только `#pragma section("sdram_noinit")`, то эта директива обрабатывается **только компилятором VisualDSP++**. + В GCC она игнорируется и массив попадает в default‑секцию (L1). + + +--- + +### ✨ Почему пример `f_sport_in_buf` работает + +Скорее всего, `f_sport_in_buf` объявлен **в том же файле, что и остальная прошивка, которая собирается VisualDSP** (или с атрибутами GCC), и его атрибут реально сработал. + +А ваш `TX_buff` объявлен: + +- либо в другом файле, который компилируется другим компилятором (или без тех же настроек), + +- либо вы не добавили правильный атрибут для GCC. + + +--- + +### ✅ Что попробовать + +**Вариант 1 (универсальный для GCC):** + +c + +`static volatile uint32_t TX_buff[TX_BUFF_SIZE] __attribute__((section(".sdram_noinit")));` + +**Вариант 2 (если вы используете ту же схему с include, как в примерe):** + +c + +`#include "l502_sdram_noinit.h" static volatile uint32_t TX_buff[TX_BUFF_SIZE]; #include "l502_default_section.h"` + +**Вариант 3 (через pragma VDSP):** + +c + +`#pragma section("sdram_noinit") static volatile uint32_t TX_buff[TX_BUFF_SIZE]; #pragma section("default_section") // вернуться обратно` + +--- + +### 📌 Проверьте `l502_sdram_noinit.h` + +Напишите, что в нём внутри, или пришлите фрагмент — тогда я точно скажу, какой синтаксис использовать. + +--- + +### 💡 Вывод + +Ошибка `MEM_L1_DATA_A overflowed` значит, что **ваш массив TX_buff не попал в секцию SDRAM**. +Надо явно указать атрибут или pragma для нужного компилятора. + +Попробуйте прямо сейчас вот так: + +c + +`static volatile uint32_t TX_buff[TX_BUFF_SIZE] __attribute__((section(".sdram_noinit")));` + +и пересоберите. +Если ошибка исчезнет — значит, дело в несовпадении атрибутов. +Если нет — пришлите содержимое `l502_sdram_noinit.h`, посмотрим детальнее. 🚀🔥 + +## You said: + +Компиляция происходит через gcc. Содержимеое l502_sdram_noinit.h:__attribute__((section(".sdram_noinit"))) + +## ChatGPT said: + +Отлично, теперь всё стало кристально ясно. +Вы используете **gcc**, а `l502_sdram_noinit.h` в вашем проекте содержит всего лишь: + +c + +`__attribute__((section(".sdram_noinit")))` + +А вы в коде делаете: + +c + +`#include "l502_sdram_noinit.h" static volatile uint32_t TX_buff[TX_BUFF_SIZE];` + +👉 **Проблема в том, что такой `#include` сам по себе ничего не делает.** +Это не `#pragma`, это просто атрибут, который нужно указать у переменной. + +--- + +### ✅ Как правильно использовать этот атрибут + +Нужно написать так: + +c + +`static volatile uint32_t TX_buff[TX_BUFF_SIZE] __attribute__((section(".sdram_noinit")));` + +или, если хотите использовать хедер как макрос, обычно делают: + +c + +`#define SDRAM_NOINIT __attribute__((section(".sdram_noinit"))) static volatile uint32_t TX_buff[TX_BUFF_SIZE] SDRAM_NOINIT;` + +А просто `#include "l502_sdram_noinit.h"` перед объявлением массива — это ничего не даёт: компилятор не «подставляет» его в объявление автоматически. + +--- + +### 📌 Почему `f_sport_in_buf` компилируется + +Потому что там в исходнике написано **правильно**: + +c + +`static volatile uint32_t f_sport_in_buf[L502_SPORT_IN_BUF_SIZE] __attribute__((section(".sdram_noinit")));` + +А не просто `#include`. + +Иногда разработчики в своих файлах делают так: + +c + +`#define L502_SDRAM_NOINIT __attribute__((section(".sdram_noinit"))) static volatile uint32_t f_sport_in_buf[L502_SPORT_IN_BUF_SIZE] L502_SDRAM_NOINIT;` + +Или даже: + +c + +`__attribute__((section(".sdram_noinit"))) static volatile uint32_t f_sport_in_buf[L502_SPORT_IN_BUF_SIZE];` + +(атрибут можно поставить перед `static` или после типа — оба варианта работают) + +--- + +### ✨ Что нужно сделать вам + +Просто объявите свой массив **с этим атрибутом**, вот так: + +c + +`static volatile uint32_t TX_buff[TX_BUFF_SIZE] __attribute__((section(".sdram_noinit")));` + +💡 **Всё!** Он попадёт в секцию SDRAM, и ошибка `region 'MEM_L1_DATA_A' overflowed` исчезнет. + +--- + +### 🚀 Итог + +✅ Для gcc недостаточно `#include`, нужно явно указать `__attribute__((section(".sdram_noinit")))` в объявлении переменной. +✅ Убедитесь, что секция `.sdram_noinit` прописана в вашем `.ld` → вы это проверили (32 МБ). +✅ После этого буфер любого разумного размера (до 32 МБ) будет размещён в SDRAM. + +**Рабочий пример:** + +c + +`static volatile uint32_t TX_buff[100000] __attribute__((section(".sdram_noinit")));` + +Соберите и отпишитесь, что ошибка ушла! 💪🔥 + +## You said: + +Проблема решена + +## ChatGPT said: + +Отлично! Рад, что всё получилось и массив теперь попадает в SDRAM. 🚀 + +Если ещё будут вопросы по линкеру, секциям памяти или особенностям BlackFin — смело обращайтесь. Удачной работы с вашим проектом! 💡✅ + +## You said: + +Как соотносятся логическая таблица и поток данных с АЦП по SPORT0? В какой момент таблица включается в работу? Как задается порядок измерения физических каналов ADC? + +## ChatGPT said: + +Отличный вопрос — это как раз описано в низкоуровневом описании модуля. +Давайте разложу по шагам, чтобы было понятно, **где участвует логическая таблица**, **когда она начинает действовать**, и **как задаётся порядок физического опроса АЦП**. + +--- + +### 📌 **1. Что такое «логическая таблица» в L502/E502** + +В модуле есть множество физических входов АЦП (например, 32 дифференциальных). +Чтобы каждый раз не пересобирать прошивку, в ПЛИС реализован **блок IO_HARD** с регистром «логическая таблица» (логическая таблица сканирования каналов). + +Эта таблица хранится в регистрах ПЛИС и управляется через SPI, если модуль в DSP‑режиме. +В таблице вы перечисляете **последовательность логических каналов** и для каждого канала — какой физический вход АЦП и с каким диапазоном/усилением использовать. + +👉 Таким образом, **логическая таблица — это карта: “логический индекс → физический канал АЦП + режим измерения”**. + +--- + +### 📌 **2. Как данные попадают из АЦП в BlackFin (SPORT0)** + +Поток АЦП всегда идёт в ПЛИС (гальваноотвязанная часть). +Дальше два режима: + +- **Штатный режим:** ПЛИС через DMA сразу шлёт данные в ПК. + +- **DSP‑режим:** ПЛИС отправляет данные по интерфейсу SPORT0 в BlackFin. + + +В DSP‑режиме SPORT0 сконфигурирован в качестве приёмника данных из ПЛИС. +Каждый приходящий отсчёт в SPORT0 уже соответствует одному элементу логической таблицы. + +То есть в BlackFin вы видите **поток уже пересобранный по таблице**, а не «сырые физические входы». + +--- + +### 📌 **3. В какой момент логическая таблица начинает работать** + +Логическая таблица применяется **в момент запуска сбора данных**, когда вы разрешаете поток АЦП (например, командой в IO_HARD или через управляющий регистр HostDMA). + +✅ Пока поток не запущен — данные не идут, таблица бездействует. +✅ Как только вы через регистры IO_HARD задаёте «количество логических каналов» и разрешаете поток ввода, **ПЛИС начинает сканировать физические входы согласно таблице** и формирует кадры SPORT0. + +--- + +### 📌 **4. Как задать порядок измерения физических каналов** + +Всё задаётся именно в регистрах блока **IO_HARD**. +В низкоуровневом описании (см. гл. 6.8.3–6.8.5 в pdf) есть: + +- **IO_HARD таблица каналов** – массив регистров, в каждом из которых: + + - номер физического входа АЦП, + + - диапазон / усиление, + + - режим (дифференциальный / однополярный), + + - опциональные флаги. + + +Пример алгоритма: + +1. Пишем в регистры IO_HARD логическую таблицу: + + - `LOG_TABLE[0] = физический канал 3, диапазон ±10 В` + + - `LOG_TABLE[1] = физический канал 7, диапазон ±5 В` + + - и так далее. + +2. Пишем в `LOG_TABLE_SIZE` количество элементов таблицы. + +3. Разрешаем поток: в регистре IO_HARD ставим бит “enable input”. + + +👉 **После этого ПЛИС в каждом такте мультиплексирует АЦП на нужный физический вход, оцифровывает его и кладёт отсчёт в поток SPORT0 в том порядке, в каком вы прописали таблицу.** + +--- + +### 📐 **Схематично** + +csharp + +`Логическая таблица (в IO_HARD): [0] → PhysCh3 [1] → PhysCh7 [2] → PhysCh0 [3] → PhysCh2 ...` + +При запущенном сборе данных: + +css + +`SPORT0 поток: Word0 = ADC(PhysCh3) Word1 = ADC(PhysCh7) Word2 = ADC(PhysCh0) Word3 = ADC(PhysCh2) ... затем снова Word0 = ADC(PhysCh3) ...` + +--- + +### ✨ **Итог** + +✔ **Логическая таблица** — это программируемая последовательность «логический канал → физический вход + режим». +✔ Она **начинает действовать в момент запуска потока данных** (когда вы разрешаете ввод). +✔ **Порядок измерения физ. каналов** задаётся именно содержимым таблицы (регистры блока IO_HARD). +✔ В BlackFin по SPORT0 вы уже получаете данные в этом порядке, кадр за кадром. + +--- + +Если нужно, я могу: + +- привести точные адреса регистров для таблицы (по pdf), + +- показать пример записи таблицы из кода BlackFin, + +- или пример того, как эти данные обрабатываются в `user_process_adc_data()`. + + +Напишите! 🚀📡 + +## You said: + +В главе 5.12 (форматы данных) ничего не говорится про логические каналы. Как это соотносится с вышесказанным? + +## ChatGPT said: + +Отличное замечание — действительно, в **главе 5.12 “Форматы данных в потоке на ввод и на вывод”** речь идёт о формате **сырых слов в потоке**, и там не упоминается понятие «логического канала». +Давайте разложим, как эти два слоя соотносятся, чтобы не было путаницы: + +--- + +### 🔹 **Что описывает глава 5.12** + +В этой главе показано, **как именно закодирован каждый отсчёт в 32‑битном слове**, которое идёт по SPORT0 / HostDMA. +Например (типичный формат для L502): + +scss + +`Биты [15:0] – результат АЦП (signed 16-bit) Биты [19:16] – номер диапазона (или какие-то флаги) Биты [31:20] – резерв` + +То есть, если смотреть на поток _как на байты_, то он выглядит как: + +makefile + +`Word0: [данные АЦП + флаги] Word1: [данные АЦП + флаги] Word2: ...` + +**Важно:** в этой главе речь идёт о формате одного слова и вообще не затрагивается, от какого канала оно пришло и в каком порядке. + +--- + +### 🔹 **Где тогда «логические каналы»** + +Логические каналы описаны **не в главе формата**, а в описании блока IO_HARD (см. гл. 6.8.4–6.8.6). +Там есть: + +- `LOG_TABLE` – массив регистров, который вы заполняете. + +- `LOG_TABLE_SIZE` – сколько элементов в таблице. + + +**ПЛИС** при формировании потока по SPORT0 делает так: + +arduino + +`для i = 0 … LOG_TABLE_SIZE-1: phys_ch = LOG_TABLE[i] ADC_select(phys_ch) sample = ADC_read() word = pack_to_format(sample) send_to_SPORT0(word)` + +То есть в каждый момент времени SPORT0 отдаёт слова **в том порядке, который вы задали таблицей**. +Но каждое слово само по себе не несёт информацию о том, из какого именно канала оно было — оно просто «следующее по порядку в цикле сканирования». + +--- + +### 🔹 **Почему в 5.12 нет упоминания логических каналов** + +Потому что 5.12 отвечает на другой вопрос: +**«Как расшифровать одно слово?»**, а не **«В каком порядке они идут?»**. + +👉 **Порядок** определяется логической таблицей (гл. 6.8). +👉 **Формат слова** (биты данных/флагов) описан в 5.12. + +--- + +### 🔗 **Как это связывается на практике** + +1. Вы настраиваете таблицу (логические каналы): + + c + + +- `LOG_TABLE[0] = phys_ch 7; LOG_TABLE[1] = phys_ch 3; LOG_TABLE_SIZE = 2;` + +- Разрешаете поток ввода. + +- ПЛИС начинает выдавать на SPORT0 такую последовательность: + + makefile + + +- `Word0 = данные с физ.канала 7 (упакованы по формату из 5.12) Word1 = данные с физ.канала 3 (упакованы по формату из 5.12) Word2 = снова данные с физ.канала 7 Word3 = снова данные с физ.канала 3 ...` + +- В BlackFin вы получаете кадры как массив 32‑битных слов: + + c + + +1. `for (i=0; i **ПОТОК SPORT0 = циклическая выборка физических каналов согласно LOG_TABLE, +> каждое слово упаковано по формату из 5.12.** + +--- + +Если хотите, я могу подготовить: + +- пример инициализации LOG_TABLE из кода, + +- или пример функции `user_process_adc_data()` с расшифровкой данных. + + +Напишите, если нужно! 🚀📡 + +## You said: + +Как проверить состояние бита I в переменной? + +## ChatGPT said: + +В языке C (и, соответственно, в коде для Blackfin) «проверить состояние бита I» в переменной можно через побитовую операцию **AND** (`&`) и маску с единицей в нужной позиции. + +--- + +### 📌 **Общая формула** + +Пусть у вас есть 32‑битная переменная `x`, и вы хотите узнать, установлен ли бит с номером `I` (нумерация обычно от 0 – младший бит): + +c + +`if (x & (1u << I)) { // бит I = 1 } else { // бит I = 0 }` + +--- + +### 📌 **Подробности** + +✅ `(1u << I)` – это маска, где только бит I равен 1, а остальные 0. +Например: + +- `I = 0` → маска `0b000...0001` + +- `I = 3` → маска `0b000...1000` + + +✅ `x & mask` – выдаёт ненулевой результат, если нужный бит установлен. + +--- + +### 📌 **Пример** + +c + +`uint32_t status = 0b01001000; // просто пример int I = 3; if (status & (1u << I)) { // здесь бит 3 установлен (результат != 0) } else { // бит 3 сброшен }` + +--- + +### 📌 **Альтернативный способ (сдвиг и сравнение)** + +Иногда удобнее сдвинуть значение и проверить младший бит: + +c + +`if ((x >> I) & 1u) { // бит I = 1 } else { // бит I = 0 }` + +--- + +✅ **Оба способа эквивалентны**, выбирайте, какой читается удобнее. + +--- + +Если нужно — могу показать, как это оформить в виде функции‑помощника или макроса: + +c + +`#define BIT_IS_SET(value, bit) (((value) >> (bit)) & 1u)` + +Тогда: + +c + +`if (BIT_IS_SET(status, 3)) { /* ... */ }` + +Напишите, если хотите пример! 🚀✨ + +## You said: + +А если яхочу проверить, соотвестсвуют ли определенные биты (заданы маской) определенному значению? + +## ChatGPT said: + +Чтобы проверить, что в переменной `x` под маской `MASK` ровно те биты, которые вы ожидаете (скажем, равны `VAL`), используют конструкцию: + +c + +`if ( (x & MASK) == VAL ) { // Под маской MASK в x стоят биты, равные VAL } else { // Отличаются }` + +- `x & MASK` обнуляет все биты, не входящие в маску. + +- Сравнение `== VAL` проверяет, что оставшиеся «отмаскированные» биты соответствуют нужному шаблону `VAL`. + + +--- + +### Пример + +Допустим, в 8-битной `status` мы хотим проверить, что биты 5…3 (маска `0b0011 1000` = `0x38`) установаны в паттерн `0b0001 0000` (`0x10`): + +c + +`uint8_t status = /* какое-то значение */; #define MASK 0x38 // биты 5,4,3 #define VAL 0x10 // хотим, чтобы среди этих трёх бит был только 4-й if ( (status & MASK) == VAL ) { // Только бит 4=1, а биты 5 и 3 = 0 } else { // Иная комбинация в битах 5–3 }` + +--- + +### Макрос для удобства + +c + +`#define BITS_EQ(x, mask, val) ( ((x) & (mask)) == (val) ) if ( BITS_EQ(status, 0x38, 0x10) ) { // условие выполнено }` + +--- + +Таким образом вы легко проверяете **точное соответствие** битового поля под любой маской. + +2/2 + +## You said: + +Как пометить массив данные в приемном буфере SPORT0, как обработанный? + +## ChatGPT said: + +В Blackfin (и в целом при работе с периферией через DMA/Sport) само понятие «пометить как обработанный» – это не аппаратный флажок, а **ваш собственный признак** в программе. +Аппаратный DMA/Sport просто заполняет приёмный буфер (обычно кольцевой), а ваша логика должна понимать, какие кадры вы уже обработали. + +Вот как это обычно делают: + +--- + +### 📌 Общая идея + +Вы организуете приём в **двойной или кольцевой буфер** в SDRAM и ведёте **индекс или флаг**, который говорит, что эти данные готовы и что вы их уже обработали. + +--- + +### 📌 Стандартный паттерн (двойной буфер) + +1. В памяти (SDRAM) создаёте массив: + + +c + +`#define FRAME_SIZE 1024 static volatile uint32_t sport_rx_buf[2][FRAME_SIZE] __attribute__((section(".sdram_noinit")));` + +2. Настраиваете DMA на работу в «ping-pong» (двойной буфер): + + - Пока DMA пишет в `sport_rx_buf[0]`, вы обрабатываете данные из `sport_rx_buf[1]`. + + - Когда DMA переключается на второй буфер, вы обрабатываете первый. + +3. В обработчике прерывания DMA (или SPORT): + + +c + +`static volatile uint8_t active_buf = 0; static volatile uint8_t ready_flag[2] = {0,0}; void sport0_rx_isr(void) { // Завершился приём в текущий буфер ready_flag[active_buf] = 1; // пометить, что буфер готов к обработке active_buf ^= 1; // переключить активный буфер }` + +4. В основном цикле: + + +c + +`if (ready_flag[0]) { // обработка sport_rx_buf[0] ready_flag[0] = 0; // пометили, что обработан } if (ready_flag[1]) { // обработка sport_rx_buf[1] ready_flag[1] = 0; // пометили, что обработан }` + +--- + +### 📌 Если один большой кольцевой буфер + +- Заводите индекс «прочитанной» позиции: + + +c + +`static volatile uint32_t sport_rx_buf[BUF_SIZE] __attribute__((section(".sdram_noinit"))); static volatile uint32_t rd_pos = 0; static volatile uint32_t wr_pos = 0; // обновляется в ISR` + +- В прерывании DMA/SPORT увеличиваете `wr_pos` на количество принятых слов (с модулем по BUF_SIZE): + + +c + +`wr_pos = (wr_pos + frame_len) % BUF_SIZE;` + +- В основном цикле обрабатываете: + + +c + +`while (rd_pos != wr_pos) { process_word(sport_rx_buf[rd_pos]); rd_pos = (rd_pos + 1) % BUF_SIZE; // пометили, что обработан }` + +--- + +### 📌 Важный момент + +**Нет специального бита в железе, который бы говорил: “эти данные обработаны”**. +Вы должны **вести свой флаг/индекс** в памяти и, обработав данные, **сбросить этот флаг или продвинуть индекс**. + +--- + +### ✨ Итог + +✅ Чтобы пометить массив (или его часть) как обработанный, в коде нужно завести **свой признак готовности**, например: + +c + +`volatile uint8_t rx_ready[2]; // по одному флагу на каждый под‑буфер` + +и после обработки: + +c + +`rx_ready[i] = 0; // пометили, что данные обработаны` + +✅ Аппаратно SPORT0/DMA не помечает данные «обработанными», он только заполняет память и выставляет прерывания. +✅ Весь контроль — на вашей стороне. + +--- + +💡 Если хотите, я могу привести готовый фрагмент для Blackfin с настройкой SPORT0 DMA и обработкой через двойной буфер. Напишите! 🚀 + +## You said: + +Я обрабатываю данные в функции usr_in_proc_data(): парсю data (массив, выделенный в приемном буфере SPORT0), кладу новые данные в TX_buff[], пытаюсь отправить TX_buff: hdma_send_req_start(TX_buff, TX_buff_I, 0);. Как освободить приемный буфер? На данный момент программа отправляет TX_buff только один раз. Если же отправлять так: hdma_send_req_start(data, size, 0), данные передаются многократно (по мере их накопления), как и должно быть + +## ChatGPT said: + +Чтобы пометить часть приёмного буфера SPORT0 как «освобождённую» (т. е. готовую к повторному приёму) после обработки данных в `usr_in_proc_data()`, нужно воспользоваться встроенной в штатную прошивку логикой учёта позиций в кольцевом буфере. + +В `l502_stream.c` (модуль синхронных потоков) для каждого буфера SPORT0 введены три указателя (индекса): + +- **`f_sport_in_put_pos`** — указывает на слово сразу за последним _принятым_ словом. Обновляется в ISR SPORT0_RX, когда DMA закончил приём очередного блока. + +- **`f_sport_in_proc_pos`** — указывает на слово, с которого ещё _не_ начиналась обработка. Ваша функция `usr_in_proc_data()` увеличивает этот индекс на число обработанных слов, возвращаемое ей, чтобы пометить данные в диапазоне `[старое f_sport_in_proc_pos … новое f_sport_in_proc_pos)` как «обработанные» + + +- . + +- **`f_sport_in_get_pos`** — указывает на слово, которое идёт за последним _освобождённым_ для приёма. Этот индекс и отражает, сколько места освободилось в буфере. + + +Чтобы «освободить» буфер, нужно именно вызвать **`stream_in_buf_free()`** с количеством уже _обработанных_ слов. Эта функция сдвинет `f_sport_in_get_pos`, увеличив его на переданный ей размер, и тем самым даст DMA знать, что в приёмном буфере появилось новое свободное место + +. + +В итоге, цикл работы выглядит так: + +1. **ISR SPORT0_RX** (или DMA-ISR) при каждом шаге приёма сбрасывает + + c + + +- `f_sport_in_put_pos = (f_sport_in_put_pos + block_size) % BUF_SIZE;` + +- **Фоновая функция** `stream_proc()` замечает, что + + c + + +- `available = (f_sport_in_put_pos - f_sport_in_proc_pos + BUF_SIZE) % BUF_SIZE;` + + стало > 0, и вызывает вашу `usr_in_proc_data(data_ptr, available)`. + +- **Внутри** `usr_in_proc_data()` вы парсите `available` слов, затем + + c + + +- `return processed; // число реально обработанных слов` + + Фреймворк **увеличит** `f_sport_in_proc_pos` на `processed`, считая эти слова „обработанными“. + +- **Чтобы освободить место** _для DMA_, фоновая логика **автоматически** вызовет + + c + + +`stream_in_buf_free(processed);` + +— это и есть освобождение приёмного буфера + +1. . + + +**Важно**: если вы вручную вызываете `hdma_send_req_start(TX_buff, TX_buff_I, 0)` прямо в `usr_in_proc_data()`, то штатный `stream_in_buf_free()` может не сработать. В таком случае после обработки вам нужно явно освободить буфер: + +c + +`// в usr_in_proc_data() int processed = parse_and_fill_TX_buff(data, size); hdma_send_req_start(TX_buff, TX_buff_I, 0); // теперь — освободить приемный буфер SPORT0: stream_in_buf_free(processed); return processed;` + +Таким образом вы сообщаете фоновому движку, что `processed` слов уже прочитаны и могут быть перезаписаны приёмом новых данных. + +2/2 + +## You said: + +Проблема с TX_buff вернулась. Давай вернемся к её решению. Вероятно, я случайно уменьшил размер TX_buff и ошибочно посчитал, что проблема решена. static volatile uint32_t TX_buff[100000] __attribute__((section(".sdram_noinit"))); не помогло. В .ld есть единственное упоминание sdram: .sdram_noinit (NOLOAD) : { *(.sdram_noinit, .sdram_noinit.*) } > MEM_SDRAM Какие ещё причины могут помешать разместить массив в SDRAM? Какими методами я могу отследить путь от объявления массива в .с до его окончательного размещения в конце компиляции и сравнить его с правильно размещаемым f_sport_in_buf? Как я могу + +## ChatGPT said: + +Чтобы понять, почему именно ваш `TX_buff` всё ещё кладётся в L1, хотя вы даёте ему `__attribute__((section(".sdram_noinit")))`, нужно проследить несколько этапов сборки: + +1. **Компиляция** `.c` → `.o` + +2. **Линковка** `.o` → ELF + `.map` + + +И сравнить, как на каждом этапе указывает секцию у `f_sport_in_buf` (который работает) и у `TX_buff`. Вот что можно сделать: + +--- + +## 1. Посмотреть секцию в объектном файле + +Соберите только ваш модуль в `.o` и запустите: + +bash + +`# Для BlackFin‑GCC используйте свой readelf/objdump, например bfin-elf-readelf bfin-elf-readelf -S your_module.o | grep -A1 TX_buff bfin-elf-readelf -S your_module.o | grep -A1 f_sport_in_buf` + +В выводе вас интересует поле **`Name`** (например `.sdram_noinit`) и **`Size`**. + +- Если `TX_buff` лежит в секции вроде `.bss` или `.data`, значит компилятор не привязал атрибут. + +- Если он уже в `.sdram_noinit`, значит проблема на этапе линковки. + + +--- + +## 2. Сгенерировать `.map` и проверить, где лежат символы + +При линковке дайте флаг: + +bash + +`-Wl,-Map=output.map` + +В `output.map` найдите: + +nginx + +`TX_buff` + +и посмотрите, какой адрес и к какой секции он отнёсся. +Затем найдите `f_sport_in_buf` и убедитесь, что он реально попал в `.sdram_noinit`. + +--- + +## 3. Сравнить секции в линкер‑скрипте + +У вас в `.ld` есть: + +ld + +`.sdram_noinit (NOLOAD) : { *(.sdram_noinit .sdram_noinit.*) } > MEM_SDRAM` + +Проверьте, нет ли **других** секций, которые тоже могут содержать имя `.sdram_noinit` (буква `.` перед подстановкой). Иногда компилятор ставит в секцию с префиксом, например `.sdram_noinit.XXX`. + +В `readelf -S` итогового ELF посмотрите, есть ли секция + +csharp + +`[some_index] .sdram_noinit PROGBITS/NOLOAD ...` + +и сколько у неё размера. + +--- + +## 4. Убедиться в синтаксисе атрибута + +Для GCC допустимо два варианта: + +c + +`__attribute__((section(".sdram_noinit"))) static volatile uint32_t TX_buff[100000];` + +или + +c + +`static volatile uint32_t TX_buff[100000] __attribute__((section(".sdram_noinit")));` + +Если вы вставили атрибут **до** `static`, то компилятор может его проигнорировать. Всегда ставьте атрибут **непосредственно после** объявления переменной, а не отдельной строкой. + +--- + +## 5. Проверить флаги компилятора + +Иногда опции вроде `-fdata-sections` могут разбить данные на свои секции и линкер их не свяжет с `.sdram_noinit`. Если вы используете `-ffunction-sections -fdata-sections` и `--gc-sections`, попробуйте временно их выключить, чтобы исключить проблему «обрезания» или «перемещения» секций. + +--- + +## 6. Итоговая проверка + +1. Скомпилируйте один файл с `TX_buff` и один – с `f_sport_in_buf`. + +2. Выполните: + + bash + + +3. `bfin-elf-readelf -S tx_module.o > tx_sections.txt bfin-elf-readelf -S sport_module.o > sport_sections.txt diff tx_sections.txt sport_sections.txt` + +4. Смотрите, в чём именно отличаются секции. + + +Когда вы увидите, что у `TX_buff` реально стоит секция `.bss`, а у `f_sport_in_buf` — `.sdram_noinit`, станет ясно, на каком этапе «теряется» ваш атрибут. + +--- + +### Возможные причины + +- **Атрибут стоит не у той переменной** (случайно применён к локальной функции или к другому объявлению). + +- **Секцию переопределяет более поздний `* : { *(.bss) }`** в линкере, который идёт после `.sdram_noinit`. Тогда линкер «забирает» входные секции и кладёт их в общую `.bss`. Нужно в `ld` объявить `.sdram_noinit` **после** `.bss`. + +- **Ошибочное включение атрибута**: если вы просто написали `#include "l502_sdram_noinit.h"` без применения его в объявлении, он не сработает. + + +--- + +Как только вы проследите через **`readelf -S`** и **`.map`**, где лежат оба массива, вы сразу поймёте, что поправить — порядок секций в `.ld` или синтаксис атрибута. + +Дайте знать, какие результаты вы получите после этих проверок! + +## You said: + +1)В .o нет упоминаний ни о f_sport_in_buf (объявлен в l502_stream.c), ни о TX_buff. .sdram_noinit упоминается и в l502_stream.o, и в #include "l502_sdram_noinit.h".o. Если я убираю __attribute__((section(".sdram_noinit"))); или #include "l502_sdram_noinit.h" из объявления TX_buff, то упоминание .sdram_noinit пропадеат из l502_sdram_noinit.o. Тоесть на первом этапе всё работает нормально? В .map есть всего 2 упоминания .sdram: соответствующие файлав l502_stream.o (.sdram_noinit 0x0000000000000000 0xc00000 *(.sdram_noinit, .sdram_noinit.*) .sdram_noinit 0x0000000000000000 0xc00000 build/release/objs/l502_stream.o ) и l502_user_process.o (.sdram_noinit 0x00000000ff802b80 0x9c40 .sdram_noinit 0x00000000ff802b80 0x9c40 build/release/objs/l502_user_process.o ). Полчему запись о stream.o содержит 3 строки, а user_process.o --только 2? + +## ChatGPT said: + +Отличный анализ, вы уже сделали именно те шаги, которые и нужно было сделать: проверили `.o`, проверили `.map` и убедились, что атрибут действительно работает на уровне компилятора. +Давайте разберём ваши наблюдения по порядку и ответим на главный вопрос: + +> **Почему в .map запись о l502_stream.o содержит 3 строки, а у l502_user_process.o — только 2? И что это значит?** + +--- + +## 🔹 Как линкер показывает секции в .map + +Когда вы даёте `-Map`, линкер выводит итоговые секции в таком виде (пример): + +arduino + +`.sdram_noinit 0x0000000000000000 0xc00000 *(.sdram_noinit, .sdram_noinit.*) .sdram_noinit 0x0000000000000000 0xc00000 build/release/objs/l502_stream.o` + +Это значит: + +1. **Первая строка:** заголовок итоговой секции `.sdram_noinit` в ELF. + + +- `.sdram_noinit 0x0000000000000000 0xc00000` + + > Адрес начала и общий размер. + +- **Вторая строка:** список входных секций, которые собираются в эту итоговую секцию. + + markdown + + +- `*(.sdram_noinit, .sdram_noinit.*)` + +- **Третья и далее строки:** конкретные файлы/объекты, из которых были взяты данные в эту секцию. + + arduino + + +1. `.sdram_noinit 0x0000000000000000 0xc00000 build/release/objs/l502_stream.o` + + +👉 **Если есть несколько файлов, которые вносят свой вклад в эту секцию, то будет несколько таких строк.** + +--- + +## 🔹 Почему у вас две записи в map + +Вы приводите: + +arduino + + `из l502_stream.o: .sdram_noinit 0x0000000000000000 0xc00000 *(.sdram_noinit, .sdram_noinit.*) .sdram_noinit 0x0000000000000000 0xc00000 build/release/objs/l502_stream.o` + +и + +arduino + + `из l502_user_process.o: .sdram_noinit 0x00000000ff802b80 0x9c40 .sdram_noinit 0x00000000ff802b80 0x9c40 build/release/objs/l502_user_process.o` + +Разница в том, что линкер вывел **заголовок секции и запись файла** — но _не вывел строку `*(.sdram_noinit, .sdram_noinit.*)`_ между ними. +На самом деле в большинстве реализаций линкера эта вторая строка (`*(...)`) выводится **один раз — для первого блока секции**. Для последующих частей той же секции (которые находятся по другим адресам в памяти) линкер уже не повторяет список шаблонов входных секций, а сразу пишет, откуда взято. + +--- + +## 🔹 Почему разные адреса у stream.o и user_process.o + +Вот самое интересное: + +- `l502_stream.o` попал в `.sdram_noinit` с адреса **0x0000000000000000**, размер **0xc00000** (12 МБ), + +- `l502_user_process.o` попал в `.sdram_noinit` с адреса **0xff802b80**, размер **0x9c40** (≈40 КБ). + + +Это означает, что **у вас в линкере определено несколько регионов памяти**, и `.sdram_noinit` была назначена не только в `MEM_SDRAM`, а ещё куда‑то. +Или же, что‑то более вероятное: **адрес 0xFF802B80 — это как раз L1‑память (MEM_L1_DATA_A)**, а не SDRAM. +То есть ваш `TX_buff` из `l502_user_process.o` всё ещё размещается не в том регионе. + +--- + +## 🔹 Почему это происходит + +В линкер‑скрипте обычно есть такие строки: + +ld + +`MEM_L1_DATA_A : ORIGIN = 0xff800000, LENGTH = 128K MEM_SDRAM : ORIGIN = 0x00000000, LENGTH = 32M SECTIONS { .sdram_noinit (NOLOAD) : { *(.sdram_noinit .sdram_noinit.*) } > MEM_SDRAM }` + +Если `TX_buff` попал в `.sdram_noinit`, то **он обязан быть в MEM_SDRAM**. +Но судя по map: + +arduino + +`.sdram_noinit 0x00000000ff802b80 0x9c40 build/release/objs/l502_user_process.o` + +— он всё-таки оказался в **адресном пространстве L1** (начало L1 обычно 0xFF800000). + +👉 Значит, линкер‑скрипт, который используется при сборке вашего модуля, **назначает `.sdram_noinit` в L1**, или вы подключаете не тот `.ld`. + +--- + +## 🔧 Что проверить + +1. **Убедитесь, что используется нужный .ld** + В проекте может быть несколько линкер‑скриптов: для внутренней памяти и для SDRAM. + Проверьте, какой именно подключён при сборке. + +2. **Проверьте MEM_SDRAM в .ld** + Он должен указывать на 0x00000000 и иметь размер 32 МБ (как вы писали). + Убедитесь, что `.sdram_noinit` в самом низу `.ld` именно в MEM_SDRAM: + + ld + + +- `.sdram_noinit (NOLOAD) : { *(.sdram_noinit .sdram_noinit.*) } > MEM_SDRAM` + +- **Проверьте, нет ли ещё одного описания `.sdram_noinit`** + Иногда в разных `MEMORY` блоках есть разные варианты: + + ld + + +1. `.sdram_noinit (NOLOAD) : { ... } > MEM_L1_DATA_A` + + Тогда при сборке нужно исключить ненужный. + + +--- + +## 🔍 Как отследить путь полностью + +✅ **readelf / objdump** по `.o` → видите, что секция есть и называется правильно. +✅ **.map после линковки** → видите, в какой регион памяти попала секция. + +**Сравнивая:** + +- `f_sport_in_buf` — лежит в `.sdram_noinit` по адресу `0x00000000...` (SDRAM). + +- `TX_buff` — лежит в `.sdram_noinit` по адресу `0xFF802B80` (L1). + + +👉 значит, `.ld`, который у вас собран, для `l502_user_process.o` (или всего проекта) **назначает `.sdram_noinit` не туда, куда вы думаете**. + +--- + +## ✨ Что делать + +✅ Проверьте, что при сборке берётся тот же `.ld`, что и для `l502_stream.o`. +✅ Убедитесь, что в `.ld` секция `.sdram_noinit` **одна** и указывает именно на `MEM_SDRAM`. +✅ Если всё правильно, а в `.map` всё равно `0xFF80...`, значит подключается не тот линкер‑скрипт или где‑то есть переопределение. + +--- + +📌 **Вывод по вашим данным:** + +🔸 Атрибут на этапе компиляции срабатывает — `.o` связывается с секцией `.sdram_noinit`. +🔸 На этапе линковки для вашего модуля `.sdram_noinit` оказывается назначенной в регион по адресу `0xFF802B80`, то есть в L1, а не в SDRAM. +🔸 Нужно проверить и привести к единому виду `.ld` / `MEMORY` блоки, чтобы `.sdram_noinit` была одна и указывала на `MEM_SDRAM`. + +💡 Если хотите — пришлите фрагменты вашего `.ld` с блоками `MEMORY` и `SECTIONS`, я помогу поправить так, чтобы обе переменные оказались в SDRAM. 🚀 + +## You said: + +1) Есть только один .ld файл. В нем только одно определение MEM_SDRAM:В MEMORY { MEM_L1_CODE : ORIGIN = 0xFFA00000, LENGTH = 0xc000 MEM_L1_CODE_CACHE : ORIGIN = 0xFFA10000, LENGTH = 0x4000 MEM_L1_SCRATCH : ORIGIN = 0xFFB00000, LENGTH = 0x1000 MEM_L1_DATA_B : ORIGIN = 0xFF900000, LENGTH = 0x8000 MEM_L1_DATA_A : ORIGIN = 0xFF800000, LENGTH = 0x8000 MEM_SDRAM : ORIGIN = 0x00000000, LENGTH = 32 * 1024 * 1024 }. Интересно, что в .map сначала упоминается user_process.o (без *(.sdram_noinit, .sdram_noinit.*)), затем stream.o. Последная входная секция, которая упоминается до user_process.o -- это *(.data .data.* .gnu.linkonce.d.*), которая в .ld помещается в MEM_L1_DATA_A. Адрес user_process.o (0x00000000ff802b80) входит в диапазон L1_DATA_A, ошибка компилятора тоже говорит о переполнении L1_DATA_A. Может неправильный порядок -- это и есть причина ошибки? + +## ChatGPT said: + +Да! 👏 Вы очень точно подметили ключевой момент: + +👉 **Судя по вашему `.map`, секция из `l502_user_process.o` (с `TX_buff`) почему‑то идёт не в блок `.sdram_noinit`, а встраивается сразу после `.data` в L1_DATA_A.** + +А то, что вы видите в `map`: + +kotlin + +`... *(.data .data.* .gnu.linkonce.d.*) -> MEM_L1_DATA_A .sdram_noinit 0x00000000ff802b80 ... build/release/objs/l502_user_process.o` + +означает буквально следующее: +**линкер воспринимает `.sdram_noinit` из `l502_user_process.o` как часть текущей выходной секции (.data), потому что определение `.sdram_noinit` в вашем .ld находится ниже в скрипте или не применяется к этому объекту.** + +--- + +### 📌 Почему у `l502_stream.o` всё нормально + +У него в `map` видно красивый блок: + +arduino + +`.sdram_noinit 0x0000000000000000 ... build/release/objs/l502_stream.o` + +с шаблоном: + +markdown + +`*(.sdram_noinit, .sdram_noinit.*)` + +и назначено в MEM_SDRAM. + +--- + +### 📌 Что произошло с `l502_user_process.o` + +- Линкер начал собирать `.data` (L1_DATA_A) по шаблону `*(.data .data.* .gnu.linkonce.d.*)`. + +- Внутри `l502_user_process.o` почему‑то секция с `TX_buff` **не называется** `.sdram_noinit`, а попала в `.data` (поэтому адрес 0xFF802B80, и отчёт о переполнении L1_DATA_A). + + +То, что вы наблюдаете в map: + +arduino + +`.sdram_noinit 0x00000000ff802b80 ... build/release/objs/l502_user_process.o` + +показывает имя, но не факт, что оно идёт через блок `.sdram_noinit` вашего .ld. +На самом деле линкер может присвоить выходной секции `.data` имя любой из входных секций, если это первая секция в списке входных секций объекта. + +> **Признак:** перед этой записью нет строки `*(.sdram_noinit .sdram_noinit.*)`, значит, она не обрабатывается как отдельная секция, а вливается в предыдущий выходной блок. + +--- + +### 📐 Как должно быть + +В .ld должно быть: + +ld + +`SECTIONS { /* ... data, bss etc ... */ .sdram_noinit (NOLOAD) : { *(.sdram_noinit .sdram_noinit.*) } > MEM_SDRAM }` + +И **эта секция должна находиться в .ld выше любых catch‑all шаблонов типа `*(.data*)`, если вы хотите, чтобы линкер сначала выбрал её.** +На практике порядок в SECTIONS важен: линкер идёт сверху вниз. + +--- + +### ✨ Почему порядок важен + +Линкер проходит по объектным файлам и ищет секции. Когда встречает секцию из объекта, он ищет первое правило в `SECTIONS { … }`, подходящее по имени. Если первым идёт `.data`, то секция (даже с именем `.sdram_noinit`) может попасть туда, если имя не совпадает идеально или если по каким‑то причинам GCC сгенерировал другую секцию. + +**Ваши симптомы:** + +- `f_sport_in_buf` попадает куда надо. + +- `TX_buff` попадает в `.data`. + + +**Возможные причины:** + +1. Атрибут секции не применяется (но вы проверили `.o`, он применяется). + +2. В линкер‑скрипте порядок секций такой, что `.data` «перехватывает» ваш буфер. + + +--- + +### 🔧 Что сделать + +✅ **Переместите определение `.sdram_noinit` выше блока `.data` в .ld.** +Например, так: + +ld + +`SECTIONS { .sdram_noinit (NOLOAD) : { *(.sdram_noinit .sdram_noinit.*) } > MEM_SDRAM .data : { *(.data .data.* .gnu.linkonce.d.*) } > MEM_L1_DATA_A /* ... дальше остальные ... */ }` + +✅ **Либо явно проверьте имя секции в .o:** + +bash + +`bfin-elf-objdump -h build/release/objs/l502_user_process.o | grep sdram` + +Если там секция называется не `.sdram_noinit`, а например `.data.sdram_noinit` — добавьте такой шаблон в ваш .ld: + +ld + +`*(.sdram_noinit .sdram_noinit.* .data.sdram_noinit*)` + +✅ **Пересоберите и снова посмотрите map.** +Вы должны увидеть, что теперь обе переменные (`f_sport_in_buf` и `TX_buff`) отображаются под одним заголовком `.sdram_noinit` с указанием MEM_SDRAM. + +--- + +### 💡 Краткий чек-лист + +- Проверить точное имя секции в `objdump -h`. + +- Убедиться, что шаблон в .ld совпадает. + +- Переместить блок `.sdram_noinit` выше `.data`. + +- Пересобрать и проверить map. + + +--- + +✉️ **Напишите, если хотите, я помогу поправить ваш .ld** — можете прислать кусок SECTIONS, я покажу, как переставить, чтобы `TX_buff` гарантированно ушёл в SDRAM, как и `f_sport_in_buf`. 🚀🔥 + +## You said: + +1. В проекте нашелся только один .ld файл, он же единственный .ld в makefile. 2. Шаблон точно совпадает (сделал ctrl-c из .ld в определение: static volatile uint32_t TX_buff[10000] __attribute__((section(".sdram_noinit"))); ). 3. описание MEM_SDRAM в .ld точно только одно. Когда я переместил его в самое начало SECTIONS, .map слегка изменился: user_process.o остался в .data и не изменился, но запись streams.o перенеслась ближе к началу .map и стала такой: .sdram_noinit 0x0000000000000000 0xc00000 *(.sdram_noinit, .sdram_noinit.*) .sdram_noinit 0x0000000000000000 0xc00000 build/release/objs/l502_stream.o 0x0000000000000000 PROVIDE (__executable_start, 0x0) 0x0000000000000000 . = 0x0 4.Если нет идей, что попробуй поискать решение проблемы в интернете. + +## ChatGPT said: + +Давайте шаг за шагом сузим зону поиска и выстроим чёткий диагноз — причем без «гугления», а чисто по вашим оbject и map-файлам. + +--- + +## 1. Убедиться, что секция у переменной именно “.sdram_noinit” + +Войдите в каталог с вашими объектниками и запустите: + +bash + +`bfin-elf-objdump -h build/release/objs/l502_user_process.o | grep -A2 sdram_noinit` + +В выводе вы должны увидеть что‑то вроде + +css + + `[ N] .sdram_noinit 00009c40 ... CONTENTS, ALLOC, LOAD, READONLY` + +Если вместо `CONTENTS, ALLOC, LOAD` вы видите `ALLOC, LOAD, DATA`, значит это **.data**, и атрибут не сработал. + +Если же там **правильно** `.sdram_noinit/PROGBITS/NOLOAD`, значит дальше смотрим на линковку. + +--- + +## 2. Проверить, не «съедается» ли наша секция gc-sections + +Если вы компилируете с опциями + +diff + +`-fdata-sections -ffunction-sections \ -Wl,--gc-sections` + +либо в Makefile включён `--gc-sections`, то линкер _может_ выкинуть вашу секцию, если сочтёт её «неиспользуемой». +В этом случае она не попадёт в итоговый ELF вообще, а затем «подхватится» более ранней секцией (обычно `.data`). + +**Решение**: в вашем `.ld` оберните шаблон в `KEEP`, например: + +ld + + `.sdram_noinit (NOLOAD) : { KEEP(*(.sdram_noinit .sdram_noinit.*)) } > MEM_SDRAM` + +Это гарантирует, что даже «неиспользуемая» .sdram_noinit останется на месте. + +--- + +## 3. Уточнить, как именно линкер видит вашу секцию + +После сборки возьмите итоговый ELF (или `.elf`) и выполните: + +bash + +`bfin-elf-readelf -S application.elf | grep -A1 sdram_noinit` + +Вы должны получить: + +arduino + +`[N] .sdram_noinit ... MEM_SDRAM` + +А если адрес ≈ `0xFF80xxxx`, значит линкер всё ещё класть .sdram_noinit в L1. В таком случае: + +- либо вы подключаете не тот `.ld`, + +- либо ваш `MEMORY` блок для SDRAM не соответствует тому, что используется. + + +Проверьте в выводе `readelf -S` зоны памяти (столбец «Address»): убедитесь, что **SEGMENT** с `.sdram_noinit` стоит строго в диапазоне `0x00000000–0x01FFFFFF`. + +--- + +## 4. Диагностика .map + +В вашем `output.map`, сразу после записи `*(.data .data.* …)`, появится первая секция, которую линкер не распознал как отдельную — и он начинает сливать всё, что не попало выше, в эту же область. + +Чтобы .sdram_noinit точно врезалась раньше: + +1. **Перенесите** блок `.sdram_noinit` в `.ld` **сразу после** раздела `.text`, до всех data/bss‑блоков. + +2. Убедитесь, что `.data` определён где‑то **ниже**, и шаблон его не «перекрывает» дикими масками. + +3. Используйте `KEEP` (см. пункт 2). + + +--- + +## 5. Итоговый образец фрагмента SECTIONS + +ld + +`SECTIONS { /* … код … */ /* 1) Секция кода (пример) */ .text : { *(.text .text.*) } > MEM_L1_CODE /* 2) FIRST — SDRAM_NOINIT, до любой .data */ .sdram_noinit (NOLOAD) : { KEEP(*(.sdram_noinit .sdram_noinit.*)) } > MEM_SDRAM /* 3) Дальше идут обычные data/bss в L1 */ .data : { *(.data .data.* .gnu.linkonce.d.*) } > MEM_L1_DATA_A .bss : { *(.bss .bss.* .gnu.linkonce.b.*) } > MEM_L1_DATA_A /* … остальное … */ }` + +--- + +### Подведём итог + +1. Проверьте `objdump -h` на точное имя и атрибут вашей секции в **.o**. + +2. Добавьте `KEEP` вокруг `*(.sdram_noinit .sdram_noinit.*)` на всякий случай. + +3. Убедитесь через `readelf -S` итогового ELF, что `.sdram_noinit` идёт в адреса `0x00000000…`. + +4. Переместите блок **выше** любых data/bss‑шаблонов. + + +Как только линкер увидит вашу секцию **до** .data и не «сольёт» её в L1, `TX_buff` гарантированно окажется в SDRAM, и переполнение L1 исчезнет. + +## You said: + +1. В user_process.o всё хорошо:7 .sdram_noinit 00009c40 00000000 00000000 00000c6c 2**2 CONTENTS, ALLOC, LOAD, DATA 2.KEEP не помогло. 3. компилятор падеат до того, как начинает генерировать elf. Однако bfin-elf-readelf -S user_process.o дал такой вывод: [12] .sdram_noinit PROGBITS 00000000 000c6c 009c40 00 WA 0 0 4, хотя MEM_L1_DATA_A всё ещё переполнен, а в .map массив относится к секции .data. Однако, перенос объявления TX_buff в stream.c (где объявлялся и f_sport_in_buf), решает проблему. Может быть stream.c и user_process.c по-разному подхватываются компилятором? А между обработкой этих двух файлов что-то ломается? + +## ChatGPT said: + +Похоже, что проблема не в том, что линкер «забыл» или «перехватил» вашу секцию — он её просто нигде не встретил под именем `.sdram_noinit` в момент, когда шёл по блокам `SECTIONS{…}`. А всё потому, что для `l502_user_process.o` фактически **ни один** из ваших шаблонов в секции `.sdram_noinit` не сработал, и тогда линкер упал обратно на шаблон `*(.data .data.* .gnu.linkonce.d.*)` и запихнул буфер в L1. + +Давайте коротко по‑пунктам, как убедиться и устранить: + +--- + +## 1. Сравните реальные команды компиляции + +`stream.c` и `user_process.c` **должны** компилироваться с одними и теми же флагами. +Выполните в каталоге сборки: + +bash + +`grep "$(basename stream.c .c)" -R build/compile_commands.json grep "$(basename user_process.c .c)" -R build/compile_commands.json` + +или, если нет `compile_commands.json`, найдите в логе Makefile строки: + +bash + +`make VERBOSE=1 ... user_process.o make VERBOSE=1 ... l502_stream.o` + +**Сравните** CFLAGS и особенно опции вида `-fdata-sections`, `-fsection-anchors`, `-march=…` и пр. +Если они отличаются, вы нашли виновника: в одном файле атрибут применяется, а в другом — нет. + +--- + +## 2. Дважды убедитесь в правильности атрибута + +Для GCC атрибут можно писать **до** или **после** объявления переменной, но **он должен стоять рядом с именем**: + +Правильно: + +c + +`static volatile uint32_t TX_buff[100000] __attribute__((section(".sdram_noinit")));` + +или + +c + +`__attribute__((section(".sdram_noinit"))) static volatile uint32_t TX_buff[100000];` + +**Неправильно**: + +c + +`#include "l502_sdram_noinit.h" static volatile uint32_t TX_buff[100000]; // <- без явного атрибута` + +Проверьте, что в `user_process.c` вы именно так и написали. + +--- + +## 3. Проверьте входные секции в объектнике + +Выполните: + +bash + +`bfin-elf-objdump -h build/release/objs/l502_user_process.o | grep -A2 "\.sdram_noinit"` + +Вы **должны** увидеть: + +csharp + + `[12] .sdram_noinit PROGBITS 00000000 000c6c 009c40 00 WA 0 0 4` + +Если этой секции нет — значит атрибут вовсе не применился. +Если она есть — он применился, и смотрите п.1 и п.4. + +--- + +## 4. Проверьте, что вы действительно линкуете тот же `.ld` + +Очень часто в Makefile бывает две цели — одна «для прошивки» (с `linker_flash.ld`), другая «для отладки» (с `linker_debug.ld`). +Убедитесь, что **и stream.o, и user_process.o** попадают в **одну и ту же** финальную линковку с **одним и тем же** `.ld`. + +--- + +## 5. Временно запретите `--gc-sections` + +Если у вас в `LDFLAGS` есть `--gc-sections`, попробуйте её убрать или хотя бы окружить `.sdram_noinit` в скрипте: + +ld + + `.sdram_noinit (NOLOAD) : { KEEP(*(.sdram_noinit .sdram_noinit.*)) } > MEM_SDRAM` + +Чтобы линкер не «считал» вашу секцию «неиспользуемой» и не выкидывал её до того, как доберётся до неё. + +--- + +### Резюме + +1. **Убедитесь**, что оба файла компилируются с одинаковыми флагами. + +2. **Проверьте**, что в `user_process.o` действительно есть входная секция `.sdram_noinit`. + +3. **Проверьте**, что используется именно тот `.ld`, где эта секция > MEM_SDRAM. + +4. **Обновите** скрипт, обернув KEEP вокруг шаблона, и поставьте его **выше** любых `.data` в `SECTIONS`. + +5. **Пересоберите**, и в `output.map` обе переменные будут в `.sdram_noinit` с адресом в `0x00000000…`. + + +Как только вы выстроите эту цепочку от C‑кода через .o до .map, станет очевидно, где «теряется» ваш атрибут, и его точно получится устранить. Если что-то из этих шагов выдаст неожиданный результат — расскажите, и мы углубимся именно в эту точку! + + + +ChatGPT can make mistakes. Check important info. See Cookie Preferences. \ No newline at end of file diff --git a/баг с размещением большого буфера не в тот регион памяти.md b/баг с размещением большого буфера не в тот регион памяти.md new file mode 100644 index 0000000..dce6561 --- /dev/null +++ b/баг с размещением большого буфера не в тот регион памяти.md @@ -0,0 +1,19 @@ +В файле l502_user_process.c объявлен большой массив uint32_t TX_buff[100000]. +Для его размещения в большой (32Мб) SDRAM, а не в маленькой (несколько десятков Кб) L1, используется один из вариантов: +1. `#include "l502_sdram_noinit.h"` непосредственно перед объявлением +2. `__attribute__((section(".sdram_noinit")))` в объявлении (т.е. объявление выглядит так: ) + + +Поптытки решить с ChatGPT: https://chatgpt.com/share/687a5c3d-9194-8013-88c9-60e68295c834, [[баг с большим массивом blackfin and ChatGPT]] + + +Проблема: несмотря ни на что компилятор помещает большие массивы, объявленные с соотвестсвующей директивой, в l502_user_process.c в MEM_L1_DATA_A. + +### workaround +объявлять массивы в l502_stream.c, затем подключать их в l502_user_process.c через extern. + + + + + + diff --git a/детекторная головка.md b/детекторная головка.md new file mode 100644 index 0000000..1a82bd2 --- /dev/null +++ b/детекторная головка.md @@ -0,0 +1,2 @@ +RigolDS3 -- нагрузка аттенюатор 3 дБ, 1Мом +RigolDS4 -- аттенюатор 3 дБ, 50 Ом diff --git a/код for_stm32_2023_12_08.md b/код for_stm32_2023_12_08.md new file mode 100644 index 0000000..129327b --- /dev/null +++ b/код for_stm32_2023_12_08.md @@ -0,0 +1,33 @@ +Лежит по пути `/home/feda/MIPT/RadioPhotonic_Subserface_radar/Generator_PCB/radiophotonics-main/For_stm32_2023_12_08_makefile` +Собирается через `make` +Прошивается через Stm32CubeProgrammer + +### Обработка температуры +оцифровывается АЦП, затем 1 и 2 батйты uint16_t меняются, рассчитывается температура python3 функцией `conv_T_N_to_C(hex)` +## Основная state machine (CPU_state) +```mermaid +graph TD + +``` +### HALT +### DECODE_ENABLE -> WORK_ENABLE +### DEFAULT_ENABLE +### TRANS_S_ENABLE +### TRANS_ENABLE +### REMOVE_FILE +### STATE +### WORK_ENABLE +### DECODE_TASK +### RUN_TASK +### +### + +## ADC +Встроенные ADC -- измеряют напряжения 3V, 5V1, 5V2, температуры платы рядом с лазерными модулями. Очередность + +## Ответы на команды +### 0x4444 + + +# Ограничения +Если выполняется слишком много кода во время варьирования тока -- не остается времени на обработку команды 0x4444 (запрос текущих параметров компом). \ No newline at end of file diff --git a/модулятор Маха-Цандера.md b/модулятор Маха-Цандера.md new file mode 100644 index 0000000..6d8d6a3 --- /dev/null +++ b/модулятор Маха-Цандера.md @@ -0,0 +1 @@ +RigolDS2 -- нагрузка \ No newline at end of file diff --git a/обработка данных на blackfin в АЦП подготовка.md b/обработка данных на blackfin в АЦП подготовка.md new file mode 100644 index 0000000..c2eeaa7 --- /dev/null +++ b/обработка данных на blackfin в АЦП подготовка.md @@ -0,0 +1,309 @@ +[[ADC_software-hardware]] + + +Про настройку linux для работы с АЦП: [[АЦП E-502]] + +Описание работы с BF: [[x502_low_level.pdf]] +# how-to +## load firmware to Blackfin DSP +При использовании штатной библиотеки x502api для загрузки прошивки с +компьютера достаточно установить связь с устройством и вызвать функцию +X502_BfLoadFirmware(), которая загружает прошивку, проверяет ее работу +с помощью команды L502_BF_CMD_CODE_GET_PARAM с параметром +L502_BF_PARAM_FIRM_VERSION (подробнее смотри раздел Командный ин- +терфейс между ПК и сигнальным процессором), передает прошивке необходимую +информацию о модуле, после чего переводит модуль в режим работы с DSP. + +Загружаем .ldr + + +## setup ADC sampling etc. Настройка параметров сбора данных +Как и для API верхнего уровня, прошивка BlackFin может устанавливать парамет- +ры сбора данных только в момент, когда не запущен синхронный ввод-вывод. В штат- +ной прошивке, как и в API верхнего уровня, сперва задаются все параметры, после +чего вызывается специальная функция (configure()), которая их непосредственно запи- +сывает в регистры ПЛИС. Сами параметры хранятся в структуре g_set. Они могут +быть заданы как командами из программы ПК при вызове X502_Configure(), так и +изменены внутри самой прошивкой. Для изменения можно как напрямую изменять по- +ля структуры g_set, так и использовать функции из l502_param.h (params_set_lch(), +params_set_adc_freq_div() и т.д.), которые дополнительно проверяют значения пара- +метров. Сами параметры аналогичны используемым в API верхнего уровня (правда +частоты сбора необходимо устанавливать вручную с помощью делителей и межкадро- +вой задержки). +После изменения параметров из прошивки необходимо перед запуском сбора не за- +быть вызвать configure(). +## алгоритм работы: +см 5.7 Командный интерфейс между ПК и сигнальным +процессором +1. записываем команду (по номеру), аргументы. +2. DSP загружает её в память, выставляет флаг "работаем" +3. DSP вызывает соответствующую функцию +4. ф-ция отрабатывает +# Realisation +Задача: + 1. Запуск, настройка АЦП + 2. Получение данных от АЦП + 3. рассчет FFT для одного ЛЧМ. Плата генератора должна подавать сигнал о том, что ЛЧМ в процессе, чтобы разделять данные для разных ЛЧМ + 4. выдача результата на ПК +## Решение: +### Программа на PC +Функционал: +- загружает прошивку в BlackFin (X502_BfLoadFirmware()) +- настраивает АЦП +- отправляет в BF команду на запуск работы +- принимает данные от BF +- отправляет BF пользовательские команды для управления (задать константы, управление обработкой и т.п.) +### BlackFin software +Этапы создания ПО: +- [x] прием чисел от ПК, умножение на константу (задаваемую отдельной функцией) +- [x] прием данных от АЦП, пересылка на ПК +- [ ] FFT обработка данных АЦП, пересыл на ПК + + + +Если l502_cmd_done() вызывается дважды -- на ПК посылабтся данные последнего вызова. По крайней мере, если вызовы происходят подряд + + +## hints: +Если l502_cmd_done() вызывается дважды -- на ПК посылабтся данные последнего вызова. По крайней мере, если вызовы происходят подряд + +### Про потоки данных и HostDMA: +HDMA должен конфигурироваться с компа. +Если конфигурировать с BlackFin, то настройки в ПЛИС будут изменены, всё сконфигурируется, но ПК и драйвер об этом знать не будут. Решение: +Вызывать с ПК: +1. X502_StreamsEnable() +2. X502_StreamsStart() +непосредственно прием: +3. X502_GetRecvReadyCount() +4. X502_Recv() + + + +Данные АЦП попадают в BF по интерфейсу SPORT0: +![[Pasted image 20250627192138.png]] + + + +Реализация чтения данных АЦП: +функция usr_in_proc_data(): Функция вызывается каждый раз, когда обнаружены новые данные от АЦП/цифровых входов, пришедшие по SPORT0. By defalut -- просто отправляет данные по HDMA +Последовательность (предположительно): См главу 5.8 +1. задание параметров АЦП +2. задание L502_BF_PARAM_IN_STREAM_MODE = 0x100 / Режим работы потока на ввод / +3. разрешение потоков IO BF (L502_BF_CMD_CODE_STREAM_EN) +4. запуск потоков (L502_BF_CMD_CODE_STREAM_START) +5. запуск DSP в режиме потоков L502_BF_MODE_STREAM +См главу 5.8 lowlevel_guide + +## Формат данных в потоке на ввод и на вывод +Существует только один поток на ввод и один на вывод. Данные в потоке передаются в виде 32-битных слов. При этом в 32-битном слове, помимо самих данных закодировано и что это за данные (АЦП или DIN). Определить, что за данные, можно по старшему байту принятого слова. +Ниже приведена таблица для определения какому типу данных принадлежит принятое слово из потока ввода: + + +| Биты 31-24 | hex | Значение | +| ---------- | ------------ | ------------------------ | +| 1xxxxxxx | 0x80 -- 0xFF | Данные от АЦП | +| 00000000 | 0x00 | Данные с цифровых входов | +| 00000001 | 0x01 | Сообщения (от BF в ПК) | +| 001xxxxx | 0x20 -- 0x3F | Резерв | +| 01xxxxxx | 0x40 -- 0x7F | Пользовательские данные | + +Непосредственно от ПЛИС по SPORT0 приходят только данные от АЦП и цифровых входов. Сообщения могут генерироваться в прошивке BlackFin для уведомления программы ПК о событиях. Сейчас используется только одно сообщение — сообщение о переполнении буфера. Штатная прошивка передает это сообщение при переполнении буфера SPORT0 на прием. При работе в режиме без DSP это сообщение генерируется аппаратно ПЛИС при переполнении внутреннего буфера DMA на ввод. Данные от АЦП приходят в виде расширенного 24-битного формата в дополнительном коде, так как к ним уже аппаратно применены калибровочные коэффициенты. Код L502_ADC_SCALE_CODE_MAX соответствует напряжению равному границе данного диапазона (например, +10В, +2В и т.д.). + +**Данные от АЦП приходят в следующем формате:** + +| 31-24 | 23-0 | +| -------- | ------------------------ | +| 11mmcccc | dddddddddddddddddddddddd | +- ˆd — 24-битный скорректированный дополнительный код АЦП. +- с — номер канал: “0” — 1-ый или 17-ый, “15” — 16-ый или 32-ой канал (в зависимости от режима). +- m — режим измерения: + - 0 — дифференциальный + - 1 — первые 16 каналов с общей землей + - 2 — вторые 16 с общей землей + - 3 — собственный ноль + + +**С цифровых линий данные приходят в следующем формате:** + + +| 31-24 | 23-16 | 15-8 | 7-0 | +| -------- | -------- | -------- | -------- | +| 00000000 | 000000ss | dddddddd | dddddddd | + +- ˆd — значения цифровых линий +- ˆs — значение линий DI_SYN1 (16-ый бит) и DI_SYN2 (17-ый бит) + +Для слов потока на вывод схожим образом по старшем битам определяется, для +чего предназначены данные: + + + + + + +## random from docs: + +Размещение неинициализуемоего массива (буфера). подключать файл надо перед каждым объявлением. +`#include ‘‘l502_sdram_noinit.h’’ +`static volatile uint32_t f_sport_in_buf[L502_SPORT_IN_BUF_SIZE]; + + + +### HostDMA +Запись и чтение по HostDMA всегда осуществляются блоками, кратными +восьми 32-битным словам (32 байта). Таким образом при записи массива данных разме-ром, некратным размеру блока, будет испорчена часть данных за записываемой частью до границы, кратной 32-м байтам + +Для прямого доступа к памяти со стороны ПК в библиотеке l502api введены функ- +ции X502_BfMemRead() и X502_BfMemWrite(). При этом реально обмен осуществляется +блоками с максимальным размером 128 32-битных слов (512 байт), т.е. при вызове функ-ции с большим размером, массив данных будет разбит на несколько блоков, которые будут последовательно записаны/прочитаны. **надо следить за использованием, для исключения чтения недообработанных данных** + +Изменение состояния этих выходов (toggle) при нулевом значении на выходах PF14 или PF15 является признаком, что в памяти BlackFin есть готовый новый блок для передачи или есть место для приема очередного блока на вывод. При этом **можно сообщить о готовности нового блока до завершения предыдущего**, так как ПЛИС сохраняет количество готовых, но не завершенных запросов на обмен. Всего может быть до 31 (определено через L502_IN_HDMA_DESCR_CNT и 502_OUT_HDMA_DESCR_CNT) незавершенных запросов по каждому направлению. + +**Для описания запросов на обмен используются дескрипторы**, которые хранятся в фиксированной области памяти BlackFin (g_state.hdma.in[] и g_state.hdma.out[]). Состав дескриптора описан типом t_hdma_stream_descr. После сброса автомата ПЛИС ножками PF14 и PF15, автомат ожидает дескриптор по фиксированным адресам: &g_state.in[0] (0xFF800020) для ввода и &g_state.out[0] (0xFF800420) для вывода. Адрес же каждого следующего дескриптора задается в предыдущем дескрипторе. +По **завершению** чтения или записи данных, соответствующих дескриптору, **ПЛИС** +**записывает обработанный дескриптор полностью обратно в память BlackFin** по адре- +сам &g_state.in_lb (0xFF800000) и &g_state.out_lb (0xFF800400), **меняя нек. поля**. Прошивка использует поле valid, чтобы узнать о завершении запроса. + +#### Алгоритм передачи данных для потока ввода выглядит схожим образом: +ˆ +- При запуске потока прошивка вызывает функцию hdma_send_start(), которая +устанавливает выход PF14 в 0 — разрешается поток на ввод +- При наличии блока данных на передачу необходимо вызвать hdma_send_req_start() +с указанием буфера с данными — функция заполняет дескриптор g_state.in[0] нужными значениями (full_size=size*2, xcnt=min(256, size*2), addr, valid=1, id) и изменяет состояние выхода PG5, чтобы сообщить ПЛИС о готовности нового запроса. +- ПЛИС по этому сигналу, когда будет свободна шина HostDMA, считывает де- +скриптор из g_state.in[0]. +- При наличии места в памяти ПК на прием и свободной шине HostDMA идет чтение данных из памяти BlackFin, начиная с адреса g_state.in[0].addr, блоками размером не больше xcnt 16-битных слов с последующей записью в память ПК. +- При передаче всех full_size слов записывается считанный до этого дескриптор с измененными полями full_size и addr по адресу &g_state.in_lb. +- По завершению этой записи в обработчике hdma_isr() прошивка определяет по g_state.in_lb.valid, что записан дескриптор, устанавливает g_state.in_lb.valid в 0, вычисляет обработанный размер и вызывает hdma_send_done(). ˆhdma_send_done() реализовано в l502_user_process.c. +- ˆПри передаче на вывод в обратно записанном дескрипторе full_size=0, что соответствует полностью обработанному дескриптору. +- По мере необходимости добавляются новые дескрипторы через dma_send_req_start(). +- Дожидаться завершения предыдущего не обязательно — задания на передачу данных ставятся в очередь. Только нужно проверить, что есть место в очереди через hdma_send_req_rdy(). +- При завершении потокового ввода вызывается hdma_send_stop(), которая устанавливает PF14 в 1, что приводит к сбросу автомата приема потока на ввод по HostDMA в ПЛИС. + +### SPORT0 (5.9) + + +В отличии от остальных интерфейсов для приема-передачи потоков данных, где обмен осуществляется через дескрипторы и может быть приостановлен, пока новый дескриптор не будет поставлен в очередь, прием синхронных данных от АЦП/DIN всегда осуществляется непрерывно со скоростью ввода этих данных. Прием осуществляется 32-битными словами. При этом каждое 32-битное слово передается как два 16-битных, передаваемых параллельно — одно по первичному каналу SPORT0, второе — по вторичному. При приеме используется внешний сигнал начала кадра (RFS), который генерирует ПЛИС каждый раз при наличии нового принятого отсчета АЦП или DIN. +Сигнал RFS должен быть явно разрешен с помощью установки бита BF_RFS_EN регистра OUTSWAP_BFCTL. Для ра. +приема +Прием +используется +данных +третий +происходит +канал +постоянно +DMA +в +BlackFin +буфер +в +режимеавтобуфе- +f_sport_in_bufразмером +L502_SPORT_IN_BUF_SIZE. Сам буфер разделен на блоки, размер каждого из +которых +равен +шагу +прерывания. +Этот +шаг +может +быть +установлен +с +помощью +функции sport_in_set_step_size(). В штатной прошивке установка этого параметра +осуществляется +с +ПК +через +команду +L502_BF_CMD_CODE_SET_PARAM +с +параметром L502_BF_PARAM_IN_STEP_SIZE, но ничего не мешает изменять его +из самой прошивки пока синхронные потоки не запущены. +Для реализации приема данных с указанным шагом используется 2D режим DMA, +где размер по X равен размеру шага (умноженному на 2, т.к. используется 16-битный +77режим DMA), а по Y - количеству шагов, которое помещается в буфере на прием (долж- +но быть не меньше 3). Таким образом, если размер буфера на прием не кратен шагу, +то реально используется не весь буфер, а наибольший размер кратный шагу, но не +превышающий размер буфера. +После приема данных, размер которых соответствует шагу прерывания, будет вы- +зван обработчик isr_sport_dma_rx(), в котором обновляется размер принятых данных +в буфере и проверяется переполнение. Т.к. прерывание возникает при завершении при- +ема блока данных, когда уже начат прием следующего блока, то, чтобы не допустить +порчи данных из-за переполнения буфера, необходимо, чтобы в момент прерывания +было свободно для приема как минимум два блока. В противном случае, если к следу- +ющему прерыванию хотя бы еще один блок не освободится, то о переполнении прошивка +узнает только в момент, когда часть буфера уже была повреждена (что может приве- +сти к тому, что будут обработаны испорченные данные). Таким образом, для надежного +приема данных, если в прерывании обнаруживается, что свободно меньше двух блоков, +то это считается переполнением. +По переполнению останавливается прием по интерфейсу SPORT0 и взводится спе- +циальный флаг. После этого обрабатываются все принятые, но необработанные данные +в буфере, после чего в ПК посылается слово о том, что в данном месте было перепол- +нение. +Управление приемом по SPORT0 осуществляется из функций управления потока- +ми: при запуске синхронного ввода-вывода и разрешенных потоках на ввод выпол- +няется функция sport_rx_start(), которая настраивает DMA, сбрасывает указатели +в буфере на прием и разрешает прием по SPORT0. При останове синхронного ввода- +вывода или запрете всех потоков на ввод выполняется останов приема по SPORT0 через +sport_rx_stop(). + + + +# preparations +## установка CrossCode Embedded Studio +- source: https://www.analog.com/en/resources/evaluation-hardware-and-software/embedded-development-software/adswt-cces.html#software-relatedsoftware +- instuctions: https://download.analog.com/tools/CrossCoreEmbeddedStudio/Releases/Release_2.12.1/CrossCoreEmbeddedStudio_Installation_Guide.pdf, local: [[CrossCoreEmbeddedStudio_Installation_Guide.pdf]] + +## альтернатива: установка blfn-elf-gcc +Исходники: git clone https://github.com/deanm1278/blackfin-plus-gnu.git +Сборка: + cd blackfin-plus-gnu/gcc + ./contrib/download_prerequisites + cd ../buildscript/ + ./build.sh +Однако, возникают ошибки компиляции. +ChatGPT: + + Ошибка компиляции, с которой вы столкнулись при сборке кросс-компилятора для Blackfin, связана с изменениями в компиляторе GCC, начиная с версии 8. В частности, GCC стал более строго проверять приведения типов между несовместимыми указателями на функции, что приводит к ошибкам при компиляции устаревших версий `binutils`, используемых в проекте `blackfin-plus-gnu`. +Решение: + добавить + export CFLAGS="-Wno-error=cast-function-type" + export CXXFLAGS="-Wno-error=cast-function-type" + В build.sh + + + +#### Сборка в chroot +Создание chroot в /srv/chroot: +`sudo debootstrap --variant=buildd --arch=amd64 focal /srv/chroot/focal-amd64 http://archive.ubuntu.com/ubuntu + +mounts: +sudo mount --bind /proc /srv/chroot/focal-amd64/proc +sudo mount --bind /sys /srv/chroot/focal-amd64/sys +sudo mount --bind /dev /srv/chroot/focal-amd64/dev +sudo cp /etc/resolv.conf /srv/chroot/focal-amd64/etc/ + +sudo mount --bind /sharedfolder /srv/chroot/shared + +вход в chroot: +sudo chroot /srv/chroot/focal-amd64 /bin/bash + +#### Как войти в chroot после перезагрузки + +1. **Смонтируйте нужные файловые системы**, если они ещё не примонтированы: + sudo mount --bind /proc /srv/chroot/focal-amd64/proc + sudo mount --bind /sys /srv/chroot/focal-amd64/sys + sudo mount --bind /dev /srv/chroot/focal-amd64/dev + sudo cp /etc/resolv.conf /srv/chroot/focal-amd64/etc/ +- Это нужно для работоспособности среды и выхода в интернет. [geeksforgeeks.org+15wiki.ubuntu.com+15stackoverflow.com+15](https://wiki.ubuntu.com/DebootstrapChroot?utm_source=chatgpt.com) + +- **Войдите в chroot**: +## альтернатива: official old toolchain +https://sourceforge.net/projects/adi-toolchain/files/2014R1/2014R1-RC2/x86_64/ +Скачали в Blackfin/toolchain_off +прописали в PATH: +`export PATH=/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin:$PATH` +Работает! diff --git a/синхронное детектирование.md b/синхронное детектирование.md new file mode 100644 index 0000000..add8a41 --- /dev/null +++ b/синхронное детектирование.md @@ -0,0 +1,133 @@ +## модулирование лазерного излучения +### Варьирование тока лазера +Может ли лазер включаться-выключаться с частотой 1 МГц? +Как проверить: +#### Создать меандр с частотой 1 МГц через ЦАП управления током лазера + +PF3, PF4 -- в режиме input, pull-up. Названия INP_0, INP_1 соответственно. Планируется использовать для конфигурации при помощи джамперов (замыкать на GND). +PE0, PE1 -- в режиме UART8, TX и RX соответственно. +TIM8 -- тактируется от APB2 (92 МГц), генерирует update_interrupt каждые 1 мкс. В обработчике -- при помощи Set_LTEC -- включать-выключать лазер. Состояние лазера -- дублировать на выходы OUT10, OUT11 (лазеры 1 и 2 соответственно). +Ток лазера задается только в прерывании TIM8. Стандартная процедура установки тока редуцируется до передачи нового тока блинкеру (TIM10_up_irq). + +Сначала работаем только с лазером 2, в режиме TASK_ENABLE. + +Сделано: +TIM8 генерит прерывания, в прерываниях вызывается Set_LTEC (stm32f7xx_it.c:323, 328). +Однако, установка тока лазера в прерывании работает только если примерно в этот же момент происходит установка тока в основном цикле (main.c:466). Иначе на MOSI не сигнала, на SCK нет тактирования, на CS нет. + +Голубой -- напряжение питания лазера. Так как ток меняется медленно, изменений между отдельными шагами изменения тока нет. +Желтый -- MOSI +Синий -- прерывания. Set_LTEC должен отрабатывать на каждом фронте (и рост и спад) +Фиолетовый -- синхронизация. +![[RigolDS0.png]] + + +То же, но: +- Желтый канал не подключен +- Синий -- уровень меняется при вызове Set_LTEC (изменение состояния пина в начале функции) +![[RigolDS1.png]] +Проблема была в приведении типов из task.task_type в первый аргумент Set_LTEC. + +Синий -- OUT_11 +Голубой -- напряжение на лазере 2. +![[RigolDS2.png]] + + +#### Подать меандр на вход ОУ управления током в обход ЦАП +Можно подать сигнал от 0 до 2.5 В на вход DA14A или DA27A. Наиболее удобно -- на дальние от ЦАП стороны резисторов R60 или R102 соответственно (сопротивление 7.5 кОм). Подавать относительно GNDA. +### интерферометр Маха-Цандера +Даташит на модулятор: [[Mach-Zehnder modulator.pdf]] +Фото модулатора: [[Pasted image 20250211154358.png]] +#### Управление модулятором +Выходной сигнал минимален, когда на RF вход (ближе к IN) подается постоянка 4 В, на DC (ближе к OUT) -- 5 В. Или -2 В на RF и -5 на DC. +График зависимости выходной мощности от напряжения (постоянное) +![[Mach-Zander_voltage_plot.html]] + + +На выходе только одна гармоника: + +Мощность гармоник взависимости от входов. Частота RF -- 1 MHz. + +| RF offset, V | RF Vpp, V | DC offset, V | main harmonic, dB | other harmonics, dB | diff, dB | +| ------------ | --------- | ------------ | ----------------- | ------------------- | -------- | +| 0 | 0.2 | -2 | -58 | -100 | -42 | +| 0 | 0.2 | -3.3 | -60 | -100 | -40 | +| 0 | 1 | 2 | -44 | -80 | -36 | +| 0 | 1 | 3.3 | -45 | -80 | -35 | +| 2 | 0.2 | 0 | -66 | -100 | -34 | +| 3.3 | 0.2 | 0 | -64 | -95 | -31 | +| 0 | 1 | -1 | -47 | -78 | -31 | +| 0 | 3.3 | -3.3 | -33 | -64 | -31 | +| 0 | 0.2 | 2 | -60 | -90 | -30 | +| 0 | 1 | 1 | -49 | -77 | -28 | +| 0 | 1 | -3.3 | -50 | -77 | -27 | +| 0 | 0.2 | 0 | -72 | -90 | -18 | +| 0 | 3.3 | 3.3 | -41 | -55 | -14 | +| 0 | 1 | 0 | -65 | -77 | -12 | +| 0 | 3.3 | 0 | -57 | -55 | 2 | +| | | | | | | +Оптимальные параметры для генератора: +- Модуляция: синус 1 МГц. Симметрично относительно 0. +- DC offset = 3.3 V +- Нужно ли фиксировать фазу синуса относительно варьирования тока? -- да + +| RF offset, V | RF Vpp, V | DC offset, V | main harmonic, dB | other harmonics, dB | diff, dB | +| ------------ | --------- | ------------ | ----------------- | ------------------- | -------- | +| 0 | 1 | 3.3 | -45 | -80 | -35 | +##### Реализация: +MCU через PWM создает меандр с частотой 1 МГц. Затем высшие гармоники отфильтровываются, синус усиливается, приводится к амплитуде (Vpp) 1 V, подается на RF вход модулятора. +На DC вход подается постоянное напряжение 3.3 В. +###### Драйвер модулятора +Вход -- меандр. +###### Фильтр +проблема: RC фильтр пропускает основную частоту 1 МГц, подавляет следующие 10 гармоник, но пропускает частоты 20 МГц и выше + + + + +| Фильтр | Результат фильтрования | +| ------------------------------------ | ---------------------- | +| ![[Pasted image 20250307134129.png]] | ![[RigolDS0 1.png]] | +| ![[Pasted image 20250307134310.png]] | ![[RigolDS1 1.png]] | +| ![[Pasted image 20250307134944.png]] | ![[RigolDS2 1.png]] | +| ![[Pasted image 20250307135311.png]] | ![[RigolDS3.png]] | +| ![[Pasted image 20250307135353.png]] | ![[RigolDS5.png]] | +| ![[Pasted image 20250307135409.png]] | ![[RigolDS4.png]] | +Наилучший вариант: + - ![[Pasted image 20250307134944.png]] + - ![[RigolDS9.png]] + - ![[RigolDS8.png]] + - ![[RigolDS7.png]] + - ![[RigolDS6.png]] + + + +С двумя RLC цепями и частичной корректировкой: +![[Pasted image 20250307170056.png]] + +Голубой -- входной сигнал, меандр 1 МГц, амплитуда 3.3 В. +Желый -- выходной сигнал. +Синий -- спектр выходного сигнала. +![[RigolDS0.bmp]] + +![[RigolDS25.png]] +![[RigolDS26.png]] +Видно, что высшие гармоники подавить не удалось. Большая проблема -- проникновение ВЧ компонент меандра в цепь 1.5 В, они создают основную долю помех. + +##### Выходной сигнал + + + + + + + +## драйвер интерферометра Маха-Цандера +Исходная схема 2 версии: +![[Pasted image 20250425151638.png]] +ОУ радиочастотной части -- TPH2501 ([[TPH2501_GBW_120M.pdf]]). + + +В данной схеме возникли проблемы с трансформатором и питающем его ОУ. Не удалось добиться нормальной работы: несмотря на правильные соотношения индуктивностей обмоток, трансформатор работал или на понижение, или сильно портил входной сигнал, просаживая его амплитуду. В итоге был поставлен повышающий DC-DC преобразователь на MT6308 c с модифицированной катушкой индуктивности (добавлена вторая обмотка, выводы который подключены на подсхему с негативным напряжением), питающий подсхему с положительным напряжением (20В). Также из модуля был удален выходной сглаживающий конденсатор: из-за малости нагрузки модуль работал в пульсирующем режиме, что приводило к большой пульсации выходного напряжения.![[photo_2025-04-25_15-40-33.jpg]] + +![[photo_2025-04-25_15-40-35.jpg]]