@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&family=Figtree:wght@300;400;500;600&display=swap');

:root {
  --r-bg: #FAFAF7;
  --r-bg-panel: #F5F3EE;
  --r-sidebar-bg: #F7F5F0;
  --r-gold: #B8952F;
  --r-gold-light: #C9A84C;
  --r-gold-dim: #9A7A1E;
  --r-gold-soft: rgba(184,149,47,0.10);
  --r-gold-border: rgba(184,149,47,0.22);
  --r-shadow-sm: 0 1px 4px rgba(0,0,0,0.06);
  --r-shadow-gold: 0 0 20px rgba(184,149,47,0.06);
  --r-text: #1E293B;
  --r-text-soft: #334155;
  --r-text-muted: #94A3B8;
  --r-text-sidebar: #475569;
  --r-text-sidebar-dim: #CBD5E1;
  --r-border: rgba(0,0,0,0.06);
  --r-border-mid: rgba(0,0,0,0.09);
  --r-radius: 10px;
  --r-radius-xl: 22px;
  --r-font-display: 'Cormorant Garamond', Georgia, serif;
  --r-font: 'Figtree', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
}

header[data-testid="stHeader"] { display: none !important; height: 0 !important; min-height: 0 !important; }
[data-testid="stDecoration"] { display: none !important; }
[data-testid="stToolbar"] { display: none !important; }
div.block-container, [data-testid="stMainBlockContainer"] { padding: 0 !important; max-width: 100% !important; }
[data-testid="stVerticalBlock"] { gap: 0 !important; }
[data-testid="stVerticalBlockBorderWrapper"] { padding: 0 !important; margin: 0 !important; }
section[data-testid="stMain"] > div:first-child { padding: 0 !important; margin: 0 !important; }

[data-testid="stAppViewContainer"],
[data-testid="stAppViewContainer"] > div:first-child {
  font-family: var(--r-font);
  background: var(--r-bg) !important;
}
[data-testid="stAppViewContainer"] > div:first-child {
  height: 100vh; display: flex; flex-direction: column; overflow: hidden;
}
[data-testid="stMain"] { overflow-y: auto; overflow-x: hidden; padding: 0 !important; }
/* JS sticky header uses position:fixed — no CSS sticky overflow chain needed.
   Keep transform/filter/perspective neutralized so fixed positioning works. */
[data-testid="stMain"],
[data-testid="stMainBlockContainer"] {
  transform: none !important; filter: none !important; perspective: none !important;
}

/* Desktop: hide collapse controls, keep sidebar always visible */
@media (min-width: 769px) {
  [data-testid="stSidebarCollapseButton"],
  [data-testid="stSidebarCollapsedControl"] { display: none !important; }
}

[data-testid="stSidebar"] {
  background: var(--r-sidebar-bg) !important;
  border-right: 1px solid var(--r-border);
  box-shadow: 2px 0 24px rgba(0,0,0,0.04);
}
[data-testid="stSidebar"][aria-expanded="true"] { min-width: 288px !important; max-width: 288px !important; width: 288px !important; }
/* Desktop: force collapsed sidebar to stay visible */
@media (min-width: 769px) {
  [data-testid="stSidebar"][aria-expanded="false"] { display: block !important; min-width: 288px !important; max-width: 288px !important; width: 288px !important; transform: none !important; margin-left: 0 !important; }
}

[data-testid="stSidebar"] > div,
[data-testid="stSidebar"] > div > div,
[data-testid="stSidebar"] > div > div > div,
[data-testid="stSidebarContent"] { padding: 0 !important; }
[data-testid="stSidebar"] > div:first-child { overflow-y: scroll; overflow-x: hidden; }
[data-testid="stSidebar"] .element-container,
[data-testid="stSidebar"] .stMarkdownContainer { margin: 0 !important; padding: 0 !important; }
[data-testid="stSidebar"] [data-testid="stVerticalBlockBorderWrapper"] { padding: 0 !important; margin: 0 !important; }

