@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.T19VSG_className{font-family:Geist,Geist Fallback;font-style:normal}.T19VSG_variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b0c6b664fd57c2c6-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6e342921ee4dcd9d-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bb852295097cd96-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9eb5a876700c0028-s.1uyisp29ctx0d.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2a04751c893bf294-s.1rgnod-3esatf.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07a39a8a4660cc7c-s.p.0r6juujl39pe6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}._8Li5zG_className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}._8Li5zG_variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
@theme inline{@keyframes accordion-down { from { height: 0; } to { height: var(--radix-accordion-content-height,var(--accordion-panel-height,auto)); } } @keyframes accordion-up { from { height: var(--radix-accordion-content-height,var(--accordion-panel-height,auto)); } to { height: 0; } }}@custom-variant data-open{&:where([data-state="open"]), &:where([data-open]:not([data-open="false"])) { @slot; }}@custom-variant data-closed{&:where([data-state="closed"]), &:where([data-closed]:not([data-closed="false"])) { @slot; }}@custom-variant data-checked{&:where([data-state="checked"]), &:where([data-checked]:not([data-checked="false"])) { @slot; }}@custom-variant data-unchecked{&:where([data-state="unchecked"]), &:where([data-unchecked]:not([data-unchecked="false"])) { @slot; }}@custom-variant data-selected{&:where([data-selected="true"]) { @slot; }}@custom-variant data-disabled{&:where([data-disabled="true"]), &:where([data-disabled]:not([data-disabled="false"])) { @slot; }}@custom-variant data-active{&:where([data-state="active"]), &:where([data-active]:not([data-active="false"])) { @slot; }}@custom-variant data-horizontal{&:where([data-orientation="horizontal"]) { @slot; }}@custom-variant data-vertical{&:where([data-orientation="vertical"]) { @slot; }}@utility no-scrollbar{-ms-overflow-style: none; scrollbar-width: none; &::-webkit-scrollbar { display: none; }}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@theme inline{@keyframes scroll-fade-reveal-t { from { --scroll-fade-t: 0px; } to { --scroll-fade-t: var(--_scroll-fade-size-t,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); } } @keyframes scroll-fade-reveal-b { from { --scroll-fade-b: var(--_scroll-fade-size-b,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); } to { --scroll-fade-b: 0px; } } @keyframes scroll-fade-reveal-s { from { --scroll-fade-s: 0px; } to { --scroll-fade-s: var(--_scroll-fade-size-s,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); } } @keyframes scroll-fade-reveal-e { from { --scroll-fade-e: var(--_scroll-fade-size-e,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); } to { --scroll-fade-e: 0px; } }}@utility scroll-fade{--_scroll-fade-size-t: var(--scroll-fade-t-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --_scroll-fade-size-b: var(--scroll-fade-b-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-block: linear-gradient(to bottom, transparent 0, #000 var(--scroll-fade-t,0px), #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%); -webkit-mask-image: var(--scroll-fade-mask,var(--scroll-fade-block)); mask-image: var(--scroll-fade-mask,var(--scroll-fade-block)); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-t 1ms ease-in-out, scroll-fade-reveal-b 1ms ease-in-out; animation-timeline: scroll(self y), scroll(self y); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)), calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-t: var(--_scroll-fade-size-t); --scroll-fade-b: var(--_scroll-fade-size-b); }}@utility scroll-fade-y{--_scroll-fade-size-t: var(--scroll-fade-t-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --_scroll-fade-size-b: var(--scroll-fade-b-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-block: linear-gradient(to bottom, transparent 0, #000 var(--scroll-fade-t,0px), #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%); -webkit-mask-image: var(--scroll-fade-mask,var(--scroll-fade-block)); mask-image: var(--scroll-fade-mask,var(--scroll-fade-block)); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-t 1ms ease-in-out, scroll-fade-reveal-b 1ms ease-in-out; animation-timeline: scroll(self y), scroll(self y); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)), calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-t: var(--_scroll-fade-size-t); --scroll-fade-b: var(--_scroll-fade-size-b); }}@utility scroll-fade-x{--_scroll-fade-size-s: var(--scroll-fade-s-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --_scroll-fade-size-e: var(--scroll-fade-e-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-inline: linear-gradient(to right, transparent 0, #000 var(--scroll-fade-s,0px), #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); &:where([dir="rtl"], [dir="rtl"] *) { --scroll-fade-inline: linear-gradient(to left, transparent 0, #000 var(--scroll-fade-s,0px), #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); } -webkit-mask-image: var(--scroll-fade-mask,var(--scroll-fade-inline)); mask-image: var(--scroll-fade-mask,var(--scroll-fade-inline)); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-s 1ms ease-in-out, scroll-fade-reveal-e 1ms ease-in-out; animation-timeline: scroll(self inline), scroll(self inline); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)), calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-s: var(--_scroll-fade-size-s); --scroll-fade-e: var(--_scroll-fade-size-e); }}@utility scroll-fade-t{--_scroll-fade-size-t: var(--scroll-fade-t-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to bottom, transparent 0, #000 var(--scroll-fade-t,0px), #000 100%); -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-t 1ms ease-in-out; animation-timeline: scroll(self y); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)); animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-t: var(--_scroll-fade-size-t); }}@utility scroll-fade-b{--_scroll-fade-size-b: var(--scroll-fade-b-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to bottom, #000 0, #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%); -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-b 1ms ease-in-out; animation-timeline: scroll(self y); animation-range: calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-b: var(--_scroll-fade-size-b); }}@utility scroll-fade-l{--_scroll-fade-size-s: var(--scroll-fade-s-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to right, transparent 0, #000 var(--scroll-fade-s,0px), #000 100%); -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-s 1ms ease-in-out; animation-timeline: scroll(self x); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)); animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-s: var(--_scroll-fade-size-s); }}@utility scroll-fade-r{--_scroll-fade-size-e: var(--scroll-fade-e-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to right, #000 0, #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-e 1ms ease-in-out; animation-timeline: scroll(self x); animation-range: calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-e: var(--_scroll-fade-size-e); }}@utility scroll-fade-s{--_scroll-fade-size-s: var(--scroll-fade-s-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to right, transparent 0, #000 var(--scroll-fade-s,0px), #000 100%); &:where([dir="rtl"], [dir="rtl"] *) { --scroll-fade-mask: linear-gradient(to left, transparent 0, #000 var(--scroll-fade-s,0px), #000 100%); } -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-s 1ms ease-in-out; animation-timeline: scroll(self inline); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)); animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-s: var(--_scroll-fade-size-s); }}@utility scroll-fade-e{--_scroll-fade-size-e: var(--scroll-fade-e-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to right, #000 0, #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); &:where([dir="rtl"], [dir="rtl"] *) { --scroll-fade-mask: linear-gradient(to left, #000 0, #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); } -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-e 1ms ease-in-out; animation-timeline: scroll(self inline); animation-range: calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-e: var(--_scroll-fade-size-e); }}@utility scroll-fade-*{--scroll-fade-size: calc(var(--spacing) * --value(integer)); --scroll-fade-size: --value([length], [percentage]);}@utility scroll-fade-t-*{--scroll-fade-t-size: calc(var(--spacing) * --value(integer)); --scroll-fade-t-size: --value([length], [percentage]);}@utility scroll-fade-b-*{--scroll-fade-b-size: calc(var(--spacing) * --value(integer)); --scroll-fade-b-size: --value([length], [percentage]);}@utility scroll-fade-s-*{--scroll-fade-s-size: calc(var(--spacing) * --value(integer)); --scroll-fade-s-size: --value([length], [percentage]);}@utility scroll-fade-e-*{--scroll-fade-e-size: calc(var(--spacing) * --value(integer)); --scroll-fade-e-size: --value([length], [percentage]);}@utility scroll-fade-none{--scroll-fade-mask: none;}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@theme inline{@keyframes tw-shimmer { from { background-position: 100% 0; } to { background-position: 0 0; } }}@utility shimmer{--_spread: var(--shimmer-spread,calc(3ch + 40px)); --_base: currentColor; --_highlight: var(--shimmer-color,oklch(from currentColor l c h / calc(alpha* .2))); background-image: var(--shimmer-image,linear-gradient(calc(90deg + var(--shimmer-angle)), var(--_base) calc(50% - var(--_spread)), color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% - var(--_spread) * .5), var(--_highlight) 50%, color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% + var(--_spread) * .5), var(--_base) calc(50% + var(--_spread)))); background-repeat: no-repeat; background-size: calc(200% + var(--_spread) * 2) 100%; background-position: 0 0; background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: var(--shimmer-text-fill,transparent); animation: tw-shimmer var(--shimmer-duration,2s) linear infinite; @variant dark { --_highlight: var(--shimmer-color,oklch(from currentColor max(.8, calc(l + .4)) c h / calc(alpha + .4))); } &:where([dir="rtl"], [dir="rtl"] *) { animation-direction: reverse; } @media (prefers-reduced-motion: reduce) { animation: none; background-image: none; -webkit-text-fill-color: currentColor; }}@utility shimmer-once{animation-iteration-count: 1;}@utility shimmer-reverse{animation-direction: reverse;}@utility shimmer-none{--shimmer-image: none; --shimmer-text-fill: currentColor;}@utility shimmer-color-*{--shimmer-color: --value(--color, [color]); --shimmer-color: color-mix(in oklch, --value(--color, [color]) calc(--modifier(integer) * 1%), transparent);}@utility shimmer-duration-*{--shimmer-duration: calc(--value(integer) * 1ms);}@utility shimmer-spread-*{--shimmer-spread: calc(var(--spacing) * --value(integer)); --shimmer-spread: --value([length], [percentage]);}@utility shimmer-angle-*{--shimmer-angle: calc(--value(integer) * 1deg);}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}
:root{--bg:#08090c;--surface:#101217;--surface-2:#151820;--line:#272c37;--text:#f5f7fb;--muted:#8992a4;--accent:#9b6cff;--accent-2:#7349d6;--blue:#5d9cff;--green:#54d89b;--amber:#f1b861;--red:#f47777;--radius:12px}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--text);font-family:Arial, var(--font-geist-sans), sans-serif;margin:0}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}.muted{color:var(--muted);margin:5px 0;font-size:14px;line-height:1.55}.eyebrow{color:#a78bfa;letter-spacing:.18em;margin:0 0 9px;font-size:10px;font-weight:700}.brand-mark{color:#fff;background:linear-gradient(135deg,#b07cff,#7349d6);border-radius:12px;place-items:center;width:42px;height:42px;display:grid;box-shadow:0 10px 32px #7449d655}.brand-mark.small{border-radius:8px;width:30px;height:30px}.brand-accent{color:#a984ff}.v2-pill{color:#bb9cff;border:1px solid #7651bd;border-radius:5px;margin-left:5px;padding:2px 5px;font-size:9px}.primary-button,.secondary-button,.tool-button,.text-button,.icon-button,.danger-button{border:0;justify-content:center;align-items:center;gap:8px;transition:all .18s;display:inline-flex}.primary-button{background:var(--accent);color:#fff;border-radius:8px;padding:10px 15px;font-size:13px;font-weight:700}.primary-button:hover{background:#ad87ff;transform:translateY(-1px)}.primary-button.wide{width:100%;padding:12px}.secondary-button,.tool-button{border:1px solid var(--line);color:#d5d9e3;background:0 0;border-radius:8px;padding:9px 13px;font-size:12px}.secondary-button:hover,.tool-button:hover{background:#191727;border-color:#7453bb}.text-button{color:#aa8cff;background:0 0;padding:3px;font-size:12px;font-weight:700}.icon-button{color:#b8bfcc;border:1px solid var(--line);background:0 0;border-radius:8px;width:34px;height:34px}.icon-button:hover{color:#fff;background:#191d27}.login-page,.loading-screen{background:radial-gradient(circle at 50% 0,#281747 0,#08090c 50%);place-items:center;min-height:100vh;display:grid}.loading-screen{color:var(--muted);gap:13px;font-size:13px;display:flex}.login-card{border:1px solid var(--line);background:#101117e8;border-radius:18px;width:min(430px,100% - 34px);padding:42px;box-shadow:0 24px 80px #0008}.login-card h1{letter-spacing:-.04em;margin:22px 0 10px;font-size:32px;line-height:1.08}.login-form{gap:15px;margin-top:28px;display:grid}.login-form label,.properties-content label{color:#aeb6c5;gap:7px;font-size:12px;font-weight:700;display:grid}.login-form input,.properties-content input,.properties-content textarea{border:1px solid var(--line);color:var(--text);background:#090b10;border-radius:8px;outline:none;padding:11px 12px}.login-form input:focus,.properties-content input:focus,.properties-content textarea:focus{border-color:var(--accent)}.error-text{color:#ff9292;margin:0;font-size:12px}.login-foot{color:#687185;align-items:center;gap:5px;margin:24px 0 0;font-size:11px;display:flex}.app-shell{min-height:100vh;display:flex}.sidebar{border-right:1px solid var(--line);background:#0b0d12;flex-direction:column;flex:0 0 238px;width:238px;padding:20px 13px;display:flex}.sidebar-brand{align-items:center;gap:8px;padding:0 9px 24px;font-size:17px;font-weight:800;display:flex}.workspace{border:1px solid var(--line);background:#12151c;border-radius:10px;align-items:center;gap:9px;margin-bottom:16px;padding:11px 9px;display:flex}.workspace>div:nth-child(2){flex:1;min-width:0;display:grid}.workspace strong{white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.workspace span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.avatar{color:#c5a7ff;background:#3b2a65;border-radius:8px;place-items:center;width:26px;height:26px;font-size:11px;font-weight:800;display:grid}.sidebar nav{gap:3px;display:grid}.nav-item{color:#8c95a7;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:11px;width:100%;padding:11px 10px;font-size:12px;display:flex}.nav-item:hover,.nav-item.active{color:#e7dcff;background:#1a1628}.nav-item.active{box-shadow:inset 2px 0 #a77dff}.sidebar-bottom{gap:4px;margin-top:auto;display:grid}.status-card{border-top:1px solid var(--line);color:#acb4c1;margin-top:16px;padding:16px 8px 0;font-size:11px}.status-meta{color:#697284;margin:7px 0 0 14px;font-size:10px;display:block}.status-dot,.online-tag span,.live-tag span{background:var(--green);border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block;box-shadow:0 0 8px #54d89b}.main-area{flex:1;min-width:0}.content-page{max-width:1380px;margin:0 auto;padding:44px 48px}.page-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:32px;display:flex}.page-heading h1{letter-spacing:-.04em;margin:0;font-size:31px}.heading-actions{gap:9px;display:flex}.metric-grid{grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:22px;display:grid}.metric-card,.panel,.bot-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.metric-card{gap:6px;padding:18px;display:grid}.metric-card>span{color:var(--muted);font-size:11px}.metric-card strong{letter-spacing:-.04em;font-size:27px}.metric-card small{color:#697385;font-size:10px}.metric-icon{border-radius:8px;place-items:center;width:31px;height:31px;margin-bottom:3px;display:grid}.metric-icon.blue{color:var(--blue);background:#1b3459}.metric-icon.violet{color:#b38cff;background:#322052}.metric-icon.green{color:var(--green);background:#173d34}.metric-icon.amber{color:var(--amber);background:#45351d}.split-grid{grid-template-columns:1.35fr 1fr;gap:13px;display:grid}.panel{padding:21px}.panel-header{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:15px;display:flex}.panel h2{margin:0 0 4px;font-size:15px}.flow-row{width:100%;color:inherit;text-align:left;background:0 0;border:0;border-top:1px solid #20242d;align-items:center;gap:12px;padding:13px 0;display:flex}.flow-row:hover{background:#151923;border-radius:7px;margin:0 -9px;padding-left:9px;padding-right:9px}.flow-icon{color:#a884ff;background:#2a2140;border-radius:8px;place-items:center;width:31px;height:31px;display:grid}.flow-copy{flex:1;display:grid}.flow-copy strong{font-size:12px}.flow-copy span{color:var(--muted);margin-top:4px;font-size:10px}.live-tag,.draft-tag,.online-tag{letter-spacing:.06em;color:#77e2ae;white-space:nowrap;font-size:9px}.draft-tag{color:#e1b875}.draft-tag span{background:#e1b875}.health-line{color:#aeb5c2;border-bottom:1px solid #20242d;justify-content:space-between;padding:15px 0;font-size:12px;display:flex}.health-line strong{color:#e4e8ef;font-size:11px}.success-text{color:var(--green)!important}.success-icon{color:var(--green)}.health-chart{align-items:end;gap:7px;height:70px;margin:19px 0 10px;display:flex}.health-chart i{height:var(--h,45%);background:linear-gradient(#7d56d7,#31244e);border-radius:4px 4px 0 0;flex:1}.health-chart i:nth-child(2){height:60%}.health-chart i:nth-child(3){height:38%}.health-chart i:nth-child(4){height:72%}.health-chart i:nth-child(5){height:52%}.health-chart i:nth-child(6){height:80%}.health-chart i:nth-child(7){height:62%}.health-chart i:nth-child(8){height:90%}.chart-caption{color:#778092;margin:0;font-size:10px}.bot-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-bottom:22px;display:grid}.bot-card{padding:19px}.bot-card-head{align-items:center;gap:10px;display:flex}.bot-card-head>svg{color:#748094;margin-left:auto}.bot-avatar{color:#75a8ff;background:#263b63;border-radius:10px;place-items:center;width:39px;height:39px;display:grid}.bot-card h2{margin:22px 0 3px;font-size:17px}.bot-card-foot{border-top:1px solid var(--line);color:#7e8797;justify-content:space-between;align-items:center;margin-top:18px;padding-top:13px;font-size:11px;display:flex}.empty-state{color:#8791a4;align-items:center;gap:9px;padding:25px 0;font-size:12px;display:flex}.feature-placeholder{text-align:center;align-content:center;place-items:center;gap:12px;min-height:300px;display:grid}.feature-placeholder>svg{color:#a984ff}.feature-placeholder h2{margin:0;font-size:18px}.feature-placeholder p{max-width:420px}.mobile-header{display:none}.editor-page{background:#08090c;flex-direction:column;min-height:100vh;display:flex}.editor-top{border-bottom:1px solid var(--line);align-items:center;gap:20px;height:66px;padding:0 20px;display:flex}.back-button{color:#929bad;background:0 0;border:0;align-items:center;gap:8px;font-size:12px;display:flex}.editor-title{gap:4px;display:grid}.editor-title strong{font-size:15px}.editor-title span{color:#747d8c;font-size:10px}.editor-top-actions{align-items:center;gap:9px;margin-left:auto;display:flex}.save-state{color:#8893a4;align-items:center;gap:6px;margin-right:9px;font-size:11px;display:flex}.editor-toolbar{border-bottom:1px solid var(--line);background:#0b0d12;justify-content:space-between;align-items:center;height:57px;padding:0 20px;display:flex}.toolbar-group{align-items:center;gap:7px;display:flex}.toolbar-divider{background:var(--line);width:1px;height:22px;margin:0 5px}.editor-workspace{flex:1;grid-template-columns:40px minmax(0,1fr) 255px;min-height:calc(100vh - 123px);display:grid}.actions-rail{border-right:1px solid var(--line);color:#7b8494;flex-direction:column;align-items:center;gap:18px;padding-top:18px;display:flex}.actions-rail span,.properties-label{letter-spacing:.2em;writing-mode:vertical-rl;color:#727b8b;font-size:9px}.canvas-wrap{background:#090b10;position:relative;overflow:auto}.canvas-grid{background-image:radial-gradient(#2a3040 1px,#0000 1px);background-size:24px 24px;min-width:1900px;min-height:1000px;position:relative}.edges-layer{pointer-events:none;position:absolute;inset:0;overflow:visible}.edge-path{fill:none;stroke:#687595;stroke-width:4px;stroke-dasharray:1 10;stroke-linecap:round}.edge-label{fill:#7d8799;font-size:11px}.flow-node{-webkit-user-select:none;user-select:none;touch-action:none;background:#151820;border:1px solid #303644;border-radius:4px;align-items:center;gap:11px;width:210px;height:82px;padding:13px 13px 13px 17px;display:flex;position:absolute;box-shadow:0 12px 24px #0008}.flow-node:hover,.flow-node.selected{border-color:#744ddd;box-shadow:0 0 0 1px #744ddd66,0 15px 35px #000a}.flow-node.connecting{border-color:#57c7ff}.node-accent{background:#4d9bff;border-radius:4px 0 0 4px;width:5px;position:absolute;top:0;bottom:0;left:0}.node-accent.delay{background:#f0b65e}.node-accent.condition{background:#bc7aff}.node-accent.wait_for_response{background:#58d5a3}.node-index{color:#a4adbd;background:#151820;border:1px solid #303644;border-radius:3px;padding:2px 7px;font-size:10px;position:absolute;top:-11px;right:4px}.node-icon{color:#fff;background:#367bd6;border-radius:4px;flex:none;place-items:center;width:25px;height:25px;display:grid}.node-copy{gap:5px;min-width:0;display:grid}.node-copy strong{white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.node-copy span{color:#8790a0;letter-spacing:.05em;font-size:9px}.node-port{background:#0c0e13;border:3px solid #4e9cff;border-radius:4px;width:16px;height:16px;position:absolute;right:-8px}.zoom-controls{border:1px solid var(--line);background:#11141c;align-items:center;display:flex;position:fixed;bottom:18px;left:59px}.zoom-controls span{color:#a5aebb;padding:0 10px;font-size:11px}.zoom-controls .icon-button{border:0;border-radius:0;width:30px}.canvas-toast{color:#d6dce7;background:#222936;border:1px solid #394354;border-radius:8px;align-items:center;gap:12px;padding:10px 12px;font-size:11px;display:flex;position:fixed;bottom:19px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #0008}.canvas-toast button{color:#a9b1c1;background:0 0;border:0}.properties-rail{border-left:1px solid var(--line);background:#0d0f14;display:flex}.properties-label{padding:18px 10px}.properties-content{flex:1;align-content:start;gap:16px;padding:22px 17px;display:grid}.selected-chip{border-bottom:1px solid var(--line);align-items:center;gap:9px;padding-bottom:15px;display:flex}.selected-chip>div:last-child{gap:4px;display:grid}.selected-chip strong{font-size:12px}.selected-chip span{color:#7f8999;font-size:9px}.danger-button{color:#ff9292;background:#321c25;border:1px solid #5b2734;border-radius:7px;justify-content:flex-start;padding:9px 11px;font-size:11px}.hint{color:#778294;gap:5px;font-size:10px;line-height:1.5;display:flex}.properties-empty{text-align:center;color:#7f8999;flex:1;align-content:center;justify-items:center;gap:10px;padding:25px 17px;display:grid}.properties-empty strong{color:#b9c0cc;font-size:12px}.properties-empty span{font-size:10px;line-height:1.5}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:900px){.sidebar{display:none}.mobile-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:58px;padding:0 15px;font-weight:800;display:flex}.content-page{padding:28px 17px}.page-heading{flex-direction:column;align-items:flex-start}.metric-grid{grid-template-columns:repeat(2,1fr)}.split-grid{grid-template-columns:1fr}.editor-top{flex-wrap:wrap;height:auto;min-height:60px;padding:12px}.editor-top-actions{width:100%;margin-left:0}.editor-toolbar{flex-wrap:wrap;gap:10px;height:auto;padding:10px}.editor-workspace{grid-template-columns:1fr;min-height:calc(100vh - 180px)}.actions-rail,.properties-rail{display:none}.zoom-controls{left:12px}.editor-title{margin-right:auto}.editor-top-actions .save-state{margin-left:auto}.canvas-grid{min-height:750px}.login-card{padding:30px 24px}}
