*{box-sizing:border-box}:root{--bg: #f4f1ea;--panel: #ffffff;--accent: #c0613f;--ink: #2b2b2b;--muted: #8a8275}body{margin:0;font-family:Georgia,Times New Roman,serif;background:var(--bg);color:#2b2b2b}.app{max-width:720px;margin:0 auto;height:100vh;display:flex;flex-direction:column;padding:1rem}header h1{margin:0;font-size:1.6rem}header .sub{margin:.2rem 0 1rem;color:var(--muted);font-size:.9rem}header .user{color:var(--ink)}.signout{background:none;border:1px solid #d8d1c2;border-radius:6px;padding:.1rem .5rem;font-size:.75rem;cursor:pointer;color:var(--muted)}.chat{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem;padding:.5rem 0}.empty{color:var(--muted);text-align:center;margin-top:3rem}.bubble{max-width:80%;padding:.7rem .95rem;border-radius:14px;line-height:1.45;white-space:pre-wrap}.bubble.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px}.bubble.assistant{align-self:flex-start;background:var(--panel);border:1px solid #e6e0d4;border-bottom-left-radius:4px}.meta{margin-top:.4rem;font-size:.72rem;color:var(--muted);font-family:ui-monospace,monospace}.bubble.has-chart{max-width:100%;width:100%}.chart{margin-top:.6rem;background:#fff;border-radius:8px;padding:.5rem}.chart-title{font-size:.9rem;font-weight:700;margin-bottom:.4rem;text-align:center}.chart-empty{color:var(--muted);font-size:.85rem}.chart-table-wrap{overflow-x:auto;max-height:320px;overflow-y:auto}.chart-table{border-collapse:collapse;width:100%;font-size:.8rem;font-family:ui-monospace,monospace}.chart-table th,.chart-table td{border:1px solid #e6e0d4;padding:.25rem .5rem;text-align:left}.chart-table th{background:#f4f1ea;position:sticky;top:0}.embed{margin-top:.6rem}.embed-frame{width:100%;height:460px;border:1px solid #e6e0d4;border-radius:8px;overflow:hidden;background:#fff}.embed-frame iframe{border:none}.embed-error{color:#b3261e;font-size:.85rem}.error{color:#b3261e;font-size:.9rem}.composer{display:flex;gap:.5rem;padding-top:.75rem}.composer input{flex:1;padding:.7rem .9rem;border:1px solid #d8d1c2;border-radius:10px;font-size:1rem;font-family:inherit}.composer button{padding:.7rem 1.2rem;border:none;border-radius:10px;background:var(--accent);color:#fff;font-size:1rem;cursor:pointer}.composer button:disabled{opacity:.5;cursor:default}