:where([data-testid="stSidebar"]) button {
  font-family: var(--r-font) !important; background: #FFF !important; color: var(--r-text-soft) !important;
  font-weight: 500 !important; font-size: 0.84rem !important; padding: 7px 14px !important;
  border: 1px solid var(--r-border) !important; border-radius: 7px !important;
  box-shadow: none !important; transform: none !important; line-height: 1.35 !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease !important;
}
:where([data-testid="stSidebar"]) button:hover {
  background: var(--r-bg-panel) !important; color: var(--r-text) !important;
  border-color: var(--r-gold-border) !important; transform: none !important; box-shadow: none !important;
}

[data-testid="stSidebar"] > div > div > div > div > div:nth-child(1) { padding: 10px 14px !important; }
[data-testid="stSidebar"] > div > div > div > div > div:nth-child(1) button:first-child {
  background: var(--r-gold-soft) !important; color: var(--r-gold-dim) !important;
  border: 1px solid var(--r-gold-border) !important; border-radius: 7px !important; font-weight: 600 !important;
  font-size: 0.78rem !important;
}
[data-testid="stSidebar"] > div > div > div > div > div:nth-child(1) button:first-child:hover {
  background: rgba(184,149,47,0.18) !important; box-shadow: var(--r-shadow-gold) !important;
}

[data-testid="stSidebar"] [data-testid="stHorizontalBlock"] {
  gap: 0 !important; padding: 0 !important; margin: 0 0 4px 0 !important; align-items: stretch; flex-wrap: nowrap !important;
}
[data-testid="stSidebar"] [data-testid="stHorizontalBlock"] [data-testid="stColumn"] { padding: 0 !important; margin: 0 !important; }

