:root {
  --bg-main: #080808;
  --bg-sec: #0f0f0f;
  --bg-ter: #161616;
  --text-main: #e0e0e0;
  --text-muted: #666;
  --accent: #a38257;
  --accent-glow: rgba(163, 130, 87, 0.15);
  --danger: #a03030;
  --success: #2ea043;
  --border: #1e1e1e;
  --border-light: #2a2a2a;
}

body { 
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; 
  margin: 0; background-color: var(--bg-main); color: var(--text-main); 
  height: 100dvh; display: flex; flex-direction: column; overflow: hidden;
  -webkit-font-smoothing: antialiased;
}

.header {
  background: var(--bg-sec); padding: 0 16px; height: 60px;
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--border); z-index: 10; flex-shrink: 0;
}

.header-title { 
  font-weight: 600; font-size: 16px; text-align: center; flex: 1;
  letter-spacing: 1px;
  background: linear-gradient(135deg, #c2a37d, #8a6632);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}

.menu-btn { 
  background: var(--bg-ter); border: none; color: var(--text-muted); 
  font-size: 20px; cursor: pointer; width: 40px; height: 40px; 
  border-radius: 10px; display: flex; align-items: center; justify-content: center;
  transition: all 0.2s ease;
}
.menu-btn:hover { background: var(--border-light); color: var(--text-main); }

/* Sidebar */
.sidebar {
  position: fixed; top: 0; left: 0; width: 300px; height: 100%;
  background: var(--bg-sec); z-index: 100; transform: translateX(-100%);
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); 
  display: flex; flex-direction: column;
  border-right: 1px solid var(--border);
}
.sidebar.open { transform: translateX(0); }

.overlay {
  position: fixed; top: 0; left: 0; width: 100%; height: 100%;
  background: rgba(0,0,0,0.7); backdrop-filter: blur(4px);
  z-index: 90; display: none;
}
.overlay.open { display: block; }

.sidebar-header { padding: 20px 16px; border-bottom: 1px solid var(--border); }

.new-chat-btn {
  width: 100%; padding: 12px; background: var(--accent); color: #000;
  border: none; border-radius: 10px; font-size: 14px; font-weight: 600;
  cursor: pointer; letter-spacing: 0.5px;
  transition: all 0.2s ease;
}
.new-chat-btn:hover { opacity: 0.9; transform: translateY(-1px); }

.chat-list { 
  flex: 1; overflow-y: auto; padding: 8px; 
  display: flex; flex-direction: column; gap: 2px;
}

.chat-item {
  padding: 10px 12px; border-radius: 8px; cursor: pointer; color: var(--text-muted);
  display: flex; justify-content: space-between; align-items: center; 
  font-size: 13px; transition: all 0.15s ease;
}
.chat-item:hover { background: var(--bg-ter); color: var(--text-main); }
.chat-item.active { background: var(--bg-ter); color: var(--text-main); border: 1px solid var(--border-light); }

.chat-actions { display: flex; gap: 4px; opacity: 0; transition: opacity 0.15s; }
.chat-item:hover .chat-actions { opacity: 1; }

.action-icon-btn { 
  background: transparent; border: none; color: var(--text-muted); 
  cursor: pointer; font-size: 13px; padding: 4px 6px; border-radius: 6px; 
}
.action-icon-btn:hover { color: var(--text-main); background: var(--border-light); }

/* Settings */
.settings-bar {
  background: var(--bg-sec); padding: 12px 16px; border-bottom: 1px solid var(--border);
  display: flex; flex-direction: column; gap: 10px; flex-shrink: 0;
}
.settings-bar.hidden { display: none; }
.settings-row { display: flex; align-items: center; gap: 10px; }
.settings-row label { font-size: 12px; color: var(--text-muted); white-space: nowrap; width: 50px; text-transform: uppercase; letter-spacing: 0.5px; }
.settings-row input, .settings-row select {
  flex: 1; background: var(--bg-ter); color: var(--text-main); border: 1px solid var(--border); 
  border-radius: 8px; padding: 10px 12px; font-size: 14px; transition: border-color 0.2s;
}
.settings-row input:focus, .settings-row select:focus { 
  outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-glow);
}

/* Chat */
#chatHistory { 
  flex: 1; padding: 16px; overflow-y: auto; 
  display: flex; flex-direction: column; gap: 12px; scroll-behavior: smooth;
}

.message {
  padding: 14px 18px; border-radius: 16px; font-size: 15px; line-height: 1.6; 
  word-wrap: break-word; max-width: 85%; position: relative;
  animation: msgIn 0.25s ease;
}
@keyframes msgIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.message.user { 
  background: linear-gradient(135deg, #a8844e, #8a6632); color: #fff; 
  align-self: flex-end; border-bottom-right-radius: 4px;
}
.message.ai { 
  background: var(--bg-ter); color: var(--text-main); 
  align-self: flex-start; border-bottom-left-radius: 4px; 
  border: 1px solid var(--border);
}

.chat-img { max-width: 100%; border-radius: 10px; margin-bottom: 8px; display: block; }

/* Markdown & KaTeX Overrides */
.message pre { 
  padding: 14px; border-radius: 10px; overflow-x: auto; 
  background-color: #0a0a0a !important; border: 1px solid var(--border); 
  position: relative; margin: 10px 0;
}

.katex-display {
  overflow-x: auto;
  overflow-y: hidden;
  padding: 5px 0 10px 0;
  max-width: 100%;
}
.katex-display::-webkit-scrollbar { height: 4px; }
.katex-display::-webkit-scrollbar-track { background: transparent; }
.katex-display::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 4px; }

