*,:before,:after{box-sizing:border-box}:root{--bg:#0f1117;--surface:#1a1d27;--surface2:#22263a;--border:#2e3347;--text:#e2e8f0;--text-muted:#7a8299;--accent:#6366f1;--accent-hover:#818cf8;--danger:#ef4444;--user-bubble:#6366f1;--assistant-bubble:#1e2236;--font:system-ui, "Segoe UI", Roboto, sans-serif}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.6}#root{flex-direction:column;height:100dvh;display:flex}button{cursor:pointer;font-family:var(--font)}textarea{font-family:var(--font)}.upload-page{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.upload-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:20px;width:100%;max-width:540px;padding:40px;display:flex}.logo{align-items:center;gap:10px;display:flex}.logo-icon{font-size:26px;line-height:1}.logo-text{color:var(--text);font-size:18px;font-weight:600}.subtitle{color:var(--text-muted);margin:-8px 0 0;font-size:14px}.dropzone{border:2px dashed var(--border);text-align:center;cursor:pointer;background:var(--surface2);border-radius:10px;padding:32px 20px;transition:border-color .2s,background .2s}.dropzone:hover,.dropzone.active{border-color:var(--accent);background:#6366f114}.dropzone-empty{flex-direction:column;align-items:center;gap:6px;display:flex}.dropzone-icon{font-size:32px}.dropzone-label{color:var(--text);margin:0;font-size:15px;font-weight:500}.dropzone-hint{color:var(--text-muted);margin:0;font-size:13px}.dropzone-filled .dropzone-label{color:var(--text);font-size:14px}.dropzone-add{color:var(--text-muted);font-weight:400}.file-list{flex-direction:column;gap:6px;margin:-8px 0 0;padding:0;list-style:none;display:flex}.file-item{background:var(--surface2);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.file-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.file-size{color:var(--text-muted);flex-shrink:0}.file-remove{color:var(--text-muted);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:14px;line-height:1;transition:color .15s}.file-remove:hover{color:var(--danger)}.address-input{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;width:100%;padding:10px 14px;font-size:14px;transition:border-color .2s}.address-input::placeholder{color:var(--text-muted)}.address-input:focus{border-color:var(--accent)}.analyze-btn{background:var(--accent);color:#fff;border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:12px;font-size:15px;font-weight:600;transition:background .2s,opacity .2s;display:flex}.analyze-btn:hover:not(:disabled){background:var(--accent-hover)}.analyze-btn:disabled{opacity:.45;cursor:not-allowed}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{color:#fca5a5;background:#ef44441f;border:1px solid #ef444459;border-radius:8px;padding:10px 14px;font-size:13px}.chat-page{flex-direction:column;flex:1;min-height:0;display:flex}.chat-header{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:12px;padding:12px 20px;display:flex}.back-btn{border:1px solid var(--border);color:var(--text-muted);background:0 0;border-radius:6px;padding:6px 12px;font-size:13px;transition:color .15s,border-color .15s}.back-btn:hover{color:var(--text);border-color:var(--text-muted)}.chat-header-center{align-items:center;gap:8px;display:flex;overflow:hidden}.header-files{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.messages{flex-direction:column;flex:1;gap:16px;width:100%;max-width:800px;margin:0 auto;padding:24px 20px;display:flex;overflow-y:auto}.message{display:flex}.message-user{justify-content:flex-end}.message-assistant{justify-content:flex-start}.message-bubble{border-radius:12px;max-width:78%;padding:12px 16px;font-size:14px;line-height:1.65}.message-user .message-bubble{background:var(--user-bubble);color:#fff;border-bottom-right-radius:4px}.message-assistant .message-bubble{background:var(--assistant-bubble);border:1px solid var(--border);border-bottom-left-radius:4px}.message-assistant .message-bubble p{margin:0 0 10px}.message-assistant .message-bubble p:last-child{margin-bottom:0}.message-assistant .message-bubble h1,.message-assistant .message-bubble h2,.message-assistant .message-bubble h3{color:var(--text);margin:14px 0 6px;font-size:15px;font-weight:600}.message-assistant .message-bubble ul,.message-assistant .message-bubble ol{margin:6px 0;padding-left:20px}.message-assistant .message-bubble li{margin-bottom:4px}.message-assistant .message-bubble code{background:#ffffff0f;border-radius:4px;padding:1px 5px;font-size:13px}.message-assistant .message-bubble pre code{padding:10px;display:block;overflow-x:auto}.analysing-state{color:#888;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;padding:60px 20px;display:flex}.analysing-spinner{border:3px solid #3b4fa826;border-top-color:#3b4fa8;border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}.analysing-text{letter-spacing:.03em;color:#999;font-size:14px}.stream-cursor{background:var(--text-muted);vertical-align:text-bottom;width:2px;height:1em;margin-left:2px;animation:.8s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.message-bubble.typing{align-items:center;gap:5px;padding:14px 18px;display:flex}.message-bubble.typing span{background:var(--text-muted);border-radius:50%;width:7px;height:7px;animation:1.2s infinite bounce;display:inline-block}.message-bubble.typing span:nth-child(2){animation-delay:.2s}.message-bubble.typing span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-5px)}}.legal-disclaimer{color:#888;text-align:center;border-top:1px solid var(--border);background:var(--surface);padding:8px 20px;font-size:11px}.chat-input-row{border-top:1px solid var(--border);background:var(--surface);align-self:stretch;gap:10px;width:100%;max-width:800px;margin:0 auto;padding:16px 20px;display:flex}.chat-input{background:var(--surface2);border:1px solid var(--border);color:var(--text);resize:none;border-radius:10px;outline:none;flex:1;max-height:160px;padding:10px 14px;font-size:14px;line-height:1.5;transition:border-color .2s;overflow-y:auto}.chat-input::placeholder{color:var(--text-muted)}.chat-input:focus{border-color:var(--accent)}.send-btn{background:var(--accent);color:#fff;border:none;border-radius:10px;flex-shrink:0;justify-content:center;align-self:flex-end;align-items:center;width:42px;height:42px;font-size:18px;transition:background .2s,opacity .2s;display:flex}.send-btn:hover:not(:disabled){background:var(--accent-hover)}.send-btn:disabled{opacity:.4;cursor:not-allowed}.stop-btn{background:var(--surface2);color:var(--text);border:1px solid var(--border);border-radius:10px;flex-shrink:0;justify-content:center;align-self:flex-end;align-items:center;width:42px;height:42px;font-size:14px;transition:background .15s,border-color .15s;display:flex}.stop-btn:hover{border-color:var(--danger);color:#fca5a5;background:#ef444426}.url-input{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;width:100%;padding:10px 14px;font-size:14px;transition:border-color .2s}.url-input::placeholder{color:var(--text-muted)}.url-input:focus{border-color:var(--accent)}.lot-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:16px;display:flex}.lot-title{color:var(--text);font-size:15px;font-weight:600;line-height:1.4}.lot-tags{flex-wrap:wrap;gap:6px;display:flex}.lot-tag{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);border-radius:20px;padding:3px 10px;font-size:12px;font-weight:500}.lot-tag-price{color:var(--accent-hover);background:#6366f126;border-color:#6366f166}.lot-desc{color:var(--text-muted);-webkit-line-clamp:4;-webkit-box-orient:vertical;margin:0;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.lot-meta{color:var(--text-muted);font-size:13px}.fetch-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:12px;padding:16px;display:flex}.fetch-card-header{color:var(--text);justify-content:space-between;align-items:center;font-size:14px;display:flex}.ext-status{font-size:12px;font-weight:500}.ext-ok{color:#4ade80}.ext-missing{color:var(--text-muted)}.ext-retry{color:var(--text-muted);text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;font-weight:500;text-decoration:underline;transition:color .15s}.ext-retry:hover:not(:disabled){color:var(--text)}.ext-retry:disabled{cursor:default;opacity:.5}.cost-badge{color:#4ade80;white-space:nowrap;cursor:default;background:#4ade801a;border:1px solid #4ade804d;border-radius:20px;flex-shrink:0;margin-left:auto;padding:3px 10px;font-size:12px;font-weight:600}.cost-badge-pending{color:var(--text-muted);background:var(--surface2);border-color:var(--border);font-weight:400}.lot-main-image{object-fit:cover;border-radius:6px;width:100%;height:200px;display:block}.fetch-btn{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px 12px;font-size:14px;font-weight:500;transition:background .2s,border-color .2s,opacity .2s;display:flex}.fetch-btn:hover:not(:disabled){background:var(--surface2);border-color:var(--text-muted)}.fetch-btn:disabled{opacity:.45;cursor:not-allowed}.lr-summary{background:var(--surface2);border:1px solid var(--border);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.lr-postcode{color:var(--text);font-weight:600}.lr-stat{color:var(--text-muted)}.lr-stat:before{content:"·";margin-right:8px}.lr-link{color:var(--accent);margin-left:auto;font-size:12px;text-decoration:none}.lr-link:hover{text-decoration:underline}.pdf-btn{background:var(--surface2);color:var(--text);border:1px solid var(--border);border-radius:6px;flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;font-size:13px;transition:background .15s,border-color .15s,opacity .15s;display:flex}.pdf-btn:hover:not(:disabled){background:var(--surface);border-color:var(--text-muted)}.pdf-btn:disabled{opacity:.4;cursor:not-allowed}.spinner-dark{border:2px solid #9696964d;border-top-color:var(--text-muted);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.7s linear infinite spin}.session-list-page{flex:1;justify-content:center;align-items:flex-start;padding:32px 24px;display:flex;overflow-y:auto}.session-list-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:24px;width:100%;max-width:720px;padding:32px;display:flex}.session-list-header{justify-content:space-between;align-items:center;display:flex}.session-list-empty{color:var(--text-muted);text-align:center;padding:24px 0;font-size:14px}.session-list{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.session-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.session-item:last-child{border-bottom:none}.session-item-main{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.session-item-address{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.session-item-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.session-item-date{margin-left:auto}.session-item-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.resume-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:opacity .15s}.resume-btn:hover:not(:disabled){opacity:.85}.resume-btn:disabled{opacity:.4;cursor:not-allowed}.delete-btn{color:var(--text-muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;padding:5px 9px;font-size:13px;transition:color .15s,border-color .15s}.delete-btn:hover:not(:disabled){color:#ef4444;border-color:#ef4444}.delete-btn:disabled{opacity:.4;cursor:not-allowed}.status-badge{white-space:nowrap;border-radius:20px;padding:2px 8px;font-size:11px;font-weight:500}.badge-success{color:#4ade80;background:#4ade801a;border:1px solid #4ade804d}.badge-warning{color:#f59e0b;background:#f59e0b1a;border:1px solid #f59e0b4d}.badge-error{color:#ef4444;background:#ef44441a;border:1px solid #ef44444d}.badge-processing{color:#60a5fa;background:#60a5fa1a;border:1px solid #60a5fa4d}.badge-neutral{color:var(--text-muted);background:var(--surface2);border:1px solid var(--border)}a.cite{color:var(--accent,#7c9ef8);vertical-align:super;white-space:nowrap;border-radius:3px;padding:0 1px;font-size:.82em;font-weight:600;text-decoration:none;transition:background .15s,color .15s}a.cite:hover{color:var(--accent,#7c9ef8);background:#7c9ef826;text-decoration:underline}a.source-doc-link{color:var(--accent,#7c9ef8);opacity:.7;margin-left:4px;font-size:.82em;text-decoration:none;transition:opacity .15s}a.source-doc-link:hover{opacity:1;text-decoration:underline}