[data-testid="stSidebar"] [data-testid="stHorizontalBlock"] [data-testid="stColumn"]:first-child [data-testid="stBaseButton-secondary"] button {
  background: transparent !important; color: var(--r-text-muted) !important; font-weight: 400 !important;
  font-size: 0.83rem !important; padding: 5px 10px 5px 16px !important; border-radius: 0 !important;
  border: none !important; border-left: 2px solid transparent !important; box-shadow: none !important;
  width: 100% !important; text-align: left !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
[data-testid="stSidebar"] [data-testid="stHorizontalBlock"] [data-testid="stColumn"]:first-child [data-testid="stBaseButton-secondary"] button:hover {
  background: rgba(184,149,47,0.05) !important; color: var(--r-text) !important; border-left: 2px solid var(--r-gold) !important;
}

[data-testid="stSidebar"] [data-testid="stHorizontalBlock"] [data-testid="stColumn"]:first-child [data-testid="stBaseButton-primary"] button {
  background: rgba(0,0,0,0.06) !important; color: var(--r-text) !important; font-weight: 500 !important;
  font-size: 0.83rem !important; padding: 5px 10px 5px 16px !important; border-radius: 0 !important;
  border: none !important; border-left: 2px solid var(--r-gold) !important; box-shadow: none !important;
  width: 100% !important; text-align: left !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
[data-testid="stSidebar"] [data-testid="stHorizontalBlock"] [data-testid="stColumn"]:first-child [data-testid="stBaseButton-primary"] button:hover {
  background: rgba(0,0,0,0.09) !important;
}

[data-testid="stSidebar"] [data-testid="stColumn"]:last-child button,
[data-testid="stSidebar"] [data-testid="stColumn"]:last-child button:focus,
[data-testid="stSidebar"] [data-testid="stColumn"]:last-child button:active {
  background: transparent !important; color: var(--r-text-sidebar-dim) !important;
  font-size: 0.76rem !important; font-weight: 400 !important; padding: 5px 6px !important;
  border: none !important; border-radius: 0 !important; outline: none !important;
  box-shadow: none !important; min-width: unset !important; height: auto !important; opacity: 1;
}
[data-testid="stSidebar"] [data-testid="stColumn"]:last-child button:hover {
  color: #DC4A4A !important; background: transparent !important; border: none !important; box-shadow: none !important;
}

.info-note {
  background: rgba(184,149,47,0.05); border-left: 2px solid rgba(184,149,47,0.30);
  padding: 9px 14px; font-family: var(--r-font); font-size: 0.72rem; line-height: 1.55;
  color: var(--r-text-muted); margin: 10px 14px; border-radius: 4px;
}
.info-note strong { color: var(--r-gold); font-weight: 500; }

[data-testid="stSidebar"] .stMarkdown,
[data-testid="stSidebar"] .stMarkdown p,
[data-testid="stSidebar"] label { color: var(--r-text-sidebar) !important; font-family: var(--r-font) !important; }
[data-testid="stSidebar"] .stTextInput input {
  background: #FFF !important; color: var(--r-text) !important;
  border: 1px solid var(--r-border-mid) !important; border-radius: 7px !important; font-family: var(--r-font) !important;
}
[data-testid="stSidebar"] .stAlert { font-family: var(--r-font) !important; }
.chats-section { padding-top: 4px; }

[data-testid="stSidebar"] [data-testid="stExpander"] {
  position: fixed !important; bottom: 10px; left: 10px; width: 268px; z-index: 100;
  background: #FFF !important; border: 1px solid var(--r-border) !important; border-radius: 8px !important; box-shadow: none !important;
}
[data-testid="stSidebar"] [data-testid="stExpander"] summary {
  font-family: var(--r-font) !important; font-size: 0.78rem !important; font-weight: 500 !important;
  color: var(--r-text-muted) !important; padding: 9px 13px !important;
}
[data-testid="stSidebar"] [data-testid="stExpander"] summary:hover { color: var(--r-text-sidebar) !important; }
[data-testid="stSidebar"] [data-testid="stExpander"] [data-testid="stExpanderDetails"] { padding: 4px 13px 11px !important; }
[data-testid="stSidebar"] [data-testid="stExpander"] button {
  font-size: 0.8rem !important; padding: 6px 11px !important; border-radius: 6px !important;
  background: var(--r-gold-soft) !important; color: var(--r-gold-dim) !important;
  border: 1px solid var(--r-gold-border) !important; font-weight: 600 !important; box-shadow: none !important;
}
[data-testid="stSidebar"] [data-testid="stExpander"] button:hover {
  background: rgba(184,149,47,0.18) !important; box-shadow: var(--r-shadow-gold) !important;
}
[data-testid="stSidebar"] [data-testid="stExpander"] .stTextInput input {
  background: #FFF !important; color: var(--r-text) !important;
  border: 1px solid var(--r-border-mid) !important; border-radius: 6px !important;
  font-family: var(--r-font) !important; font-size: 0.82rem !important;
}
[data-testid="stSidebar"] [data-testid="stExpander"] .stAlert { font-family: var(--r-font) !important; font-size: 0.79rem !important; }
[data-testid="stSidebar"] [data-testid="stExpander"] label {
  color: var(--r-text-sidebar) !important; font-family: var(--r-font) !important; font-size: 0.79rem !important;
}

/* ── Main layout ──────────────────────────────────────────────────────────── */
[data-testid="stMainBlockContainer"] {
  background: radial-gradient(ellipse 80% 50% at 70% 10%, rgba(184,149,47,0.03) 0%, transparent 60%),
    radial-gradient(ellipse 60% 40% at 15% 85%, rgba(184,149,47,0.02) 0%, transparent 55%), var(--r-bg) !important;
}
/* Zero out all spacing above the header */
[data-testid="stMainBlockContainer"] { padding-top: 0 !important; margin-top: 0 !important; }
[data-testid="stMainBlockContainer"] > [data-testid="stVerticalBlock"] { padding-top: 0 !important; margin-top: 0 !important; }

/* Header row: visual styles only — positioning is handled by JS (position:fixed)
   because CSS sticky is unreliable across Streamlit's dynamic emotion-cache
   wrappers and stAppScrollToBottomContainer. JS pins the header to the viewport
   and inserts a spacer to preserve layout flow. */
[data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content) {
  z-index: 50 !important;
  background: rgba(255,255,255,0.92); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--r-border);
  padding: 14px 20px !important; margin: 0 !important;
  flex-wrap: nowrap !important; align-items: center !important;
}
[data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content)::after {
  content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent 0%, var(--r-gold) 30%, var(--r-gold-light) 70%, transparent 100%); opacity: 0.3;
}
[data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content) [data-testid="stColumn"] {
  padding: 0 !important; overflow: visible !important; min-width: 0;
  display: flex !important; align-items: center !important;
}
/* Force every wrapper between the column and .header-content to be a full-height flex
   centerer so the avatar truly vertically centers (Streamlit's default block-stacked
   wrappers leave .header-content top-aligned, which reads as "slightly downwards"). */
