:root{--white:#ffffff;--surface:#f5f5f5;--green:#36c273;--ink:#333333;--green-soft:#e3f6ec;--line:#e4e4e4;--danger:#c24d36}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink)}.chat-shell,body{background:var(--white)}.chat-shell{max-width:760px;margin:0 auto;height:100dvh;display:flex;flex-direction:column}header.chat{display:flex;align-items:center;gap:.6rem;padding:.8rem 1rem;border-bottom:1px solid var(--line)}header.chat .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--green) 0,#229d5b 100%);color:var(--white);display:grid;place-items:center;font-weight:700;font-size:1.02rem;letter-spacing:-.02em;box-shadow:0 2px 8px rgba(34,157,91,.28)}header.chat h1{font-size:1rem;margin:0;flex:1 1}.project-select select{font:inherit;font-size:.78rem;color:var(--ink);background:var(--white);border:1px solid var(--line);border-radius:8px;padding:.4rem .6rem;cursor:pointer}.project-select select:focus-visible{outline:2px solid var(--green);outline-offset:1px}.project-select select:disabled{opacity:.55;cursor:not-allowed}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.messages{flex:1 1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.bubble{max-width:85%;padding:.65rem .9rem;border-radius:14px;font-size:.9rem;line-height:1.45;white-space:pre-wrap;word-wrap:break-word}.bubble.user{align-self:flex-end;background:var(--green);color:var(--white);border-bottom-right-radius:4px}.bubble.assistant{align-self:flex-start;background:var(--surface);border-bottom-left-radius:4px}.bubble.error{align-self:flex-start;background:#f8ded4;color:var(--danger)}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0 0 .6rem}.markdown ol,.markdown ul{margin:0 0 .6rem;padding-left:1.2rem}.markdown li{margin-bottom:.2rem}.markdown h1,.markdown h2,.markdown h3{font-size:.95rem;margin:.8rem 0 .4rem}.markdown code{padding:.1rem .3rem;border-radius:4px;font-size:.85em;font-family:ui-monospace,SF Mono,Menlo,monospace}.markdown code,.markdown pre{background:rgba(51,51,51,.07)}.markdown pre{padding:.6rem;border-radius:8px;overflow-x:auto}.markdown pre code{background:none;padding:0}.markdown a{color:#1d7a48}.markdown blockquote{margin:0 0 .6rem;padding-left:.7rem;border-left:3px solid var(--green-border,#b9e7cd);color:#666}.markdown table{border-collapse:collapse;font-size:.85em;margin-bottom:.6rem;display:block;overflow-x:auto}.markdown td,.markdown th{border:1px solid var(--line);padding:.3rem .5rem;text-align:left}.markdown th{background:var(--surface)}.options{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:.5rem 0 .2rem}.options+.options{margin-top:.15rem}.options-label{flex-basis:100%;font-size:.78rem;color:#777}.option-chip{padding:.3rem .75rem;border:1px solid var(--line);border-radius:999px;background:var(--white);color:var(--ink);font-size:.8rem;cursor:pointer}.option-chip:hover{border-color:var(--green);background:var(--green-soft);color:#1d7a48;filter:none}.map-card{margin-top:.6rem;border:1px solid var(--green);border-radius:10px;background:var(--green-soft);padding:.6rem .75rem;font-size:.82rem}.map-card-title{font-weight:700;color:#1d7a48;margin-bottom:.35rem}.map-card-fields{display:flex;flex-direction:column;gap:.15rem;margin-bottom:.4rem}.map-card details summary{cursor:pointer;color:#1d7a48}.map-card pre{background:var(--white);border-radius:8px;padding:.5rem;overflow-x:auto;font-size:.72rem}.progress{align-self:flex-start;display:flex;flex-direction:column;gap:.3rem;padding:.2rem .4rem}.progress-step{display:flex;align-items:center;gap:.45rem;font-size:.8rem;color:#777;animation:step-in .18s ease-out}.progress-step.done{color:#9a9a9a}.progress-step .check{color:var(--green);font-size:.75rem;width:8px;text-align:center}@keyframes step-in{0%{opacity:0;transform:translateY(-2px)}}.dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.3}}.empty-state{margin:auto;text-align:center;color:#888;font-size:.9rem;max-width:380px}.empty-state strong{color:var(--ink)}.progress-step .waiting{margin-left:.4rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;opacity:.6}.empty-state-project{margin-top:1rem;font-size:.82rem}.chat-divider{display:flex;align-items:center;gap:.6rem;margin:.25rem 0;color:#888;font-size:.75rem}.chat-divider:after,.chat-divider:before{content:"";flex:1 1;height:1px;background:var(--line)}.chat-divider span{background:var(--green-soft);color:var(--ink);border-radius:999px;padding:.2rem .7rem;white-space:nowrap}form.composer{display:flex;gap:.6rem;padding:.8rem 1rem;border-top:1px solid var(--line)}form.composer input{flex:1 1;padding:.65rem .85rem;border:1px solid var(--line);border-radius:10px;font-size:.9rem;color:var(--ink)}form.composer input:focus{outline:2px solid var(--green);border-color:transparent}button{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1rem;border:1px solid var(--green);border-radius:10px;background:var(--green);color:var(--white);cursor:pointer;font-size:.87rem}button.ghost{background:var(--white);color:var(--ink);border-color:var(--line);font-size:.78rem;padding:.4rem .7rem}button:hover:not(:disabled){filter:brightness(.94)}button:disabled{opacity:.45;cursor:default}