:root{--canvas: #eef1ee;--canvas-deep: #e4e9e5;--surface: #fbfcfb;--surface-raised: #ffffff;--ink: #1c2420;--ink-muted: #5a6860;--ink-faint: #8a968e;--sage: #5f7a68;--sage-deep: #3f5648;--sage-soft: #d8e4db;--sage-wash: #eaf1ec;--border: #d2dbd5;--danger: #9b3d3d;--danger-wash: #f7eaea;--shadow: 0 12px 40px rgba(28, 36, 32, .08);--radius: 16px;--radius-sm: 10px;--font-display: "Fraunces", "Georgia", serif;--font-ui: "Source Sans 3", "Segoe UI", sans-serif;--ease: cubic-bezier(.22, 1, .36, 1)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-ui);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,#f7faf7 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#e7eee9 0%,transparent 50%),linear-gradient(180deg,var(--canvas) 0%,var(--canvas-deep) 100%);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.app{min-height:100%;display:flex;flex-direction:column;max-width:920px;margin:0 auto;padding:1.25rem 1.25rem 1.5rem}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.header-brand h1{margin:0;font-family:var(--font-display);font-weight:650;font-size:clamp(1.85rem,3vw,2.35rem);letter-spacing:-.02em;line-height:1.1}.header-brand p{margin:.35rem 0 0;color:var(--ink-muted);max-width:36rem;line-height:1.45}.header-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem}.control{display:flex;flex-direction:column;gap:.2rem}.control label{font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}.control select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--surface-raised);border:1px solid var(--border);border-radius:999px;padding:.45rem 2rem .45rem .85rem;background-image:linear-gradient(45deg,transparent 50%,var(--sage) 50%),linear-gradient(135deg,var(--sage) 50%,transparent 50%);background-position:calc(100% - 14px) 55%,calc(100% - 9px) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;min-width:8.5rem}.health{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .75rem;border-radius:999px;border:1px solid var(--border);background:var(--surface-raised);font-size:.85rem;color:var(--ink-muted)}.health-dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--ink-faint)}.health-dot.ok{background:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.health-dot.bad{background:var(--danger);box-shadow:0 0 0 3px var(--danger-wash)}.user-chip{display:inline-flex;align-items:center;gap:.6rem;max-width:14rem}.user-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;color:var(--ink-muted)}button.linkish{border:none;background:transparent;color:var(--sage);font:inherit;font-size:.8rem;cursor:pointer;text-decoration:underline;padding:0}.auth-panel{max-width:28rem;margin:4rem auto;padding:2rem;display:flex;flex-direction:column;gap:1rem}.auth-org{font-size:.9rem;color:var(--ink-muted)}button.primary{align-self:flex-start;border:none;border-radius:999px;padding:.65rem 1.25rem;background:var(--sage);color:#fff;font:inherit;font-weight:600;cursor:pointer}.main{flex:1;display:flex;flex-direction:column;min-height:0}.explore-shell{flex:1;display:flex;flex-direction:column;min-height:min(70vh,720px);overflow:hidden}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2.5rem 1.5rem 1.5rem;animation:rise-in .55s var(--ease) both}.empty-mark{width:3.5rem;height:3.5rem;border-radius:1rem;display:grid;place-items:center;background:var(--sage-wash);color:var(--sage-deep);margin-bottom:1.1rem}.empty h2{margin:0;font-family:var(--font-display);font-size:clamp(1.55rem,2.6vw,1.95rem);font-weight:650;letter-spacing:-.02em}.empty p{margin:.55rem 0 0;max-width:28rem;color:var(--ink-muted);line-height:1.5}.pills{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1.5rem;max-width:40rem}.pill{border:1px solid var(--border);background:var(--surface-raised);color:var(--sage-deep);border-radius:999px;padding:.45rem .85rem;font-size:.9rem;transition:background .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease)}.pill:hover:not(:disabled){background:var(--sage-wash);border-color:var(--sage-soft);transform:translateY(-1px)}.pill:disabled{opacity:.55;cursor:not-allowed}.thread{flex:1;overflow-y:auto;padding:1.25rem 1.25rem .5rem;display:flex;flex-direction:column;gap:1rem;animation:rise-in .45s var(--ease) both}.turn{display:flex;flex-direction:column;gap:.35rem;max-width:85%}.turn.user{align-self:flex-end;align-items:flex-end}.turn.assistant{align-self:flex-start;max-width:min(100%,40rem)}.turn-label{font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}.bubble{padding:.85rem 1rem;border-radius:14px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.turn.user .bubble{background:var(--sage-deep);color:#f5f8f6;border-bottom-right-radius:4px}.assistant-card{width:100%;background:var(--surface-raised);border:1px solid var(--sage-soft);border-radius:14px 14px 14px 4px;overflow:hidden;animation:rise-in .4s var(--ease) both}.result-chart{padding:.85rem 1rem .35rem;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#f4f8f5,#fbfcfb)}.result-chart-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem 1rem;margin-bottom:.35rem}.result-chart-label,.observations-label{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:0}.result-chart-note{font-size:.78rem;color:var(--ink-muted)}.result-chart-canvas{width:100%;height:auto}.observations{padding:.85rem 1rem 1rem}.markdown-body{color:var(--ink);line-height:1.55;font-size:.98rem}.markdown-body>*:first-child{margin-top:0}.markdown-body>*:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3{font-family:var(--font-display);font-weight:650;letter-spacing:-.02em;color:var(--sage-deep);margin:1rem 0 .4rem;line-height:1.25}.markdown-body h1{font-size:1.25rem}.markdown-body h2{font-size:1.12rem}.markdown-body h3{font-size:1.02rem}.markdown-body p{margin:.45rem 0}.markdown-body ul,.markdown-body ol{margin:.4rem 0;padding-left:1.25rem}.markdown-body li{margin:.2rem 0}.markdown-body strong{color:var(--sage-deep);font-weight:700}.markdown-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em;background:var(--sage-wash);padding:.1em .35em;border-radius:4px}.markdown-body pre{overflow-x:auto;background:var(--sage-wash);border-radius:8px;padding:.75rem .9rem;margin:.55rem 0}.markdown-body pre code{background:none;padding:0}.markdown-body table{width:100%;border-collapse:collapse;margin:.55rem 0;font-size:.9rem}.markdown-body th,.markdown-body td{border:1px solid var(--border);padding:.4rem .55rem;text-align:left}.markdown-body th{background:var(--sage-wash)}.query-details{border-top:1px solid var(--border);background:#f7f9f7}.query-details summary{cursor:pointer;list-style:none;padding:.7rem 1rem;font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-muted);-webkit-user-select:none;user-select:none}.query-details summary::-webkit-details-marker{display:none}.query-details summary:before{content:"▸";display:inline-block;margin-right:.45rem;transition:transform .15s var(--ease)}.query-details[open] summary:before{transform:rotate(90deg)}.query-details-body{padding:0 1rem 1rem;display:flex;flex-direction:column;gap:.75rem}.query-block-label{font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.35rem}.query-block pre{margin:0;padding:.75rem .85rem;overflow-x:auto;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;font-size:.78rem;line-height:1.45}.query-block code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink);white-space:pre}.turn.error .bubble{background:var(--danger-wash);border:1px solid #e4bcbc;color:var(--danger)}.progress{align-self:stretch;margin:0 1.25rem .25rem;border:1px solid var(--sage-soft);background:linear-gradient(180deg,#f4f8f5,#eef4f0);border-radius:var(--radius-sm);padding:.75rem .9rem;animation:pulse-border 1.8s ease-in-out infinite}.progress-title{display:flex;align-items:center;gap:.5rem;font-weight:600;color:var(--sage-deep);font-size:.92rem}.progress-spinner{width:.7rem;height:.7rem;border-radius:50%;border:2px solid var(--sage-soft);border-top-color:var(--sage);animation:spin .8s linear infinite}.progress-list{list-style:none;margin:.55rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem;max-height:9rem;overflow-y:auto}.progress-list li{font-size:.85rem;color:var(--ink-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.composer-wrap{padding:.9rem 1rem 1rem;border-top:1px solid var(--border);background:linear-gradient(180deg,rgba(251,252,251,.5),var(--surface))}.composer-row{display:flex;gap:.65rem;align-items:flex-end}.composer-row textarea{flex:1;resize:none;min-height:3rem;max-height:8rem;border:1px solid var(--border);border-radius:12px;padding:.75rem .9rem;background:var(--surface-raised);outline:none;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}.composer-row textarea:focus{border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-soft)}.composer-actions{display:flex;gap:.45rem}.btn{border:none;border-radius:999px;padding:.7rem 1.15rem;font-weight:600;transition:transform .15s var(--ease),opacity .2s var(--ease),background .2s var(--ease)}.btn:active:not(:disabled){transform:scale(.97)}.btn-primary{background:var(--sage-deep);color:#f7faf8}.btn-primary:hover:not(:disabled){background:var(--sage)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--ink-muted)}.btn-ghost:hover:not(:disabled){background:var(--canvas)}.composer-hint{margin:.45rem 0 0;font-size:.8rem;color:var(--ink-faint)}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-border{0%,to{box-shadow:0 0 #5f7a6826}50%{box-shadow:0 0 0 4px #5f7a6814}}@media(max-width:640px){.app{padding:.85rem}.turn{max-width:100%}.composer-row{flex-direction:column;align-items:stretch}.composer-actions{justify-content:flex-end}}