[data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content) [data-testid="stColumn"]
  > [data-testid="stVerticalBlock"],
[data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content) [data-testid="stColumn"]
  [data-testid="stElementContainer"]:has(.header-content),
[data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content) [data-testid="stColumn"]
  [data-testid="stMarkdown"]:has(.header-content),
[data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content) [data-testid="stColumn"]
  [data-testid="stMarkdownContainer"]:has(.header-content) {
  display: flex !important; align-items: center !important; align-self: stretch !important;
  width: 100% !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important;
}
.header-content { width: 100%; }

/* Header content: flex layout of avatar + text */
.header-content {
  display: flex; align-items: center; gap: 14px;
  flex-shrink: 0; position: relative; z-index: 10; min-width: 0;
}
.header-avatar {
  width: 40px; height: 40px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
  border: 1.5px solid var(--r-gold); box-shadow: 0 0 0 3px rgba(184,149,47,0.10), 0 2px 8px rgba(0,0,0,0.06);
}
.header-text { flex: 1; min-width: 0; overflow: hidden; }
.header-title {
  font-family: var(--r-font-display); font-size: 1.18rem; font-weight: 500; font-style: italic;
  color: var(--r-text); margin: 0; line-height: 1.25; letter-spacing: 0.03em;
}
.header-content .header-text p {
  font-family: var(--r-font) !important; color: var(--r-text-muted); font-size: 0.7rem !important; font-weight: 400;
  margin: 2px 0 0 0; line-height: 1.3; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; letter-spacing: 0.03em; text-transform: uppercase;
}

/* End Chat / New Chat button inside the header row */
[data-testid="stElementContainer"].st-key-header_action_btn button {
  font-family: var(--r-font) !important;
  font-size: 0.78rem !important;
  font-weight: 500 !important;
  padding: 6px 14px !important;
  border-radius: 7px !important;
  white-space: nowrap !important;
  background: var(--r-gold-soft) !important;
  color: var(--r-gold-dim) !important;
  border: 1px solid var(--r-gold-border) !important;
  box-shadow: none !important;
  line-height: 1.35 !important;
}
[data-testid="stElementContainer"].st-key-header_action_btn button:hover {
  background: rgba(184,149,47,0.18) !important;
  box-shadow: var(--r-shadow-gold) !important;
}

/* End Chat confirmation dialog: add breathing room between the prompt text
   and the Cancel / End chat button row. */
[data-testid="stDialog"] [data-testid="stHorizontalBlock"]:has(.st-key-end_dlg_cancel) {
  margin-top: 28px !important;
}

.chat-wrapper {
  flex: 1; min-height: 0; overflow: visible;
  padding: 32px 28px 20px; display: flex; flex-direction: column; gap: 14px;
}
.msg-group {
  display: flex; align-items: flex-start; width: 100%; margin-bottom: 6px;
  animation: msgSlideIn 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}
.msg-group.user { justify-content: flex-end; }
.msg-group.assistant { justify-content: flex-start; }

