*, *::before, *::after {
  box-sizing: border-box;
}

html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  min-height: 100%;
  font-family: system-ui, sans-serif;
  background: linear-gradient(to bottom right, #dbeafe, #ffffff, #f3e8ff);
}

body {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow-x: hidden;
}

#app {
  width: 100%;
  min-height: 100vh;
}

@keyframes gc-spin {
  to { transform: rotate(360deg); }
}

#gc-loader {
  position: fixed;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  pointer-events: none;
  transition: opacity 0.2s ease;
}

#gc-pct {
  font-family: system-ui, sans-serif;
  font-size: 13px;
  color: #93c5fd;
  letter-spacing: 0.05em;
}

.gc-spinner {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: 4px solid #dbeafe;
  border-top-color: #3b82f6;
  animation: gc-spin 1s linear infinite;
}

#app:has(> :not(#gc-loader)) #gc-loader {
  opacity: 0;
}

.dark html,
.dark body {
  background: linear-gradient(to bottom right, #0f172a, #1a1b2e, #1e1035);
}

.dark .gc-spinner {
  border-color: #1e293b;
  border-top-color: #3b82f6;
}

.dark #gc-pct {
  color: #475569;
}

/* Markdown message styles */
.markdown-body {
  line-height: 1.4;
  white-space: normal;
}
.markdown-body ul,
.markdown-body ol {
  padding-left: 1.5em !important;
  margin: 0 !important;
}

.markdown-body ul {
  list-style-type: disc;
}

.markdown-body ol {
  list-style-type: decimal;
}

.markdown-body li {
  margin: 0;
}

.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
  font-weight: 600;
  margin: 0;
}

.markdown-body h1 { font-size: 1.5em; }
.markdown-body h2 { font-size: 1.3em; }
.markdown-body h3 { font-size: 1.15em; }
.markdown-body h4 { font-size: 1.05em; }

.markdown-body p {
  margin: 0;
}

.markdown-body a {
  color: #60a5fa;
  text-decoration: underline;
}

.markdown-body a:hover {
  color: #93bbfd;
}

.markdown-body code {
  background: rgba(0, 0, 0, 0.1);
  padding: 0.125em 0.375em;
  border-radius: 0.25em;
  font-size: 0.9em;
}

.markdown-body pre {
  background: rgba(0, 0, 0, 0.1);
  padding: 0.75em;
  border-radius: 0.5em;
  overflow-x: auto;
  margin: 0;
}

.markdown-body pre code {
  background: none;
  padding: 0;
}

.markdown-body blockquote {
  border-left: 3px solid rgba(255, 255, 255, 0.3);
  padding-left: 0.75em;
  margin: 0;
  opacity: 0.85;
}

.markdown-body hr {
  border: none;
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  margin: 0;
}

.markdown-body table {
  border-collapse: collapse;
  margin: 0;
}

.markdown-body th,
.markdown-body td {
  border: 1px solid rgba(255, 255, 255, 0.2);
  padding: 0.375em 0.75em;
}

.markdown-body th {
  background: rgba(0, 0, 0, 0.1);
  font-weight: 600;
}

.markdown-body strong {
  font-weight: 600;
}

.markdown-body em {
  font-style: italic;
}

.markdown-body img {
  max-width: 100%;
  border-radius: 0.5em;
}

