:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;@media (width<=1024px){font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{box-sizing:border-box;flex-direction:column;width:100%;max-width:none;min-height:100svh;margin:0;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px;@media (width<=1024px){margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%;@media (width<=1024px){font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.counter{color:var(--accent);background:var(--accent-bg);border:2px solid #0000;border-radius:5px;margin-bottom:24px;padding:5px 10px;font-size:16px;transition:border-color .3s;&:hover{border-color:var(--accent-border)}&:focus-visible{outline:2px solid var(--accent);outline-offset:2px}}.hero{position:relative;& .base,& .framework,& .vite{margin:0 auto;inset-inline:0}& .base{z-index:0;width:170px;position:relative}& .framework,& .vite{position:absolute}& .framework{z-index:1;height:28px;top:34px;transform:perspective(2000px)rotate(300deg)rotateX(44deg)rotateY(39deg)scale(1.4)}& .vite{z-index:0;width:auto;height:26px;top:107px;transform:perspective(2000px)rotate(300deg)rotateX(40deg)rotateY(39deg)scale(.8)}}#center{flex-direction:column;flex-grow:1;place-content:center;place-items:center;gap:25px;display:flex;@media (width<=1024px){gap:18px;padding:32px 20px 24px}}#next-steps{border-top:1px solid var(--border);text-align:left;display:flex;&>div{flex:1 1 0;padding:32px;@media (width<=1024px){padding:24px 20px}}& .icon{width:22px;height:22px;margin-bottom:16px}@media (width<=1024px){text-align:center;flex-direction:column}}#docs{border-right:1px solid var(--border);@media (width<=1024px){border-right:none;border-bottom:1px solid var(--border)}}#next-steps ul{gap:8px;margin:32px 0 0;padding:0;list-style:none;display:flex;& .logo{height:18px}& a{color:var(--text-h);background:var(--social-bg);border-radius:6px;align-items:center;gap:8px;padding:6px 12px;font-size:16px;text-decoration:none;transition:box-shadow .3s;display:flex;&:hover{box-shadow:var(--shadow)}& .button-icon{width:18px;height:18px}}@media (width<=1024px){flex-wrap:wrap;justify-content:center;margin-top:20px;& li{flex:calc(50% - 8px)}& a{box-sizing:border-box;justify-content:center;width:100%}}}#spacer{border-top:1px solid var(--border);height:88px;@media (width<=1024px){height:48px}}.ticks{width:100%;position:relative;&:before,&:after{content:"";border:5px solid #0000;position:absolute;top:-4.5px}&:before{border-left-color:var(--border);left:0}&:after{border-right-color:var(--border);right:0}}.app-layout{background:var(--bg,#0f1115);min-height:100vh;color:var(--text,#e8eaed);flex-direction:column;display:flex}.app-topnav{border-bottom:1px solid var(--border,#2a2f3a);background:var(--topnav-bg,#161a22);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;padding:12px 20px;display:flex}.app-brand{color:var(--text-h,#f0f2f5);font-size:1.05rem;font-weight:600;text-decoration:none}.app-brand:hover{text-decoration:underline}.app-nav{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.app-nav a{color:var(--accent,#8ab4f8);font-size:.95rem;text-decoration:none}.app-nav a:hover{text-decoration:underline}.app-nav-logout{cursor:pointer;border:1px solid var(--border,#2a2f3a);color:var(--text,#e8eaed);background:0 0;border-radius:6px;margin-left:4px;padding:6px 12px;font-size:.9rem}.app-nav-logout:hover{background:var(--social-bg,#252a35)}.app-content{box-sizing:border-box;flex:1;width:100%;max-width:960px;margin:0 auto;padding:28px 20px 40px}.page-narrow,.page-wide{width:100%}.home-page h1{margin-top:0;font-size:1.75rem}.home-welcome-name{color:var(--accent,#93c5fd);font-weight:500}.home-lead{color:var(--muted,#b8bcc4);font-size:1.05rem;line-height:1.5}.home-section{margin-top:28px}.home-section h2{margin-bottom:12px;font-size:1.15rem}.home-section ul{margin:0;padding-left:1.25rem;line-height:1.6}.home-section a{color:var(--accent,#8ab4f8)}.home-hint{color:var(--muted,#8a9099);margin-top:32px;font-size:.9rem}.projects-page{max-width:720px}.projects-page-header h1{margin-top:0;font-size:1.75rem}.projects-page-lead{color:var(--muted,#b8bcc4);margin:0 0 8px;font-size:1rem;line-height:1.55}.projects-page-section{margin-top:28px}.projects-page-section h2{margin-bottom:14px;font-size:1.15rem}.projects-form{flex-direction:column;gap:16px;display:flex}.projects-field{color:var(--text,#e8eaed);flex-direction:column;gap:6px;font-size:.9rem;display:flex}.projects-field input,.projects-field textarea,.projects-field select{font:inherit;border:1px solid var(--border,#2e3542);background:var(--code-bg,#1a1f28);color:var(--text-h,#f3f4f6);box-sizing:border-box;border-radius:10px;padding:10px 12px;font-size:.95rem}.projects-field textarea{resize:vertical;min-height:72px}.projects-fieldset{border:1px solid var(--border,#2a2f3a);border-radius:10px;margin:0;padding:12px 14px}.projects-fieldset legend{padding:0 6px;font-size:.9rem}.projects-radio-row{flex-wrap:wrap;gap:12px 20px;display:flex}.projects-radio{cursor:pointer;align-items:center;gap:8px;font-size:.9rem;display:flex}.projects-hint{color:var(--muted,#9ca3af);margin:0;font-size:.85rem;line-height:1.45}.projects-hint--warn{color:#fbbf24}.projects-error{color:#f87171;margin:0;font-size:.9rem}.projects-submit{color:#e8eefc;font:inherit;cursor:pointer;background:linear-gradient(145deg,#3d4f8a 0%,#2d3d6e 100%);border:1px solid #8bb4f859;border-radius:10px;align-self:flex-start;padding:10px 20px;font-size:.95rem}.projects-submit:hover:not(:disabled){filter:brightness(1.06)}.projects-submit:disabled{opacity:.55;cursor:not-allowed}.projects-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.projects-card{border:1px solid var(--border,#2a2f3a);background:var(--social-bg,#1a1d24);border-radius:12px;justify-content:space-between;align-items:flex-start;gap:16px;padding:16px 18px;display:flex}.projects-card-title{margin:0 0 8px;font-size:1.05rem}.projects-card-desc{color:var(--muted,#b8bcc4);white-space:pre-wrap;margin:0 0 10px;font-size:.9rem;line-height:1.45}.projects-card-meta{gap:8px;margin:0;font-size:.85rem;display:grid}.projects-card-meta dt{color:var(--muted,#8a9099);margin:0;font-weight:400}.projects-card-meta dd{margin:2px 0 0}.projects-card-meta code{background:var(--code-bg,#1a1f28);border-radius:4px;padding:2px 6px;font-size:.85em}.projects-card-delete{color:#f87171;cursor:pointer;background:0 0;border:1px solid #f8717159;border-radius:8px;flex-shrink:0;padding:8px 12px;font-size:.85rem}.projects-card-delete:hover{background:#f871711a}.login-page{background:var(--bg,#16171d);flex-direction:column;flex:1;width:100%;min-height:100%;display:flex}.login-page-center{box-sizing:border-box;flex:1;justify-content:center;align-items:center;padding:24px 16px;display:flex}.login-page-card{text-align:left;width:100%;max-width:400px}.login-page-title{letter-spacing:-.02em;text-align:center;margin:0 0 8px;font-size:1.75rem}.login-page-subtitle{color:var(--text,#9ca3af);text-align:center;margin:0 0 24px;font-size:.875rem}.login-page-form{flex-direction:column;gap:0;display:flex}.login-page-field{color:var(--text,#9ca3af);margin-bottom:14px;font-size:.875rem;display:block}.login-page-field input{box-sizing:border-box;border:1px solid var(--border,#2e303a);background:var(--code-bg,#1f2028);width:100%;color:var(--text-h,#f3f4f6);font:inherit;border-radius:6px;margin-top:6px;padding:10px 12px;display:block}.login-page-error{color:#dc143c;margin:0 0 12px;font-size:.875rem}.login-page-submit{cursor:pointer;border:1px solid var(--border,#2e303a);background:var(--social-bg,#2f303acc);color:var(--text-h,#f3f4f6);font:inherit;border-radius:6px;margin-top:4px;padding:10px 20px}.login-page-submit:hover:not(:disabled){filter:brightness(1.08)}.login-page-submit:disabled{opacity:.55;cursor:not-allowed}.login-page-footer{text-align:center;color:var(--text,#6b7280);flex-shrink:0;padding:16px 20px 24px;font-size:.8125rem}#root:has(.chat-page){height:100svh;min-height:0;max-height:100svh;overflow:hidden}.app-layout:has(.chat-page){flex:1;min-height:0;overflow:hidden}.app-layout .app-content:has(.chat-page){flex-direction:column;flex:1;max-width:100%;min-height:0;padding:0;display:flex;overflow:hidden}.chat-page{box-sizing:border-box;flex-direction:column;flex:1;width:100%;min-height:0;margin:0 auto;padding:8px 16px 0;display:flex;overflow:hidden}.chat-page--with-sidebar{flex-direction:row;align-items:stretch;gap:0;max-width:100%;padding:0}.chat-sidebar{border-right:1px solid var(--border,#2a2f3a);background:var(--social-bg,#14171d);flex-direction:column;flex-shrink:0;width:min(280px,92vw);min-height:0;display:flex}.chat-sidebar-head{border-bottom:1px solid var(--border,#2a2f3a);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:12px 12px 10px;display:flex}.chat-sidebar-title{color:var(--text-h,#e8eaed);margin:0;font-size:.95rem;font-weight:600}.chat-sidebar-new{color:#e8eefc;cursor:pointer;white-space:nowrap;background:linear-gradient(145deg,#3d4f8a 0%,#2d3d6e 100%);border:1px solid #8bb4f859;border-radius:8px;padding:6px 10px;font-size:.8rem}.chat-sidebar-new:hover{filter:brightness(1.06)}.chat-sidebar-list{flex-direction:column;flex:1;gap:4px;min-height:0;padding:8px 6px 12px;display:flex;overflow-y:auto}.chat-sidebar-placeholder{color:var(--muted,#8a9099);padding:8px 8px 12px;font-size:.8rem;line-height:1.4}.chat-sidebar-item{border-radius:8px;align-items:center;gap:4px;min-width:0;padding:2px 4px;display:flex}.chat-sidebar-item--active{background:#8bb4f81f;outline:1px solid #8bb4f833}.chat-sidebar-pin{width:26px;height:32px;color:var(--muted,#9ca3af);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:0;font-size:.65rem;line-height:1}.chat-sidebar-pin:hover{color:var(--accent,#93c5fd);background:#ffffff0d}.chat-sidebar-pin span{opacity:.35;font-size:.75rem;line-height:1;display:block}.chat-sidebar-pin--on span{opacity:1}.chat-sidebar-row{text-align:left;cursor:pointer;min-width:0;color:var(--text-h,#e8eaed);font:inherit;background:0 0;border:none;border-radius:6px;flex:1;padding:6px 4px;font-size:.85rem;display:block}.chat-sidebar-row:hover{background:#ffffff0a}.chat-sidebar-name{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.chat-sidebar-rename{min-width:0;font:inherit;background:var(--code-bg,#1a1f28);color:var(--text-h,#f3f4f6);border:1px solid #8bb4f873;border-radius:6px;flex:1;padding:5px 6px;font-size:.85rem}.chat-sidebar-rename-btn{width:28px;height:28px;color:var(--muted,#8a9099);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:0;font-size:.85rem;line-height:1}.chat-sidebar-rename-btn:hover{color:var(--accent,#93c5fd);background:#ffffff0f}.chat-sidebar-delete-btn{width:28px;height:28px;color:var(--muted,#8a9099);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:0;font-size:1.25rem;line-height:1}.chat-sidebar-delete-btn:hover{color:#f87171;background:#f871711f}.chat-page-main{box-sizing:border-box;flex-direction:column;flex:1;min-width:0;min-height:0;padding:8px 16px 0;display:flex;overflow:hidden}.chat-page-header{border-bottom:1px solid var(--border,#2a2f3a);flex-shrink:0;justify-content:space-between;align-items:baseline;gap:12px;padding:8px 0 12px;display:flex}.chat-page-title{color:var(--text-h,#f0f2f5);margin:0;font-size:1.35rem;font-weight:600}.chat-page-ws{white-space:nowrap;font-size:.75rem}.chat-page-ws--ok{color:#34d399}.chat-page-ws--wait{color:#fbbf24}.chat-page-ws--off{color:#9ca3af}.chat-thread{scrollbar-gutter:stable;flex-direction:column;flex:1;gap:12px;min-height:0;padding:16px 4px 20px;display:flex;overflow:hidden auto}.chat-thread::-webkit-scrollbar{width:8px}.chat-thread::-webkit-scrollbar-thumb{background:var(--border,#3d4450);border-radius:4px}.chat-empty{text-align:center;color:var(--muted,#8a9099);max-width:280px;margin:auto;padding:24px 8px;font-size:.9rem;line-height:1.45}.chat-row{width:100%;display:flex}.chat-row--user{justify-content:flex-end}.chat-row--assistant{justify-content:flex-start}.chat-bubble{border-radius:14px;flex-direction:column;max-width:min(92%,520px);padding:10px 14px;animation:.22s ease-out chatBubbleIn;display:flex;position:relative}@keyframes chatBubbleIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.chat-bubble-label{text-transform:uppercase;letter-spacing:.04em;opacity:.75;margin-bottom:6px;font-size:.7rem;display:block}.chat-bubble--user{color:#f1f5f9;background:linear-gradient(145deg,#3b4a7a 0%,#2d3a62 100%);border:1px solid #8bb4f840}.chat-bubble--assistant{background:var(--social-bg,#1e232d);border:1px solid var(--border,#2e3542);color:var(--text-h,#e8eaed)}.chat-bubble--assistant .chat-bubble-label{color:var(--accent,#93c5fd)}.chat-bubble-text{white-space:pre-wrap;word-break:break-word;flex:auto;font-size:.95rem;line-height:1.5}.chat-bubble-time{letter-spacing:.02em;opacity:.55;color:inherit;align-self:flex-end;margin-top:8px;font-size:.68rem;line-height:1}.chat-bubble--user .chat-bubble-time{color:#f1f5f9bf}.chat-bubble--assistant .chat-bubble-time{color:var(--muted,#9ca3af)}.chat-bubble--typing{min-width:120px;min-height:48px}.chat-typing{align-items:center;gap:6px;padding:4px 0;display:flex}.chat-typing-dot{background:var(--accent,#8ab4f8);opacity:.35;border-radius:50%;width:8px;height:8px;animation:1.15s ease-in-out infinite chatTypingBounce}.chat-typing-dot:nth-child(2){animation-delay:.18s}.chat-typing-dot:nth-child(3){animation-delay:.36s}@keyframes chatTypingBounce{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}.chat-bubble--streaming{border-color:#8bb4f859;box-shadow:0 0 0 1px #8bb4f814}.chat-caret{vertical-align:-.1em;background:var(--accent,#8ab4f8);width:2px;height:.95em;margin-left:1px;animation:1s step-end infinite chatCaret;display:inline-block}@keyframes chatCaret{50%{opacity:0}}.chat-scroll-anchor{flex-shrink:0;width:100%;height:1px}.chat-error{color:#f87171;flex-shrink:0;padding:8px 4px 0;font-size:.875rem}.chat-composer{border-top:1px solid var(--border,#2a2f3a);background:linear-gradient(to top, var(--bg,#0f1115) 70%, transparent);flex-shrink:0;align-items:flex-end;gap:10px;padding:12px 0 20px;display:flex}.chat-input{resize:none;border:1px solid var(--border,#2e3542);background:var(--code-bg,#1a1f28);min-height:48px;max-height:160px;color:var(--text-h,#f3f4f6);font:inherit;box-sizing:border-box;border-radius:12px;flex:1;padding:12px 14px;font-size:.95rem;line-height:1.45}.chat-input:focus{border-color:#8bb4f88c;outline:none;box-shadow:0 0 0 2px #8bb4f81f}.chat-input:disabled{opacity:.65}.chat-send{color:#e8eefc;cursor:pointer;background:linear-gradient(145deg,#3d4f8a 0%,#2d3d6e 100%);border:1px solid #8bb4f859;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;transition:filter .15s,transform .1s;display:flex}.chat-send:hover:not(:disabled){filter:brightness(1.08)}.chat-send:active:not(:disabled){transform:scale(.97)}.chat-send:disabled{opacity:.45;cursor:not-allowed}
