:root{--color-bg:#0d0d0d;--color-surface:#1a1a2e;--color-surface-alt:#1e1e30;--color-surface-hover:#252540;--color-accent:#2bd67b;--color-accent-hover:#24b86a;--color-accent-muted:#2bd67b26;--color-text-primary:#e8e8e8;--color-text-secondary:#b0b0b0;--color-text-muted:#888;--color-text-on-accent:#0d0d0d;--color-border:#2a2a3a;--color-border-light:#3a3a4a;--color-border-error:#ff4757;--color-error:#ff4757;--color-error-bg:#2d1a1e;--color-success:#2ecc71;--color-success-bg:#1a2d1e;--color-user-bubble:#0a2a3a;--color-assistant-bubble:#1e1e30;--color-input-bg:#151525;--color-input-border:#2a2a3a;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:24px;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Arial,sans-serif}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;overflow:hidden}body{background-color:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}h1,h2,h3{margin:0}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background-color:var(--color-border-light)}.home-container{max-width:600px;padding:var(--spacing-xl);text-align:center;margin:80px auto}.home-title{margin-bottom:var(--spacing-lg);color:var(--color-text-primary);font-size:28px}.home-description{margin-bottom:var(--spacing-xl);color:var(--color-text-secondary)}.home-link{color:var(--color-accent);font-weight:500;text-decoration:none;transition:color .2s}.home-link:hover{color:var(--color-accent-hover);text-decoration:underline}.login-wrapper{min-height:100vh;padding:var(--spacing-xl);justify-content:center;align-items:center;display:flex}.login-container{background-color:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);width:100%;max-width:420px;padding:32px;box-shadow:0 4px 24px #2bd67b0f,0 1px 3px #0000004d}.login-branding{text-align:center;margin-bottom:var(--spacing-xl)}.login-icon-img{object-fit:cover;width:56px;height:56px;margin-bottom:var(--spacing-sm);border-radius:50%;display:none}.login-logo-img{max-width:220px;height:auto;margin-bottom:var(--spacing-md)}.login-app-name{color:var(--color-text-muted);letter-spacing:.5px;justify-content:center;align-items:center;gap:5px;font-size:14px;display:flex}.login-app-name-logo{object-fit:cover;vertical-align:middle;border-radius:50%;width:50px;height:50px}.login-title{margin-bottom:var(--spacing-xl);color:var(--color-text-primary);text-align:center;font-size:24px;font-weight:600}.form-group{margin-bottom:var(--spacing-lg)}.form-label{margin-bottom:var(--spacing-sm);color:var(--color-text-secondary);letter-spacing:.3px;font-size:13px;font-weight:500;display:block}.form-input{width:100%;padding:10px var(--spacing-md);background-color:var(--color-input-bg);color:var(--color-text-primary);border:1px solid var(--color-input-border);border-radius:var(--radius-sm);font-size:14px;font-family:var(--font-family);outline:none;transition:border-color .2s,box-shadow .2s}.form-input::placeholder{color:var(--color-text-muted)}.form-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-muted)}.form-input-error{border-color:var(--color-border-error)!important;box-shadow:0 0 0 3px #ff47571a!important}.field-error{color:var(--color-error);margin-top:var(--spacing-xs);margin-bottom:0;font-size:12px}.form-error{color:var(--color-error);background-color:var(--color-error-bg);border-radius:var(--radius-sm);padding:var(--spacing-sm)var(--spacing-md);margin-bottom:var(--spacing-lg);text-align:center;border:1px solid #ff475733;font-size:13px}.btn-primary{background-color:var(--color-accent);width:100%;color:var(--color-text-on-accent);border-radius:var(--radius-sm);font-size:14px;font-weight:600;font-family:var(--font-family);cursor:pointer;margin-top:var(--spacing-sm);border:none;padding:12px;transition:background-color .2s,box-shadow .2s,transform .15s}.btn-primary:hover:not(:disabled){background-color:var(--color-accent-hover);transform:translateY(-1px);box-shadow:0 4px 12px #2bd67b40}.btn-primary:active:not(:disabled){box-shadow:none;transform:translateY(0)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.login-footer{text-align:center;margin-top:var(--spacing-xl);color:var(--color-text-muted);font-size:12px}.chat-container{flex-direction:column;max-width:700px;height:100vh;margin:0 auto;display:flex}.chat-header{padding:var(--spacing-lg)var(--spacing-xl);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.chat-header-brand{align-items:center;gap:var(--spacing-sm);display:flex}.chat-header-logo{object-fit:cover;border-radius:50%;width:56px;height:56px}.chat-header-isp-logo{object-fit:contain;width:auto;height:32px;margin-right:-4px}.chat-header-title{color:var(--color-text-muted);letter-spacing:.3px;font-size:15px}.chat-title{color:var(--color-text-primary);font-size:20px}.chat-email{color:var(--color-text-muted);font-size:14px}.chat-header-actions{align-items:center;gap:var(--spacing-sm);display:flex}.chat-header-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:6px;transition:color .15s,border-color .15s;display:flex}.chat-header-btn:hover:not(:disabled){color:var(--color-text);border-color:var(--color-text-muted)}.chat-header-btn:disabled{opacity:.4;cursor:not-allowed}.message-list{padding:var(--spacing-lg)var(--spacing-xl);gap:var(--spacing-md);flex-direction:column;flex:1;display:flex;overflow-y:auto}.message-list-empty{color:var(--color-text-muted);text-align:center;margin-top:40px}.message-wrapper{max-width:75%}.message-user{align-self:flex-end}.message-assistant{align-self:flex-start}.message-header{align-items:center;margin-bottom:2px;display:flex}.message-sender{font-size:12px;font-weight:600}.message-sender-user{color:var(--color-accent)}.message-sender-assistant{color:var(--color-text-secondary)}.message-time{color:var(--color-text-muted);margin-top:4px;padding:0 2px;font-size:11px;display:block}.message-time-user{text-align:right}.message-bubble{border-radius:var(--radius-md);word-break:break-word;padding:10px 14px;font-size:14px;line-height:1.5}.message-bubble-user{background-color:var(--color-user-bubble);color:var(--color-text-primary)}.message-bubble-assistant{background-color:var(--color-assistant-bubble);color:var(--color-text-primary)}.message-bubble-assistant .markdown-content{word-wrap:break-word;overflow-wrap:break-word;line-height:1.6}.message-bubble-assistant .markdown-content p{margin:0 0 var(--spacing-sm)0}.message-bubble-assistant .markdown-content p:last-child{margin-bottom:0}.message-bubble-assistant .markdown-content strong{font-weight:700}.message-bubble-assistant .markdown-content em{font-style:italic}.message-bubble-assistant .markdown-content a{color:var(--color-accent);text-decoration:underline}.message-bubble-assistant .markdown-content a:hover{opacity:.85}.message-bubble-assistant .markdown-content ul,.message-bubble-assistant .markdown-content ol{margin:0 0 var(--spacing-sm)0;padding-left:var(--spacing-lg)}.message-bubble-assistant .markdown-content ul:last-child,.message-bubble-assistant .markdown-content ol:last-child{margin-bottom:0}.message-bubble-assistant .markdown-content li{margin-bottom:2px}.message-bubble-assistant .markdown-content code{border-radius:var(--radius-sm);background-color:#ffffff1a;padding:1px 5px;font-family:monospace;font-size:.9em}.message-bubble-assistant .markdown-content pre{padding:var(--spacing-sm);border-radius:var(--radius-sm);margin:0 0 var(--spacing-sm)0;background-color:#0000004d;overflow-x:auto}.message-bubble-assistant .markdown-content pre:last-child{margin-bottom:0}.message-bubble-assistant .markdown-content pre code{background-color:#0000;padding:0;font-size:.85em}.message-bubble-assistant .markdown-content h1,.message-bubble-assistant .markdown-content h2,.message-bubble-assistant .markdown-content h3{margin:0 0 var(--spacing-xs)0;font-weight:600}.message-bubble-assistant .markdown-content hr{margin:var(--spacing-sm)0;border:none;border-top:1px solid #ffffff26}.message-bubble-assistant .markdown-content table{border-collapse:collapse;width:100%;margin:var(--spacing-sm)0;font-size:.9em;display:block;overflow-x:auto}.message-bubble-assistant .markdown-content table:last-child{margin-bottom:0}.message-bubble-assistant .markdown-content thead{background-color:#ffffff14}.message-bubble-assistant .markdown-content th,.message-bubble-assistant .markdown-content td{text-align:left;white-space:nowrap;border:1px solid #ffffff1f;padding:6px 10px}.message-bubble-assistant .markdown-content th{font-weight:600}.message-bubble-assistant .markdown-content tbody tr:hover{background-color:#ffffff0a}.message-image{border-radius:var(--radius-sm);max-width:100%}.message-image-with-text{margin-bottom:var(--spacing-sm)}.message-document{align-items:center;gap:var(--spacing-sm);display:flex}.message-document-with-text{margin-bottom:var(--spacing-sm)}.message-document-icon{font-size:20px}.message-document-link{color:var(--color-accent);text-decoration:underline}.data-preview-card{margin-top:var(--spacing-sm);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.data-preview-header{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm)var(--spacing-md);background-color:var(--color-surface-hover);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);font-size:13px;font-weight:600;display:flex}.data-preview-header-icon{font-size:16px}.data-preview-header-title{letter-spacing:.3px}.extraction-table{border-collapse:collapse;background-color:var(--color-surface);border-radius:var(--radius-sm);width:100%;font-size:13px;overflow:hidden}.data-preview-card .extraction-table{border-radius:0}.extraction-th{text-align:left;border-bottom:1px solid var(--color-border);background-color:var(--color-surface-hover);color:var(--color-text-secondary);padding:6px 10px;font-weight:600}.extraction-field-name{border-bottom:1px solid var(--color-border);color:var(--color-text-muted);padding:5px 10px;font-weight:500}.extraction-field-value{border-bottom:1px solid var(--color-border);padding:4px 8px}.extraction-input{border:1px solid var(--color-border);width:100%;font-size:13px;font-family:var(--font-family);background-color:var(--color-input-bg);color:var(--color-text-primary);border-radius:4px;outline:none;padding:3px 6px}.extraction-input:focus{border-color:var(--color-accent)}.extraction-actions{margin-top:var(--spacing-sm);gap:var(--spacing-sm);display:flex}.data-preview-card .extraction-actions{padding:var(--spacing-sm)var(--spacing-md);margin-top:0}.btn-confirm{border-radius:var(--radius-sm);background-color:var(--color-accent);color:var(--color-text-on-accent);font-size:13px;font-weight:600;font-family:var(--font-family);cursor:pointer;border:none;padding:6px 16px;transition:background-color .2s}.btn-confirm:hover:not(:disabled){background-color:var(--color-accent-hover)}.btn-confirm:disabled{opacity:.6;cursor:not-allowed}.btn-reject{border-radius:var(--radius-sm);border:1px solid var(--color-error);color:var(--color-error);font-size:13px;font-weight:600;font-family:var(--font-family);cursor:pointer;background-color:#0000;padding:6px 16px;transition:background-color .2s,color .2s}.btn-reject:hover:not(:disabled){background-color:var(--color-error);color:var(--color-text-primary)}.btn-reject:disabled{opacity:.6;cursor:not-allowed}.extraction-status{margin-top:6px;font-size:12px;font-weight:600}.data-preview-card .extraction-status{padding:var(--spacing-sm)var(--spacing-md);margin-top:0}.extraction-status-confirmed{color:var(--color-success)}.extraction-status-rejected{color:var(--color-error)}.extraction-error{margin-top:var(--spacing-sm);background-color:var(--color-error-bg);border-radius:var(--radius-sm);color:var(--color-error);align-items:center;gap:var(--spacing-sm);padding:8px 12px;font-size:13px;display:flex}.extraction-error-text{flex:1}.btn-retry{background-color:var(--color-accent);color:var(--color-text-on-accent);font-size:12px;font-weight:600;font-family:var(--font-family);cursor:pointer;white-space:nowrap;border:none;border-radius:4px;padding:4px 12px}.btn-retry:disabled{opacity:.6;cursor:not-allowed}.file-preview{padding:var(--spacing-sm)var(--spacing-xl);border-top:1px solid var(--color-border);align-items:center;gap:var(--spacing-md);background-color:var(--color-surface);display:flex}.file-preview-thumb{object-fit:cover;border-radius:var(--radius-sm);width:40px;height:40px}.file-preview-icon{font-size:24px}.file-preview-info{flex:1;min-width:0}.file-preview-name{text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-primary);font-size:13px;font-weight:500;overflow:hidden}.file-preview-size{color:var(--color-text-muted);font-size:11px}.file-preview-remove{cursor:pointer;color:var(--color-text-muted);padding:var(--spacing-xs);background:0 0;border:none;font-size:18px;transition:color .2s}.file-preview-remove:hover{color:var(--color-text-primary)}.upload-progress{padding:0 var(--spacing-xl)}.upload-progress-track{background-color:var(--color-border);border-radius:2px;height:4px;overflow:hidden}.upload-progress-fill{background-color:var(--color-accent);height:100%;transition:width .2s}.upload-progress-text{color:var(--color-text-muted);text-align:center;margin-top:2px;font-size:11px}.file-error{padding:var(--spacing-xs)var(--spacing-xl);color:var(--color-error);font-size:13px}.chat-input-area{padding:var(--spacing-md)var(--spacing-xl);border-top:1px solid var(--color-border);align-items:flex-end;gap:var(--spacing-sm);display:flex}.btn-attach{cursor:pointer;width:40px;height:40px;color:var(--color-accent);background-color:#0000;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:opacity .2s,color .2s;display:flex}.btn-attach:hover:not(:disabled){opacity:.75;color:var(--color-accent)}.btn-attach:disabled{opacity:.5;cursor:not-allowed}.chat-input{border-radius:var(--radius-lg);border:1px solid var(--color-input-border);font-size:14px;font-family:var(--font-family);background-color:var(--color-input-bg);color:var(--color-text-primary);resize:none;scrollbar-width:thin;outline:none;flex:1;min-height:40px;max-height:120px;padding:10px 18px;line-height:1.4;transition:border-color .2s;overflow-y:auto}.chat-input::-webkit-scrollbar{width:6px}.chat-input::-webkit-scrollbar-track{background:0 0}.chat-input::-webkit-scrollbar-thumb{background:0 0;border-radius:3px}.chat-input:hover::-webkit-scrollbar-thumb{background:var(--color-text-muted)}.chat-input:focus::-webkit-scrollbar-thumb{background:var(--color-text-muted)}.chat-input::placeholder{color:var(--color-text-muted)}.chat-input:focus{border-color:var(--color-accent)}.chat-input-error{border-color:var(--color-border-error)!important}.btn-send{background-color:var(--color-accent);width:40px;height:40px;color:var(--color-text-on-accent);font-size:18px;font-weight:600;font-family:var(--font-family);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background-color .2s,transform .1s;display:flex}.btn-send:hover:not(:disabled){background-color:var(--color-accent-hover);transform:scale(1.05)}.btn-send:disabled{opacity:.4;cursor:not-allowed}.file-input-hidden{display:none}.chat-input-error-text{color:var(--color-error);margin:var(--spacing-xs)0 0 0;padding:0 var(--spacing-lg);font-size:12px}.typing-indicator{padding:var(--spacing-xs)0;align-items:center;gap:4px;display:flex}.typing-dot{background-color:var(--color-accent);opacity:.4;border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite typingPulse}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typingPulse{0%,80%,to{opacity:.4;transform:scale(1)}40%{opacity:1;transform:scale(1.2)}}.streaming-cursor:after{content:"|";color:var(--color-accent);font-weight:700;animation:.7s step-end infinite blinkCursor;display:inline}@keyframes blinkCursor{0%,to{opacity:1}50%{opacity:0}}.status-message{align-items:center;gap:var(--spacing-xs);color:var(--color-text-muted);padding:var(--spacing-xs)var(--spacing-sm);margin:var(--spacing-xs)0;align-self:flex-start;font-size:13px;font-style:italic;display:flex}.status-spinner{border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.8s linear infinite statusSpin}@keyframes statusSpin{to{transform:rotate(360deg)}}.stream-error{color:var(--color-error);padding:var(--spacing-xs)0;font-size:14px}