.msg-avatar {
  width: 32px; height: 32px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
  margin-right: 10px; margin-top: 2px; border: 1.5px solid var(--r-gold); box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.msg-bubble {
  position: relative; max-width: 66%; padding: 12px 18px;
  font-family: var(--r-font); font-size: 0.9rem; line-height: 1.65;
  word-wrap: break-word; overflow-wrap: break-word;
}
/* Force every markdown-rendered descendant to inherit the Figtree stack —
   Streamlit's global CSS otherwise drops them back to Source Sans Pro. */
.msg-bubble, .msg-bubble * {
  font-family: var(--r-font) !important;
}
.msg-bubble pre, .msg-bubble pre * {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace !important;
}
.msg-group.user .msg-bubble {
  background: rgba(184,149,47,0.08); color: var(--r-text); border: 1px solid var(--r-gold-border);
  border-radius: var(--r-radius-xl) var(--r-radius-xl) 4px var(--r-radius-xl);
  box-shadow: 0 2px 10px rgba(0,0,0,0.04), var(--r-shadow-gold);
}
.msg-group.user .msg-bubble::after {
  content: ''; position: absolute; bottom: 0; right: -8px; width: 0; height: 0;
  border-style: solid; border-width: 0 0 10px 10px;
  border-color: transparent transparent rgba(184,149,47,0.08) transparent;
}
.msg-group.assistant .msg-bubble {
  background: #FFF; color: var(--r-text-soft); border: 1px solid var(--r-border);
  border-radius: 4px var(--r-radius-xl) var(--r-radius-xl) var(--r-radius-xl); box-shadow: var(--r-shadow-sm);
}
.msg-group.assistant .msg-bubble::before {
  content: ''; position: absolute; top: 12px; left: -8px; width: 0; height: 0;
  border-style: solid; border-width: 0 10px 10px 0;
  border-color: transparent #FFF transparent transparent;
  filter: drop-shadow(-1px 0 0 rgba(0,0,0,0.06));
}

.msg-bubble p { margin: 0 0 0.5em; }
.msg-bubble p:last-child { margin-bottom: 0; }
.msg-bubble ul, .msg-bubble ol { margin: 0.4em 0 0.4em 1.3em; padding: 0; }
.msg-bubble li { margin-bottom: 0.25em; }
.msg-bubble strong { font-weight: 600; color: var(--r-gold-dim); }

/* Headers: same size as body text, just bold */
.msg-bubble h1, .msg-bubble h2, .msg-bubble h3,
.msg-bubble h4, .msg-bubble h5, .msg-bubble h6 {
  font-family: var(--r-font) !important;
  font-size: 0.9rem !important; font-weight: 600; color: var(--r-text); line-height: 1.4;
  margin: 0.6em 0 0.3em; padding: 0; border: none;
}

/* Inline code — stay in Figtree, don't switch to monospace */
.msg-bubble code {
  background: transparent; color: inherit;
  padding: 0; border: none; border-radius: 0;
  font-family: inherit !important; font-size: inherit; font-weight: inherit;
  font-variant-numeric: tabular-nums;
}
/* Code blocks keep monospace */
.msg-bubble pre code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace !important;
  font-size: 0.85em; background: rgba(0,0,0,0.04);
  padding: 8px 12px; border-radius: 6px; display: block; overflow-x: auto;
}

/* KaTeX / math formulas — force Figtree so formulas don't switch fonts */
.msg-bubble .katex,
.msg-bubble .katex * {
  font-family: var(--r-font) !important;
}
.msg-bubble .katex .mathnormal,
.msg-bubble .katex .mathit {
  font-family: var(--r-font) !important;
  font-style: italic;
}

/* Tables inside bubbles — consistent font */
.msg-bubble table {
  font-family: var(--r-font) !important;
  font-size: inherit; border-collapse: collapse; width: 100%; margin: 0.4em 0;
}
.msg-bubble th, .msg-bubble td {
  font-family: var(--r-font) !important;
  padding: 4px 8px; border-bottom: 1px solid var(--r-border);
  font-variant-numeric: tabular-nums;
}

