:root{color-scheme:light;--color-bg-gradient:radial-gradient(155% 135% at 50% 4%,#fff 0%,#fff 30%,rgba(239,241,255,.82) 48%,rgba(216,218,255,.88) 64%,rgba(174,180,255,.92) 80%,rgba(125,129,255,.94) 92%,#6366f1 100%);--color-surface:hsla(0,0%,100%,.92);--color-surface-strong:hsla(0,0%,100%,.98);--color-glass:hsla(0,0%,100%,.72);--color-border:rgba(99,102,241,.18);--color-border-strong:rgba(99,102,241,.35);--color-text-primary:#1f2937;--color-text-secondary:#475569;--color-text-muted:#64748b;--color-accent:#6366f1;--color-accent-soft:#818cf8;--color-accent-strong:#4f46e5;--color-danger:#ef4444;--color-button-primary:#6366f1;--color-button-primary-hover:#4f46e5;--color-button-primary-pressed:#4338ca;--color-button-secondary:rgba(99,102,241,.12);--color-button-secondary-hover:rgba(99,102,241,.18);--color-button-secondary-strong:rgba(99,102,241,.24);--color-button-text:#fff;--shadow-surface:0 24px 80px rgba(99,102,241,.18)}*,:after,:before{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--color-bg-gradient);color:var(--color-text-primary);position:relative;min-height:100vh;overflow-x:hidden}body:after,body:before{content:"";position:fixed;pointer-events:none;z-index:-1}body:before{inset:-14% -10% -26%;background:radial-gradient(120% 85% at 6% 94%,rgba(104,79,255,.6) 0,rgba(104,79,255,0) 72%),radial-gradient(120% 85% at 94% 94%,rgba(127,100,255,.58) 0,rgba(127,100,255,0) 72%),radial-gradient(150% 135% at 50% 10%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,0) 58%),conic-gradient(from 210deg at 50% 18%,hsla(0,0%,100%,.5) 0deg,hsla(0,0%,100%,0) 120deg,hsla(0,0%,100%,.45) 210deg,hsla(0,0%,100%,0) 1turn)}body:after{inset:auto -22% -45%;height:78vh;background:radial-gradient(65% 90% at 50% 24%,rgba(108,84,255,.68) 0,rgba(108,84,255,.08) 68%,rgba(108,84,255,0) 100%);filter:blur(140px);opacity:.7}a{color:inherit}code,pre{font-family:JetBrains Mono,Fira Code,monospace}.app-container{height:100vh;padding:32px clamp(16px,4vw,48px);display:flex;flex-direction:column;gap:24px;overflow:hidden}.app-header{padding:20px clamp(16px,3vw,28px) 16px;border-bottom:1px solid var(--color-border);background:var(--color-glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.app-header h1{margin:0 0 6px;font-size:clamp(20px,2.2vw,26px);font-weight:600;color:var(--color-text-primary)}.app-header p{margin:0;color:var(--color-text-muted);font-size:13px;line-height:1.4}.settings-button{border:1px solid var(--color-accent-strong);background:transparent;color:var(--color-accent-strong);border-radius:999px;padding:8px 16px;font-size:13px;cursor:pointer;transition:background .2s ease,border-color .2s ease,transform .2s ease;box-shadow:none;flex-shrink:0}.settings-button:hover{background:rgba(99,102,241,.08);border-color:var(--color-accent);transform:translateY(-1px)}.github-link{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-accent-strong);transition:background .2s ease,border .2s ease,transform .2s ease,color .2s ease}.github-link:hover{background:var(--color-accent);border-color:transparent;transform:translateY(-1px);color:#fff}.github-link svg{width:20px;height:20px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:transparent;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:999;animation:fadeIn .2s ease}.settings-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000;background:var(--color-surface-strong);border-radius:20px;padding:28px 32px;border:1px solid var(--color-border-strong);box-shadow:var(--shadow-surface);max-width:700px;width:calc(100vw - 48px);max-height:calc(100vh - 100px);overflow-y:auto;display:flex;flex-direction:column;gap:20px;animation:modalSlideIn .3s ease}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:4px}.modal-header h2{margin:0;font-size:20px;color:var(--color-text-primary)}.modal-close{background:rgba(99,102,241,.12);border:1px solid rgba(99,102,241,.25);border-radius:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;color:var(--color-accent-strong);padding:0;transition:all .2s ease;flex-shrink:0}.modal-close:hover{background:rgba(99,102,241,.2);border-color:rgba(99,102,241,.35);color:var(--color-accent);transform:scale(1.05)}.modal-footer{margin-top:auto;padding-top:12px;border-top:1px solid var(--color-border);text-align:center;font-size:12px;letter-spacing:.08em;color:var(--color-text-muted)}.modal-footer .build-sha{margin-left:4px;font-weight:600;letter-spacing:normal;color:var(--color-accent-strong)}.modal-footer a.build-sha{text-decoration:none;transition:color .2s ease}.modal-footer a.build-sha:focus,.modal-footer a.build-sha:hover{color:var(--color-accent);text-decoration:underline}@keyframes modalSlideIn{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.modal-error-banner{display:flex;align-items:center;gap:12px;padding:16px 18px;border-radius:14px;background:linear-gradient(135deg,hsla(0,91%,71%,.2),rgba(239,68,68,.18));border:2px solid hsla(0,91%,71%,.35);color:var(--color-danger);font-size:15px;font-weight:500;box-shadow:0 10px 26px hsla(0,91%,71%,.18);animation:errorShake .5s ease-in-out;margin-top:8px}.modal-error-banner .error-icon{font-size:22px;flex-shrink:0;animation:errorIconPulse 1s ease-in-out infinite}@keyframes errorShake{0%,to{transform:translateX(0)}25%{transform:translateX(-6px)}50%{transform:translateX(6px)}75%{transform:translateX(-6px)}}@keyframes errorIconPulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.hint{margin:0;color:var(--color-text-muted);font-size:14px}.settings-form{display:flex;flex-direction:column;gap:20px}.system-prompt-label{display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--color-text-secondary);font-weight:500}.system-prompt-input{width:100%;resize:vertical;border-radius:12px;border:1px solid var(--color-border);padding:12px;background:var(--color-surface-strong);color:var(--color-text-primary);font-size:14px;line-height:1.6;font-family:inherit}.system-prompt-input:focus{outline:none;border-color:rgba(99,102,241,.5);box-shadow:0 0 0 2px rgba(99,102,241,.18)}.settings-grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.settings-grid label{display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--color-text-secondary)}.settings-grid input{padding:10px 12px;border-radius:12px;border:1px solid var(--color-border);background:var(--color-surface-strong);color:var(--color-text-primary);font-size:15px}.error-banner{padding:16px 20px;border-radius:16px;background:linear-gradient(135deg,hsla(0,91%,71%,.18),rgba(239,68,68,.16));border:1.5px solid hsla(0,91%,71%,.35);color:var(--color-danger);font-size:15px;font-weight:500;margin-top:12px;box-shadow:0 14px 36px hsla(0,91%,71%,.2);animation:errorPulse .4s ease-in-out;position:relative;overflow:hidden}.error-banner:before{content:"⚠️";font-size:18px;margin-right:12px;display:inline-block;animation:shake .5s ease-in-out}@keyframes errorPulse{0%{opacity:0;transform:translateY(-10px)}50%{opacity:1;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}.welcome-card{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:48px 32px;gap:24px}.welcome-card h2{margin:0;font-size:clamp(22px,2.5vw,28px);font-weight:600;color:var(--color-text-primary)}.welcome-text{margin:0;color:var(--color-text-secondary);font-size:15px;line-height:1.8;max-width:480px}.welcome-subtitle{margin:0;color:var(--color-text-muted);font-size:13px;line-height:1.4}.demo-button{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;border:1px solid var(--color-accent-strong);border-radius:999px;background:transparent;color:var(--color-accent-strong);font-size:15px;font-weight:600;cursor:pointer;transition:background .2s ease,border-color .2s ease,transform .2s ease;box-shadow:none}.demo-button:hover{transform:translateY(-2px);box-shadow:none;background:rgba(99,102,241,.08);border-color:var(--color-accent)}.demo-icon{font-size:20px;animation:bounce 2s ease-in-out infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.content{display:grid;grid-gap:24px;gap:24px;grid-template-columns:minmax(0,1fr);flex:1 1;min-height:0;overflow:hidden}@media (min-width:1180px){.content{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr)}}.card{background:var(--color-surface);border-radius:24px;border:1px solid var(--color-border);padding:24px clamp(18px,3vw,42px);display:flex;flex-direction:column;gap:20px;box-shadow:var(--shadow-surface);overflow-y:auto;min-height:0}.card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.header-actions{display:flex;align-items:center;gap:12px}.card-header h2{margin:0 0 8px;font-size:20px}.card-header .time{color:var(--color-text-muted);font-size:14px}.primary-link{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:var(--color-button-secondary);border:1px solid rgba(99,102,241,.3);color:var(--color-accent-strong);text-decoration:none;font-size:14px;transition:background .2s ease,transform .2s ease}.primary-link:hover{transform:translateY(-1px);background:var(--color-button-secondary-hover)}.card-grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.info-row{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:16px;background:var(--color-surface-strong);border:1px solid var(--color-border);box-shadow:0 12px 28px rgba(99,102,241,.08)}.info-label{color:var(--color-text-muted);font-size:13px;letter-spacing:.02em}.info-value{color:var(--color-text-primary);font-size:15px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;cursor:pointer;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color .2s ease}.info-value:hover{color:var(--color-accent)}.copy-toast{position:fixed;top:24px;left:50%;transform:translateX(-50%);z-index:10000;gap:12px;padding:16px 28px;background:linear-gradient(135deg,rgba(45,212,191,.9),rgba(59,130,246,.85));border:1px solid rgba(59,130,246,.45);border-radius:12px;box-shadow:0 18px 40px rgba(59,130,246,.28);animation:toastSlideIn .3s cubic-bezier(.34,1.56,.64,1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.copy-toast,.toast-icon{display:flex;align-items:center}.toast-icon{font-size:22px;color:#fff;font-weight:700;justify-content:center;width:28px;height:28px;background:hsla(0,0%,100%,.2);border-radius:50%;flex-shrink:0}.toast-text{color:#fff;font-size:15px;font-weight:500;white-space:nowrap;letter-spacing:.02em}@keyframes toastSlideIn{0%{opacity:0;transform:translateX(-50%) translateY(-20px) scale(.9)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}.sub-card{display:flex;flex-direction:column;gap:12px;padding:18px;border-radius:18px;background:var(--color-surface-strong);border:1px solid var(--color-border);box-shadow:0 16px 34px rgba(99,102,241,.1)}.editable-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.editable-header h3{margin:0;font-size:16px;color:var(--color-text-primary)}.edit-actions{display:flex;gap:8px}.edit-button{border:1px solid rgba(99,102,241,.28);background:var(--color-surface);color:var(--color-text-secondary);border-radius:8px;padding:6px 14px;font-size:13px;cursor:pointer;transition:all .2s ease;white-space:nowrap}.edit-button:hover{background:var(--color-button-secondary);border-color:rgba(99,102,241,.45);color:var(--color-accent-strong);transform:translateY(-1px)}.edit-button.save{background:rgba(45,212,191,.18);border-color:rgba(45,212,191,.4);color:#0f172a}.edit-button.save:hover{background:rgba(45,212,191,.28);border-color:rgba(45,212,191,.5);color:#0f172a}.edit-button.cancel{background:hsla(0,91%,71%,.18);border-color:hsla(0,91%,71%,.32);color:var(--color-danger)}.edit-button.cancel:hover{background:hsla(0,91%,71%,.3);border-color:hsla(0,91%,71%,.5);color:var(--color-danger)}.code-editor{width:100%;min-height:320px;resize:vertical;border-radius:14px;border:1px solid var(--color-border);padding:16px;background:var(--color-surface-strong);color:var(--color-text-primary);font-family:JetBrains Mono,Fira Code,monospace;font-size:13px;line-height:1.6}.code-editor:focus{outline:none;border-color:rgba(99,102,241,.55);box-shadow:0 0 0 2px rgba(99,102,241,.18)}.empty-hint{margin:0;padding:24px;text-align:center;color:var(--color-text-muted);font-size:14px;line-height:1.6;background:var(--color-surface);border-radius:12px;border:1px dashed var(--color-border)}.sub-card h3{font-size:16px}.code-block,.sub-card h3{margin:0;color:var(--color-text-primary)}.code-block{padding:16px;border-radius:14px;background:var(--color-surface-strong);border:1px solid var(--color-border);box-shadow:0 18px 34px rgba(99,102,241,.12);overflow:auto;max-height:320px;font-size:13px;line-height:1.6}.chat-panel{min-height:520px;max-height:100%}.chat-window{flex:1 1;overflow-y:auto;border-radius:18px;padding:18px;background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-surface);min-height:0}.chat-message,.chat-window{display:flex;flex-direction:column;gap:12px}.chat-message{padding:14px 16px;border-radius:14px;background:var(--color-surface-strong);border:1px solid var(--color-border);box-shadow:0 12px 28px rgba(99,102,241,.08)}.chat-message .message-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.message-actions{display:flex;align-items:center;gap:8px}.chat-message.system{opacity:.75;font-style:italic}.role-label{font-size:12px;font-weight:600;flex-shrink:0;text-transform:uppercase;letter-spacing:.12em;min-width:48px}.copy-button,.role-label{color:var(--color-accent-strong)}.copy-button{border:1px solid rgba(99,102,241,.28);background:var(--color-surface);font-size:13px;padding:5px 10px;border-radius:8px;cursor:pointer;transition:all .2s ease;line-height:1.2;white-space:nowrap;font-weight:500}.copy-button:hover{background:var(--color-button-secondary);color:var(--color-accent-strong);transform:translateY(-1px)}.regenerate-button{border:1px solid rgba(129,140,248,.3);background:var(--color-surface);color:var(--color-accent-strong);font-size:13px;padding:5px 10px;border-radius:8px;cursor:pointer;transition:all .2s ease;line-height:1.2;white-space:nowrap;font-weight:500}.regenerate-button:hover{background:var(--color-button-secondary);color:var(--color-accent-strong);transform:translateY(-1px)}.collapse-button{border:1px solid rgba(148,163,184,.25);background:var(--color-surface);color:var(--color-text-secondary);font-size:12px;padding:4px 10px;border-radius:999px;cursor:pointer;transition:background .2s ease,transform .2s ease}.collapse-button:hover{background:rgba(148,163,184,.22);transform:translateY(-1px)}.chat-message.user{border-color:rgba(99,102,241,.35);background:rgba(99,102,241,.12)}.chat-message.assistant{border-color:rgba(45,212,191,.28);background:rgba(45,212,191,.12)}.message-content{font-size:14px;line-height:1.6;color:var(--color-text-primary)}.chat-message.collapsible.collapsed .message-content{max-height:48px;overflow:hidden}.collapsed-preview{margin:0;color:var(--color-text-muted);font-size:13px;line-height:1.6}.chat-form{display:flex;flex-direction:column}.input-wrapper{position:relative;display:flex;align-items:flex-end}.chat-form textarea{flex:1 1;min-height:120px;max-height:240px;resize:none;overflow-y:auto;border-radius:16px;border:1px solid var(--color-border);padding:14px 90px 14px 14px;background:var(--color-surface-strong);color:var(--color-text-primary);font-size:15px;line-height:1.6}.send-button{position:absolute;right:10px;bottom:10px;padding:10px 22px;border-radius:999px;border:1px solid var(--color-accent-strong);background:transparent;color:var(--color-accent-strong);font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease,background .2s ease,border-color .2s ease}.send-button:hover{transform:translateY(-1px);box-shadow:none;background:rgba(99,102,241,.08);border-color:var(--color-accent)}.send-button:disabled{opacity:.65;cursor:not-allowed;transform:none;box-shadow:none}.streaming-indicator{font-size:12px;color:rgba(45,212,191,.9);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.chat-message.streaming{border-color:rgba(45,212,191,.38);background:rgba(45,212,191,.14);animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-content h1,.message-content h2,.message-content h3,.message-content h4,.message-content h5,.message-content h6{margin-top:1em;margin-bottom:.5em;font-weight:600;color:var(--color-text-primary)}.message-content h1{font-size:1.5em}.message-content h2{font-size:1.3em}.message-content h3{font-size:1.1em}.message-content p{margin:.5em 0;line-height:1.7}.message-content p:first-child{margin-top:0}.message-content p:last-child{margin-bottom:0}.message-content ol,.message-content ul{margin:.5em 0;padding-left:2em}.message-content li{margin:.3em 0}.message-content code{background:rgba(99,102,241,.08);border:1px solid rgba(99,102,241,.2);border-radius:6px;padding:2px 6px;font-size:.9em;color:var(--color-accent-strong)}.message-content pre{margin:.8em 0;padding:0;border-radius:12px;background:var(--color-surface-strong);border:1px solid var(--color-border);overflow:hidden}.message-content pre code{display:block;padding:1em;overflow-x:auto;background:transparent;border:none;border-radius:0;font-size:.85em;line-height:1.6;color:var(--color-text-primary)}.message-content blockquote{margin:.8em 0;padding-left:1em;border-left:3px solid rgba(99,102,241,.4);color:var(--color-text-secondary);font-style:italic}.message-content table{width:100%;border-collapse:collapse;margin:.8em 0}.message-content td,.message-content th{border:1px solid rgba(148,163,184,.18);padding:.5em .8em;text-align:left}.message-content th{background:rgba(99,102,241,.12);font-weight:600;color:var(--color-text-primary)}.message-content a{color:var(--color-accent-strong);text-decoration:underline}.message-content a:hover{color:var(--color-accent)}.message-content hr{border:none;border-top:1px solid rgba(148,163,184,.18);margin:1em 0}.reasoning-section{margin-bottom:1em;border-radius:12px;background:rgba(99,102,241,.1);border:1px solid rgba(99,102,241,.28);overflow:hidden}.reasoning-toggle{width:100%;display:flex;align-items:center;gap:8px;padding:10px 14px;background:rgba(99,102,241,.12);border:none;color:var(--color-accent-strong);cursor:pointer;font-size:13px;font-weight:500;transition:background .2s ease}.reasoning-toggle:hover{background:rgba(99,102,241,.18)}.reasoning-icon{font-size:16px;flex-shrink:0}.toggle-arrow{margin-left:auto;font-size:10px;color:var(--color-accent-strong)}.reasoning-content{padding:12px 14px;font-size:13px;line-height:1.6;color:var(--color-text-secondary);animation:fadeIn .3s ease}.reasoning-content p{margin:.4em 0}.reasoning-content p:first-child{margin-top:0}.reasoning-content p:last-child{margin-bottom:0}.reasoning-content code{background:rgba(99,102,241,.08);border-color:rgba(99,102,241,.25);color:var(--color-accent-strong)}