/* แก้บัคตารางอ้วนทะลุจอ */
.message table { 
  display: block; 
  max-width: 100%; 
  overflow-x: auto; 
  border-collapse: collapse; 
  margin: 10px 0; 
  font-size: 13px; 
}
.message table::-webkit-scrollbar { height: 4px; }
.message table::-webkit-scrollbar-track { background: transparent; }
.message table::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 4px; }

.message th, .message td { 
  border: 1px solid var(--border-light); 
  padding: 8px 12px; 
  white-space: nowrap; 
}
.message th { background-color: var(--bg-ter); font-weight: 600; text-align: left; }
.message tr:nth-child(even) { background-color: rgba(255,255,255,0.02); }

.message blockquote { 
  border-left: 3px solid var(--accent); margin: 10px 0; padding: 6px 14px; 
  color: var(--text-muted); font-style: italic; background: rgba(0,0,0,0.3); 
  border-radius: 0 8px 8px 0;
}
.message p { margin: 0 0 10px 0; }
.message p:last-child { margin: 0; }

.action-btn-group { 
  position: absolute; bottom: 6px; right: 6px; display: flex; gap: 4px; 
  opacity: 0; transition: opacity 0.15s;
}
.message:hover .action-btn-group { opacity: 1; }

.code-btn { 
  background: var(--bg-sec); color: var(--text-muted); border: 1px solid var(--border); 
  border-radius: 6px; padding: 4px 8px; font-size: 10px; cursor: pointer; 
  text-transform: uppercase; letter-spacing: 0.5px; transition: all 0.15s;
}
.code-btn:hover { color: var(--text-main); border-color: var(--border-light); }
.download-btn { background: var(--success); color: #fff; border-color: transparent; }
.download-btn:hover { background: #238636; }

.msg-action-bar { 
  display: flex; justify-content: flex-end; gap: 8px; margin-top: 6px; 
  opacity: 0; transition: opacity 0.15s;
}
.message:hover .msg-action-bar { opacity: 0.6; }
.msg-action-btn { 
  background: transparent; border: none; color: var(--text-muted); font-size: 11px; 
  cursor: pointer; padding: 3px 6px; border-radius: 6px; display: flex; align-items: center; gap: 4px; 
}
.msg-action-btn:hover { background: var(--border-light); color: var(--text-main); }

.message.user .msg-action-btn { color: rgba(255, 255, 255, 0.75); }
.message.user .msg-action-btn:hover { background: rgba(0, 0, 0, 0.25); color: #fff; }

/* Input */
.input-wrapper {
  background: var(--bg-sec); border-top: 1px solid var(--border); 
  display: flex; flex-direction: column; flex-shrink: 0;
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); position: relative;
}

#scrollDownBtn {
  position: absolute; top: -48px; right: 20px; z-index: 50;
  background: var(--bg-ter); color: var(--text-muted); border: 1px solid var(--border);
  border-radius: 50%; width: 36px; height: 36px; display: none; 
  align-items: center; justify-content: center; font-size: 16px; cursor: pointer;
  transition: all 0.2s ease;
}
#scrollDownBtn:hover { color: var(--text-main); border-color: var(--border-light); }

#previewsContainer {
  display: none; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; 
  overflow-x: auto; padding-bottom: 4px;
}

.preview-box {
  background: var(--bg-ter); padding: 8px 12px; border-radius: 8px; 
  border: 1px solid var(--border); display: flex; align-items: center; 
  gap: 8px; position: relative; max-width: 80vw; flex-shrink: 0;
}
.preview-box img { max-height: 50px; border-radius: 6px; }
.preview-box span { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 140px; }

.remove-item-btn {
  position: absolute; top: -8px; right: -8px; background: var(--danger); color: white;
  border: none; border-radius: 50%; width: 20px; height: 20px; font-size: 12px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
}

.input-row { display: flex; gap: 8px; align-items: flex-end; }

.attach-btn {
  background: var(--bg-ter); border: 1px solid var(--border); color: var(--text-muted);
  width: 44px; height: 44px; padding: 0; border-radius: 12px; cursor: pointer; 
  display: flex; align-items: center; justify-content: center; transition: all 0.15s;
}
.attach-btn:hover { color: var(--text-main); border-color: var(--border-light); }

textarea { 
  flex: 1; min-height: 24px; max-height: 120px; padding: 12px 16px; 
  background: var(--bg-ter); color: var(--text-main); border: 1px solid var(--border); 
  border-radius: 22px; font-size: 15px; resize: none; overflow-y: auto; 
  font-family: inherit; line-height: 1.4; transition: border-color 0.2s;
}
textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-glow); }
textarea::placeholder { color: var(--text-muted); }

.action-btn {
  border: none; border-radius: 50%; width: 44px; height: 44px; display: flex; 
  align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0;
  transition: all 0.2s ease;
}
#sendBtn { 
  background: linear-gradient(135deg, #a8844e, #8a6632); color: #fff;
}
#sendBtn:hover { opacity: 0.9; transform: scale(1.05); }
#stopBtn { background: var(--danger); color: #fff; display: none; }

/* Scrollbar */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }

.input-wrapper ::-webkit-scrollbar { display: none; }