/* Thinking dots animation */
.msg-bubble.thinking { padding: 12px 20px; min-width: 48px; }
.thinking-dots {
  display: inline-flex; gap: 4px; font-size: 1.4rem; line-height: 1;
  color: var(--r-text-muted);
}
.thinking-dots span {
  animation: thinkingDot 1.4s ease-in-out infinite; opacity: 0.3;
}
.thinking-dots span:nth-child(2) { animation-delay: 0.2s; }
.thinking-dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes thinkingDot {
  0%, 60%, 100% { opacity: 0.3; }
  30% { opacity: 1; }
}

/* Chunk reveal animation */
.msg-group.chunk-reveal {
  animation: chunkReveal 0.35s ease-out;
}
@keyframes chunkReveal {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes msgSlideIn {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

[data-testid="stBottom"] {
  background: rgba(255,255,255,0.88) !important; backdrop-filter: blur(16px) !important;
  -webkit-backdrop-filter: blur(16px) !important; border-top: 1px solid var(--r-border) !important;
  box-shadow: 0 -2px 16px rgba(0,0,0,0.03) !important;
}
[data-testid="stBottomBlockContainer"] { padding: 10px 24px !important; max-width: 100% !important; }
[data-testid="stChatInputContainer"] { padding: 0 !important; background: transparent !important; border: none !important; }
[data-testid="stChatInput"] {
  background: #FFF !important; border-radius: var(--r-radius) !important;
  border: 1px solid var(--r-border-mid) !important; box-shadow: var(--r-shadow-sm) !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
[data-testid="stChatInput"]:focus-within {
  border-color: var(--r-gold-border) !important;
  box-shadow: 0 0 0 3px rgba(184,149,47,0.06), var(--r-shadow-gold) !important;
}
[data-testid="stChatInput"] textarea {
  font-family: var(--r-font) !important; background: transparent !important; color: var(--r-text) !important;
  border: none !important; padding: 12px 16px !important; font-size: 0.9rem !important;
  line-height: 1.55 !important; resize: none !important;
}
[data-testid="stChatInput"] textarea::placeholder { color: var(--r-text-muted) !important; }
[data-testid="stChatInput"] textarea:focus { outline: none !important; box-shadow: none !important; }
[data-testid="stChatInput"] button {
  background: var(--r-gold-soft) !important; color: var(--r-gold-dim) !important;
  border: 1px solid var(--r-gold-border) !important; border-radius: 50% !important;
  box-shadow: none !important; transition: background 0.18s ease, box-shadow 0.18s ease !important;
}
[data-testid="stChatInput"] button:hover { background: rgba(184,149,47,0.20) !important; box-shadow: var(--r-shadow-gold) !important; }

.stButton button { font-family: var(--r-font) !important; border-radius: var(--r-radius) !important; line-height: 1.4 !important; }

::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.08); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: rgba(184,149,47,0.20); }
[data-testid="stSidebar"] ::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.06); }
[data-testid="stSidebar"] ::-webkit-scrollbar-thumb:hover { background: rgba(184,149,47,0.15); }

a { color: var(--r-gold) !important; font-weight: 500; text-decoration: none; }
a:hover { color: var(--r-gold-dim) !important; text-decoration: underline; }

