@import "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,400;0,14..32,450;0,14..32,500;0,14..32,600;0,14..32,700;1,14..32,400&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f7f6f3;--surface:#fff;--surface-2:#f4f2ee;--surface-3:#edeae3;--border:#e6e1da;--border-strong:#d0c9bf;--text:#1c1917;--text-2:#44403c;--text-muted:#78716c;--text-xmuted:#a8a29e;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-light:#eff6ff;--accent-border:#bfdbfe;--green:#15803d;--green-bg:#f0fdf4;--red:#dc2626;--red-bg:#fef2f2;--amber:#b45309;--amber-bg:#fffbeb;--r-sm:6px;--r:10px;--r-lg:14px;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow:0 2px 8px #00000014, 0 1px 3px #0000000d;--shadow-lg:0 8px 24px #0000001a, 0 2px 8px #0000000f;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ease:.15s cubic-bezier(.4, 0, .2, 1)}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11", "ss01";font-size:13px;line-height:1.55}button{cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none}input,textarea{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}.app-shell{background:var(--bg);flex-direction:column;height:100%;display:flex}.app-header{background:var(--surface);border-bottom:1px solid var(--border);height:52px;box-shadow:var(--shadow-xs);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 20px;display:flex}.app-header-left{align-items:center;gap:16px;display:flex}.app-logo{color:var(--accent);align-items:center;gap:8px;display:flex}.app-logo-text{color:var(--text);letter-spacing:-.3px;font-size:15px;font-weight:700}.app-tagline{color:var(--text-muted);border-left:1px solid var(--border);padding-left:16px;font-size:12px}.app-chip{color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);letter-spacing:.2px;border-radius:20px;padding:3px 10px;font-size:11px;font-weight:500}.app-main{flex:1;gap:0;min-height:0;display:flex}.quick-picks{border-top:1px solid var(--border);background:var(--surface-2);flex-wrap:wrap;gap:6px;padding:8px 14px;display:flex}.quick-pick-chip{color:var(--text-2);background:var(--surface);border:1.5px solid var(--border);cursor:pointer;transition:border-color var(--ease), background var(--ease), color var(--ease);white-space:nowrap;border-radius:20px;padding:5px 11px;font-size:12px;font-weight:500}.quick-pick-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}.quick-pick-chip--history{color:var(--text-muted);border-style:dashed}.quick-pick-chip--history:hover{border-style:dashed;border-color:var(--accent);color:var(--accent)}.progress-in-chat{background:var(--accent-light);border:1.5px solid var(--accent-border);border-radius:var(--r-lg);flex-direction:column;gap:8px;margin:4px 0;padding:12px 16px;animation:.2s both fadeUp;display:flex}.progress-in-chat-top{align-items:center;gap:8px;display:flex}.progress-in-chat-label{color:var(--accent);flex:1;font-size:13px;font-weight:600}.progress-in-chat-timer{color:var(--accent);font-variant-numeric:tabular-nums;opacity:.7;text-align:right;min-width:28px;font-size:12px;font-weight:600}.progress-in-chat-bar{background:var(--accent-border);border-radius:6px;height:6px;overflow:hidden}.progress-in-chat-fill{background:var(--accent);border-radius:6px;height:100%;transition:width .35s}.solve-progress{border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--accent-light);flex-direction:column;gap:8px;padding:12px 14px 10px;display:flex}.solve-progress-top{align-items:center;gap:8px;display:flex}.solve-progress-label{color:var(--accent);flex:1;font-size:12.5px;font-weight:500}.solve-progress-timer{color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right;min-width:24px;font-size:12px;font-weight:600}.solve-progress-bar{background:var(--accent-border);border-radius:8px;height:8px;overflow:hidden}.solve-progress-fill{background:var(--accent);border-radius:8px;height:100%;transition:width .4s}.btn-stop{color:var(--red);background:var(--red-bg);border-radius:var(--r-sm);transition:background var(--ease), border-color var(--ease);border:1px solid #fecaca;flex-shrink:0;align-items:center;gap:4px;padding:4px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.btn-stop:hover{background:#fee2e2;border-color:#fca5a5}.conv-panel{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:380px;display:flex}.conv-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;height:52px;padding:0 16px;display:flex}.conv-logo{color:var(--text);align-items:center;gap:7px;font-size:13px;font-weight:600;display:flex}.conv-logo svg{color:var(--accent)}.btn-new-chat{color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);transition:color var(--ease), border-color var(--ease), background var(--ease);align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:500;display:inline-flex}.btn-new-chat:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface-3)}.conv-badge{color:var(--accent);background:var(--accent-light);border:1px solid var(--accent-border);letter-spacing:.4px;text-transform:uppercase;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:600}.conv-messages{scroll-behavior:smooth;flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.conv-messages::-webkit-scrollbar{width:4px}.conv-messages::-webkit-scrollbar-track{background:0 0}.conv-messages::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}.bubble-row{align-items:flex-end;gap:8px;animation:.2s both fadeUp;display:flex}.bubble-row--user{flex-direction:row-reverse}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.avatar{background:var(--accent-light);border:1px solid var(--accent-border);width:28px;height:28px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.bubble{border-radius:var(--r-lg);max-width:82%;box-shadow:var(--shadow-xs);padding:10px 13px;font-size:13px;line-height:1.55}.bubble--assistant{background:var(--surface-2);border:1px solid var(--border);border-bottom-left-radius:var(--r-sm);color:var(--text)}.bubble--user{background:var(--accent);color:#fff;border-bottom-right-radius:var(--r-sm)}.bubble--typing{align-items:center;gap:4px;padding:12px 16px;display:flex}.bubble--typing span{background:var(--text-muted);border-radius:50%;width:6px;height:6px;animation:1.2s infinite blink}.bubble--typing span:nth-child(2){animation-delay:.2s}.bubble--typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.3;transform:scale(.85)}30%{opacity:1;transform:scale(1)}}.msg-line{display:inline}.msg-bullet{padding-left:4px;display:block}.bubble--assistant strong{color:var(--text);font-weight:600}.bubble--assistant em{color:var(--text-muted);font-style:italic}.bubble--stale{opacity:.55;font-style:italic}.conv-input-area{border-top:1px solid var(--border);background:var(--surface);flex-direction:column;flex-shrink:0;gap:8px;padding:12px 14px;display:flex}.conv-actions{gap:8px;display:flex}.btn-solve{background:var(--accent);color:#fff;border-radius:var(--r-sm);transition:background var(--ease);align-items:center;gap:6px;padding:7px 14px;font-size:12.5px;font-weight:600;display:inline-flex;box-shadow:0 1px 3px #2563eb59}.btn-solve:hover:not(:disabled){background:var(--accent-hover)}.btn-solve:disabled{opacity:.55;cursor:not-allowed}.conv-input-row{align-items:flex-end;gap:8px;display:flex}.conv-input{resize:none;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);min-height:38px;max-height:100px;color:var(--text);transition:border-color var(--ease), box-shadow var(--ease);outline:none;flex:1;padding:9px 12px;line-height:1.45}.conv-input:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px #2563eb1a}.conv-input::placeholder{color:var(--text-xmuted)}.conv-input:disabled{opacity:.5}.btn-send{border-radius:var(--r-sm);background:var(--accent);color:#fff;width:38px;height:38px;transition:background var(--ease);flex-shrink:0;justify-content:center;align-items:center;display:flex;box-shadow:0 1px 3px #2563eb59}.btn-send:hover:not(:disabled){background:var(--accent-hover)}.btn-send:disabled{opacity:.35;cursor:not-allowed}.conv-hint{color:var(--text-xmuted);padding-left:2px;font-size:11px}.viz-panel{background:var(--bg);border-right:1px solid var(--border);flex-direction:column;flex:1;min-width:0;display:flex}.viz-header{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;justify-content:space-between;align-items:center;height:52px;padding:0 16px;display:flex}.viz-title{color:var(--text);align-items:center;gap:7px;font-size:13px;font-weight:600;display:flex}.viz-meta{gap:6px;display:flex}.viz-tag{color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:20px;padding:2px 9px;font-size:11px;font-weight:500}.viz-canvas{flex:1;position:relative;overflow:hidden}.viz-overlay{z-index:10;backdrop-filter:blur(4px);color:var(--text-muted);background:#f7f6f3d1;flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:13px;display:flex;position:absolute;inset:0}.viz-loading,.viz-empty{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.viz-loading-inner,.viz-empty{color:var(--text-muted);flex-direction:column;align-items:center;gap:12px;font-size:13px;display:flex}.viz-footer{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;align-items:center;gap:0;padding:10px 20px;display:flex}.viz-stat{flex-direction:column;flex:1;gap:2px;display:flex}.viz-stat-label{color:var(--text-muted);font-size:11px}.viz-stat-value{color:var(--text);letter-spacing:-.2px;font-size:14px;font-weight:600}.viz-stat-value--accent{color:var(--green)}.viz-divider{background:var(--border);width:1px;height:32px;margin:0 20px}.sol-panel{background:var(--surface);flex-direction:column;flex-shrink:0;width:340px;display:flex}.sol-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;height:52px;padding:0 16px;display:flex}.sol-title{color:var(--text);align-items:center;gap:7px;font-size:13px;font-weight:600;display:flex}.sol-count{color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:20px;padding:2px 8px;font-size:11px;font-weight:500}.sol-content{flex-direction:column;flex:1;gap:10px;padding:14px;display:flex;overflow-y:auto}.sol-content::-webkit-scrollbar{width:4px}.sol-content::-webkit-scrollbar-track{background:0 0}.sol-content::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}.sol-empty{color:var(--text-muted);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;padding:40px 20px;font-size:13px;display:flex}.sol-inputs-summary{background:var(--border);border:1px solid var(--border);border-radius:var(--r);grid-template-columns:repeat(4,1fr);gap:1px;display:grid;overflow:hidden}.sol-input-item{background:var(--surface-2);flex-direction:column;gap:2px;padding:8px 10px;display:flex}.sol-input-item span{color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;font-size:10px}.sol-input-item strong{color:var(--text);font-size:12px;font-weight:600}.plan-list{flex-direction:column;gap:8px;display:flex}.plan-card{text-align:left;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r);width:100%;transition:border-color var(--ease), box-shadow var(--ease);cursor:pointer;flex-direction:column;gap:10px;padding:12px;display:flex}.plan-card:hover{border-color:var(--accent-border);box-shadow:0 0 0 3px #2563eb0f}.plan-card--selected{border-color:var(--accent);background:var(--accent-light);box-shadow:0 0 0 3px #2563eb1a}.plan-card-header{align-items:center;gap:8px;display:flex}.plan-rank{color:var(--text-muted);background:var(--surface-3);border:1px solid var(--border);white-space:nowrap;letter-spacing:.2px;border-radius:20px;padding:2px 8px;font-size:10px;font-weight:700}.plan-rank--best{color:var(--green);background:var(--green-bg);border-color:#bbf7d0}.plan-card-buildings{color:var(--text-2);white-space:nowrap;font-size:11px;font-weight:600}.score-bar-wrap{flex:1;align-items:center;gap:6px;display:flex}.score-bar-track{background:var(--surface-3);border-radius:4px;flex:1;height:4px;overflow:hidden}.score-bar-fill{border-radius:4px;height:100%;transition:width .4s}.score-bar-label{text-align:right;min-width:20px;font-size:10px;font-weight:600}.plan-card-metrics{grid-template-columns:1fr 1fr;gap:6px 12px;display:grid}.plan-metric{flex-direction:column;gap:2px;display:flex}.plan-metric-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;font-size:10px}.plan-metric-value{color:var(--text);font-size:13px;font-weight:600}.plan-metric-value--profit{color:var(--green)}.fsi-bar-wrap{align-items:center;gap:5px;display:flex}.fsi-bar-track{background:var(--surface-3);border-radius:4px;flex:1;height:4px;overflow:hidden}.fsi-bar-fill{border-radius:4px;height:100%;transition:width .4s}.fsi-bar-pct{min-width:30px;font-size:11px;font-weight:600}.plan-warning{color:var(--amber);background:var(--amber-bg);border-radius:var(--r-sm);border:1px solid #fde68a;padding:5px 9px;font-size:11px}.detail-panel{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r);flex-direction:column;gap:10px;padding:14px;display:flex}.detail-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.detail-section{flex-direction:column;gap:7px;display:flex}.detail-row{justify-content:space-between;align-items:center;font-size:12.5px;display:flex}.detail-row span{color:var(--text-muted)}.detail-row strong{color:var(--text);font-weight:600}.detail-row--total{border-top:1px solid var(--border);margin-top:2px;padding-top:7px}.detail-row--total strong{font-size:14px}.detail-divider{background:var(--border);height:1px}.text-green{color:var(--green)!important}.text-red{color:var(--red)!important}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}.spinner--large{border:2.5px solid var(--border-strong);border-top-color:var(--accent);width:28px;height:28px}@keyframes spin{to{transform:rotate(360deg)}}