@media (max-width: 1024px) {
  .msg-bubble { max-width: 78%; }
  .msg-group.user .msg-bubble::after,
  .msg-group.assistant .msg-bubble::before { display: none; }
  .chat-wrapper { padding: 22px 20px 18px; gap: 12px; }
}
@media (max-width: 768px) {
  [data-testid="stSidebar"] { display: none !important; }
  [data-testid="stSidebarCollapseButton"],
  [data-testid="stSidebarCollapsedControl"] { display: none !important; }
  .msg-bubble { max-width: 86%; font-size: 0.87rem; padding: 10px 14px; }
  .chat-wrapper { padding: 16px 14px; gap: 10px; }
  [data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content) {
    padding: 10px 14px !important;
  }
  .header-content { gap: 10px; }
  .header-avatar { width: 36px; height: 36px; }
  .header-title { font-size: 0.92rem; }
  /* Mobile: give the action button enough space to fit its text */
  [data-testid="stMainBlockContainer"] [data-testid="stHorizontalBlock"]:has(.header-content) > [data-testid="stColumn"]:last-child {
    flex: 0 0 auto !important; width: auto !important; min-width: 88px !important;
  }
  [data-testid="stElementContainer"].st-key-header_action_btn button {
    font-size: 0.72rem !important; padding: 5px 10px !important;
  }
  [data-testid="stBottomBlockContainer"] { padding: 6px 14px !important; }
  /* Lock the entire chat input box to a fixed compact height on mobile, regardless
     of enabled/disabled state. Streamlit nests:
       stChatInput > stChatInputContainer > [data-baseweb="textarea"] >
       [data-baseweb="base-input"] > textarea + button
     Each wrapper enforces its own min-height — flatten them all, and pin the
     textarea to a single line height so auto-grow can't push the box taller. */
  [data-testid="stChatInput"],
  [data-testid="stChatInputContainer"],
  [data-testid="stChatInput"] [data-baseweb="textarea"],
  [data-testid="stChatInput"] [data-baseweb="base-input"],
  [data-testid="stChatInput"] > div,
  [data-testid="stChatInputContainer"] > div,
  [data-testid="stChatInput"][aria-disabled="true"],
  [data-testid="stChatInput"]:has(textarea:disabled) {
    min-height: 0 !important; height: auto !important;
  }
  /* Apply to both enabled AND disabled textareas so the box doesn't shift between turns.
     Height fits two wrapped lines so the long placeholder ("Ask me about CPF, property,
     investments, insurance…") stays fully visible without scrolling. */
  [data-testid="stChatInput"] textarea,
  [data-testid="stChatInput"] textarea:disabled,
  [data-testid="stChatInput"] textarea[disabled] {
    padding: 6px 14px !important;
    line-height: 1.3 !important;
    font-size: 0.85rem !important;
    min-height: 52px !important;
    max-height: 52px !important;
    height: 52px !important;
    overflow-y: auto !important;
    resize: none !important;
    box-sizing: border-box !important;
  }
  [data-testid="stChatInput"] button {
    min-height: 0 !important; height: 30px !important; width: 30px !important;
    padding: 0 !important; flex-shrink: 0 !important;
  }
  [data-testid="stChatInput"] button svg {
    width: 14px !important; height: 14px !important;
  }
}
@media (max-width: 480px) {
  .msg-bubble { max-width: 92%; }
  .msg-avatar { width: 28px; height: 28px; margin-right: 8px; }
}

[data-testid="stSidebar"] [data-testid="stColumn"]:last-child [data-testid="stBaseButton-secondary"] button,
[data-testid="stSidebar"] [data-testid="stColumn"]:last-child button[kind="secondary"],
[data-testid="stSidebar"] [data-testid="stColumn"]:last-child button {
  background: transparent !important; background-color: transparent !important;
  border: none !important; border-color: transparent !important; outline: none !important; box-shadow: none !important;
}
[data-testid="stSidebar"] [data-testid="stColumn"]:first-child [data-testid="stBaseButton-primary"] button,
[data-testid="stSidebar"] [data-testid="stColumn"]:first-child button[kind="primary"] {
  background: rgba(0,0,0,0.06) !important; background-color: rgba(0,0,0,0.06) !important;
  color: #1E293B !important; border: none !important; border-left: 2px solid #B8952F !important;
  border-radius: 0 !important; box-shadow: none !important; font-weight: 500 !important;
}
[data-testid="stSidebar"] [data-testid="stColumn"]:first-child [data-testid="stBaseButton-primary"] button:hover,
[data-testid="stSidebar"] [data-testid="stColumn"]:first-child button[kind="primary"]:hover {
  background: rgba(0,0,0,0.09) !important; background-color: rgba(0,0,0,0.09) !important;
}

