/* Modern Chat Application CSS
 * A modernized, beautified stylesheet with improved design and accessibility
 */

:root {
  /* Color System - Extended with modern HSL values */
  --color-primary-50: hsl(231, 100%, 97%);
  --color-primary-100: hsl(231, 100%, 95%);
  --color-primary-200: hsl(230, 94%, 90%);
  --color-primary-300: hsl(233, 94%, 85%);
  --color-primary-400: hsl(235, 93%, 76%);
  --color-primary-500: hsl(236, 93%, 66%);
  --color-primary-600: hsl(237, 85%, 62%);
  --color-primary-700: hsl(244, 74%, 56%);
  --color-primary-800: hsl(243, 65%, 45%);
  --color-primary-900: hsl(242, 51%, 34%);

  --color-gray-50: hsl(214, 67%, 98%);
  --color-gray-100: hsl(213, 50%, 96%);
  --color-gray-200: hsl(214, 32%, 92%);
  --color-gray-300: hsl(213, 27%, 85%);
  --color-gray-400: hsl(215, 20%, 67%);
  --color-gray-500: hsl(215, 16%, 49%);
  --color-gray-600: hsl(216, 18%, 36%);
  --color-gray-700: hsl(217, 23%, 28%);
  --color-gray-800: hsl(218, 35%, 18%);
  --color-gray-900: hsl(218, 47%, 12%);

  /* Semantic colors with improved contrast */
  --error: hsl(4, 90%, 58%);
  --error-light: hsl(4, 90%, 95%);
  --error-dark: hsl(4, 90%, 40%);

  --warning: hsl(36, 100%, 50%);
  --warning-light: hsl(36, 100%, 95%);
  --warning-dark: hsl(36, 100%, 35%);

  --success: hsl(122, 39%, 49%);
  --success-light: hsl(122, 39%, 95%);
  --success-dark: hsl(122, 39%, 35%);

  --info: hsl(207, 90%, 54%);
  --info-light: hsl(207, 90%, 95%);
  --info-dark: hsl(207, 90%, 40%);

  /* Surface and theme colors */
  --surface-primary: var(--color-gray-50);
  --surface-secondary: hsl(0, 0%, 100%);
  --surface-tertiary: var(--color-gray-100);
  --surface-elevated: hsl(0, 0%, 100%);
  --surface-inverse: var(--color-gray-900);

  /* Text colors */
  --text-primary: var(--color-gray-900);
  --text-secondary: var(--color-gray-600);
  --text-tertiary: var(--color-gray-500);
  --text-inverse: hsl(0, 0%, 100%);
  --text-disabled: var(--color-gray-400);

  /* Border colors */
  --border-primary: var(--color-gray-200);
  --border-secondary: var(--color-gray-300);
  --border-focus: var(--color-primary-500);
  --border-danger: var(--error);

  /* Message colors */
  --message-bg-self: color-mix(in srgb, var(--color-primary-500) 8%, transparent);
  --message-bg-other: var(--surface-elevated);
  --message-bg-system: color-mix(in srgb, var(--color-gray-500) 10%, transparent);
  --message-border-self: var(--color-primary-500);

  /* Typography */
  --font-family-base: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;

  --font-size-xs: 0.75rem;   /* 12px */
  --font-size-sm: 0.875rem;  /* 14px */
  --font-size-base: 1rem;    /* 16px */
  --font-size-lg: 1.125rem;  /* 18px */
  --font-size-xl: 1.25rem;   /* 20px */
  --font-size-2xl: 1.5rem;   /* 24px */
  --font-size-3xl: 1.875rem; /* 30px */
  --font-size-4xl: 2.25rem;  /* 36px */

  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  --line-height-tight: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.625;
  --line-height-loose: 2;

  /* Spacing system */
  --space-0: 0;
  --space-0-5: 0.125rem;  /* 2px */
  --space-1: 0.25rem;     /* 4px */
  --space-2: 0.5rem;      /* 8px */
  --space-3: 0.75rem;     /* 12px */
  --space-4: 1rem;        /* 16px */
  --space-5: 1.25rem;     /* 20px */
  --space-6: 1.5rem;      /* 24px */
  --space-8: 2rem;        /* 32px */
  --space-10: 2.5rem;     /* 40px */
  --space-12: 3rem;       /* 48px */
  --space-16: 4rem;       /* 64px */
  --space-20: 5rem;       /* 80px */
  --space-24: 6rem;       /* 96px */

  /* Border radius */
  --radius-none: 0;
  --radius-sm: 0.125rem;  /* 2px */
  --radius-base: 0.375rem; /* 6px */
  --radius-md: 0.5rem;    /* 8px */
  --radius-lg: 0.75rem;   /* 12px */
  --radius-xl: 1rem;      /* 16px */
  --radius-2xl: 1.5rem;   /* 24px */
  --radius-full: 9999px;

  /* Shadows with improved depth */
  --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.05);
  --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.05);
  --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
  --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);

  /* Focus and interaction */
  --ring-width: 2px;
  --ring-offset-width: 2px;
  --ring-color: rgba(90, 102, 248, 0.5);
  --ring-offset-color: var(--surface-primary);

  /* Transitions */
  --transition-fast: 150ms;
  --transition-normal: 200ms;
  --transition-slow: 300ms;
  --transition-xslow: 500ms;

  --ease-in: cubic-bezier(0.4, 0, 1, 1);
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);

  /* Consistent naming for animations */
  --animation-fast: var(--transition-fast) var(--ease-out);
  --animation-normal: var(--transition-normal) var(--ease-out);
  --animation-slow: var(--transition-slow) var(--ease-out);
  --animation-bounce: var(--transition-normal) var(--ease-bounce);
  --animation-spring: var(--transition-normal) var(--ease-spring);

  /* Standardized message backgrounds for light/dark modes */
  --message-bg-self: color-mix(in srgb, var(--color-primary-500) 15%, transparent);
  --message-bg-other: var(--surface-elevated);
  --message-bg-system: color-mix(in srgb, var(--color-gray-500) 15%, transparent);

  /* Z-index scale */
  --z-hide: -1;
  --z-auto: auto;
  --z-base: 0;
  --z-docked: 10;
  --z-dropdown: 1000;
  --z-sticky: 1100;
  --z-banner: 1200;
  --z-overlay: 1300;
  --z-modal: 1400;
  --z-popover: 1500;
  --z-tooltip: 1600;
  --z-notification: 1700;

  /* Improved dark mode colors with better contrast */
  --color-dark-bg-primary: hsl(222, 47%, 10%);
  --color-dark-bg-secondary: hsl(223, 40%, 14%);
  --color-dark-bg-tertiary: hsl(223, 35%, 18%);
  --color-dark-bg-elevated: hsl(223, 36%, 16%);

  /* Enhanced focus ring for better accessibility */
  --ring-width: 3px;
  --ring-color: rgba(90, 102, 248, 0.6);

  /* New accent colors for enhanced UI */
  --accent-purple: hsl(265, 83%, 66%);
  --accent-teal: hsl(180, 80%, 48%);
  --accent-amber: hsl(43, 100%, 64%);

  /* Chat message refinements */
  --message-bg-self: color-mix(in srgb, var(--color-primary-500) 15%, transparent);
  --message-bg-system: color-mix(in srgb, var(--color-gray-500) 15%, transparent);
  --message-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);

  /* Animation improvements */
  --ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
  --animation-spring: var(--transition-normal) var(--ease-spring);
}

/* Dark mode theme variables */
.dark-mode {
  --surface-primary: var(--color-dark-bg-primary);
  --surface-secondary: var(--color-dark-bg-secondary);
  --surface-tertiary: var(--color-dark-bg-tertiary);
  --surface-elevated: var(--color-dark-bg-elevated);
  --surface-inverse: var(--color-gray-50);

  --text-primary: hsl(220, 25%, 95%);
  --text-secondary: hsl(220, 15%, 80%);
  --text-tertiary: hsl(220, 10%, 65%);
  --text-inverse: var(--color-gray-900);
  --text-disabled: hsl(220, 15%, 40%);

  --border-primary: hsl(223, 20%, 26%);
  --border-secondary: hsl(223, 20%, 32%);
  --border-focus: var(--color-primary-400);

  --message-bg-self: color-mix(in srgb, var(--color-primary-600) 25%, transparent);
  --message-bg-other: color-mix(in srgb, var(--color-dark-bg-elevated) 95%, var(--color-primary-900));
  --message-bg-system: color-mix(in srgb, var(--color-gray-600) 20%, transparent);
  --message-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);

  /* Improved shadow for dark mode */
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.2);
  --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.2);
}

/* Base Styles */
*, *::before, *::after {
  box-sizing: border-box;
  border: 0 solid transparent;
  margin: 0;
}

html {
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

@media (max-width: 768px) {
  :root {
    --font-size-base: 0.9375rem;
    --space-4: 0.875rem;
    --space-5: 1rem;
    --space-8: 1.5rem;
  }
  
  html {
    -webkit-text-size-adjust: 100%;
  }
}

body {
  font-family: var(--font-family-base);
  background-color: var(--surface-primary);
  color: var(--text-primary);
  transition: background-color var(--animation-normal),
              color var(--animation-normal);
  -webkit-tap-highlight-color: transparent;
  accent-color: var(--color-primary-600);
  margin: 0;
  padding: 0;
}

/* Improved Focus States for Accessibility */
:focus {
  outline: 0;
}

:focus-visible {
  outline: var(--ring-width) solid var(--ring-color);
  outline-offset: var(--ring-offset-width);
}

body.using-keyboard :focus-visible {
  outline: var(--ring-width) solid var(--ring-color);
  outline-offset: var(--ring-offset-width);
}

/* Typography */
h1, h2, h3, h4, h5, h6 {
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  margin: 0;
}

h1 {
  font-size: clamp(var(--font-size-2xl), 5vw, var(--font-size-4xl));
  font-weight: var(--font-weight-bold);
  line-height: 1.35;
  margin-bottom: var(--space-2);
  color: var(--text-primary);
  background: linear-gradient(135deg, var(--color-primary-600), var(--accent-purple));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  position: relative;
  text-align: center;
  letter-spacing: -0.02em;
}

p {
  margin-bottom: var(--space-4);
}

p:last-child {
  margin-bottom: 0;
}

.subtitle {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  margin-bottom: var(--space-6);
  text-align: center;
}

a {
  color: var(--color-primary-600);
  text-decoration: none;
  transition: color var(--animation-fast);
  /* make it such that it does not break the line when put before some other stuff so it is continuous */
  display: inline-block;
}

a:hover {
  color: var(--color-primary-700);
  text-decoration: underline;
}

/* Text Utilities */
.text-xs { font-size: var(--font-size-xs); }
.text-sm { font-size: var(--font-size-sm); }
.text-base { font-size: var(--font-size-base); }
.text-lg { font-size: var(--font-size-lg); }
.text-xl { font-size: var(--font-size-xl); }
.text-2xl { font-size: var(--font-size-2xl); }
.text-3xl { font-size: var(--font-size-3xl); }
.text-4xl { font-size: var(--font-size-4xl); }

.font-normal { font-weight: var(--font-weight-normal); }
.font-medium { font-weight: var(--font-weight-medium); }
.font-semibold { font-weight: var(--font-weight-semibold); }
.font-bold { font-weight: var(--font-weight-bold); }

.leading-tight { line-height: var(--line-height-tight); }
.leading-normal { line-height: var(--line-height-normal); }
.leading-relaxed { line-height: var(--line-height-relaxed); }
.leading-loose { line-height: var(--line-height-loose); }

.text-primary { color: var(--text-primary); }
.text-secondary { color: var(--text-secondary); }
.text-tertiary { color: var(--text-tertiary); }
.text-success { color: var(--success); }
.text-warning { color: var(--warning); }
.text-danger { color: var(--error); }

/* Layout */
#container {
  max-width: 60rem;
  width: calc(100% - var(--space-4));
  background-color: var(--surface-elevated);
  border-radius: var(--radius-2xl);
  padding: clamp(var(--space-4), 4vw, var(--space-8));
  margin: var(--space-4) auto;
  box-shadow: var(--shadow-lg);
  transition: all var(--animation-normal);
  isolation: isolate;
  overflow: hidden;
  position: relative;
  backdrop-filter: blur(12px);
  background: linear-gradient(135deg,
              color-mix(in srgb, var(--surface-elevated) 95%, var(--color-primary-50)),
              var(--surface-elevated));
  border: 1px solid color-mix(in srgb, var(--border-primary) 50%, transparent);
}

@media (max-width: 768px) {
  #container {
    border-radius: var(--radius-xl);
    margin: var(--space-2) auto;
  }
  
  h1 {
    font-size: clamp(var(--font-size-xl), 6vw, var(--font-size-3xl));
  }
}

#container::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, var(--color-primary-500), var(--accent-purple), var(--accent-teal));
  z-index: 1;
}

#container::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: radial-gradient(circle at top right,
              color-mix(in srgb, var(--color-primary-500) 3%, transparent) 10%,
              transparent 70%);
  pointer-events: none;
  z-index: -1;
}

.dark-mode #container {
  background: linear-gradient(135deg,
              color-mix(in srgb, var(--color-dark-bg-primary) 95%, var(--color-primary-900)),
              var(--color-dark-bg-primary));
  backdrop-filter: blur(12px);
}

.edit-container {
  width: 100%;
}

.edit-container::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: linear-gradient(90deg, var(--color-primary-500), var(--accent-purple), var(--accent-teal));
}

.edit-input {
  width: 100%;
  padding: var(--space-2);
  border: 1px solid var(--border-primary);
  border-radius: var(--radius-md);
  background-color: var(--surface-primary);
  color: var(--text-primary);
  font-family: inherit;
  font-size: var(--font-size-sm);
  resize: vertical;
  min-height: 5rem;
}

.edit-input:focus {
  border-color: var(--border-focus);
  outline: none;
}

.edit-actions {
  display: flex;
  gap: var(--space-2);
  margin-top: var(--space-2);
  justify-content: flex-end;
  align-items: center;
}

.dark-mode .edit-container::before {
  background: linear-gradient(90deg, var(--color-primary-500), var(--accent-purple), var(--accent-teal));
}

.status-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-4);
  padding: var(--space-2) var(--space-4);
  background-color: color-mix(in srgb, var(--surface-tertiary) 80%, transparent);
  border-radius: var(--radius-md);
  font-size: var(--font-size-xs);
  color: var(--text-secondary);
  border: 1px solid var(--border-primary);
  box-shadow: var(--shadow-sm) inset;
}

#active-users {
  font-weight: var(--font-weight-medium);
}

#char-count {
  position: relative;
  background-color: color-mix(in srgb, var(--surface-elevated) 95%, transparent);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-md);
  z-index: 5;
  max-width: none;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  border: 1px solid var(--border-primary);
  box-shadow: var(--shadow-xs);
  transform-origin: bottom right;
  color: var(--text-tertiary);
  align-self: center;
  font-size: var(--font-size-xs);
  pointer-events: none; /* Make it non-interactive so it doesn't interfere with typing */
}

.reply-reference {
    display: inline-flex;
    align-items: center;
    background-color: color-mix(in srgb, var(--color-primary-500) 15%, transparent);
    padding: var(--space-1) var(--space-2);
    border-radius: var(--radius-md);
    margin-right: var(--space-1);
    margin-bottom: var(--space-1);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    color: var(--color-primary-700);
    border: 1px solid color-mix(in srgb, var(--color-primary-500) 30%, transparent);
    cursor: pointer;
    transition: all var(--animation-fast);
}

.reply-reference:hover {
    background-color: color-mix(in srgb, var(--color-primary-500) 25%, transparent);
}

.dark-mode .reply-reference {
    color: var(--color-primary-400);
    border-color: color-mix(in srgb, var(--color-primary-400) 30%, transparent);
}

#char-count::before {
  content: "📝";
  opacity: 0.7;
  font-size: var(--font-size-xs);
}

#char-count.near-limit {
  color: var(--warning);
  background-color: color-mix(in srgb, var(--warning-light) 40%, var(--surface-elevated));
  border-color: var(--warning);
  transform: scale(1.05);
  box-shadow: 0 0 8px rgba(var(--warning), 0.3);
  animation: 1s infinite pulse-warning;
  font-weight: var(--font-weight-semibold);
}

#char-count.near-limit::before {
  content: "⚠️";
}

/* Adjust chat form to account for character count */
#chat-form {
  padding-bottom: calc(var(--space-4) + 2rem); /* Increase bottom padding */
  position: relative; /* Ensure proper positioning context */
}

/* Position send button to avoid overlap */
#send-btn {
  position: relative;
  z-index: 4; /* Ensure button stays above char count */
}

/* Animation for warning state */
@keyframes pulse-warning {
  0%, 100% {
    transform: scaleX(1) scaleY(1);
  }
  50% {
    transform: scaleX(1.05) scaleY(1.05);
    transform-origin: center;
  }
}


/* User Panel */
.user-panel {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: clamp(var(--space-2), 3vw, var(--space-4));
  margin-bottom: var(--space-5);
  background: linear-gradient(135deg,
              color-mix(in srgb, var(--surface-tertiary) 80%, transparent),
              color-mix(in srgb, var(--color-primary-500) 8%, var(--surface-tertiary) 92%));
  border-radius: var(--radius-lg);
  border: 1px solid var(--border-primary);
  position: relative;
  backdrop-filter: blur(8px);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  flex-wrap: wrap;
  gap: var(--space-2);
}

@media (max-width: 480px) {
  .user-panel {
    flex-direction: column;
    align-items: flex-start;
  }
  
  .user-actions {
    width: 100%;
    justify-content: space-between;
    margin-top: var(--space-2);
  }
}

.user-panel::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(45deg,
              transparent 30%,
              color-mix(in srgb, var(--color-primary-500) 10%, transparent) 50%,
              transparent 70%);
  pointer-events: none;
  border-radius: var(--radius-lg);
}

.dark-mode .user-panel {
  background: color-mix(in srgb, var(--color-dark-bg-tertiary) 70%, transparent);
  border-color: var(--border-primary);
}

.user-actions {
  display: flex;
  gap: var(--space-2);
  align-items: center;
}

.username-display {
  font-size: var(--font-size-sm);
  color: var(--text-primary);
  font-weight: var(--font-weight-semibold);
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.username-display::before {
  content: '👤';
  font-size: var(--font-size-base);
  opacity: 0.8;
}

.dark-mode .username-display::before {
  content: '👤';
  filter: grayscale(0.3);
}

/* Chat Log */
#chat-log {
  background-color: color-mix(in srgb, var(--surface-tertiary) 80%, transparent);
  border-radius: var(--radius-xl);
  overflow-y: auto;
  height: clamp(20rem, 60vh, 28rem);
  max-height: 65vh;
  border: 1px solid var(--border-primary);
  padding: clamp(var(--space-2), 3vw, var(--space-5));
  margin-bottom: var(--space-5);
  scrollbar-width: thin;
  scrollbar-gutter: stable;
  scrollbar-color: var(--color-gray-400) transparent;
  transition: border-color var(--animation-normal),
              background-color var(--animation-normal);
  box-shadow: var(--shadow-inner);
  position: relative;
  background-size: 20px 20px;
  background-position: -2px -2px;
  background-blend-mode: soft-light;
}

@media (max-width: 768px) {
  #chat-log {
    border-radius: var(--radius-lg);
    padding: var(--space-3);
  }
  
  .message {
    padding: var(--space-3);
    margin-bottom: var(--space-3);
    border-radius: var(--radius-md);
  }
}

.dark-mode #chat-log {
  background-blend-mode: color-burn;
}

/* Custom Scrollbar */
#chat-log::-webkit-scrollbar {
  width: 10px;
  background-color: transparent;
}

#chat-log::-webkit-scrollbar-track {
  background-color: color-mix(in srgb, var(--surface-tertiary) 80%, transparent);
  border-radius: var(--radius-full);
  margin: 4px 0;
}

#chat-log::-webkit-scrollbar-thumb {
  background-color: color-mix(in srgb, var(--color-primary-500) 40%, var(--color-gray-400));
  border-radius: var(--radius-full);
  border: 2px solid transparent;
  background-clip: padding-box;
  transition: background-color var(--animation-fast);
}

#chat-log::-webkit-scrollbar-thumb:hover {
  background-color: color-mix(in srgb, var(--color-primary-500) 60%, var(--color-gray-400));
}

.dark-mode #chat-log::-webkit-scrollbar-track {
  background-color: color-mix(in srgb, var(--color-dark-bg-tertiary) 80%, transparent);
}

.dark-mode #chat-log::-webkit-scrollbar-thumb {
  background-color: color-mix(in srgb, var(--color-primary-700) 40%, var(--color-gray-700));
}

.dark-mode #chat-log::-webkit-scrollbar-thumb:hover {
  background-color: color-mix(in srgb, var(--color-primary-600) 60%, var(--color-gray-700));
}

/* Message Styles */
/* Update message block to account for new actions */
.message {
  border-radius: var(--radius-lg);
  background-color: var(--message-bg-other);
  border: 1px solid var(--border-primary);
  animation: message-enter var(--animation-spring) forwards;
  word-wrap: break-word;
  overflow-wrap: break-word;
  hyphens: auto;
  transition: background-color var(--animation-normal),
              border-color var(--animation-normal),
              box-shadow var(--animation-normal),
              transform var(--animation-normal),
              opacity var(--animation-normal);
  box-shadow: var(--message-shadow);
  position: relative;
  margin-bottom: var(--space-4);
  padding: var(--space-4) var(--space-5);
}

.message:hover {
  box-shadow: var(--shadow-md);
  z-index: 2;
}

.message:last-child {
  margin-bottom: 0;
}

.message.own-message {
  background-color: var(--message-bg-self);
  border-left: 4px solid var(--message-border-self);
}

.message.own-message:hover {
  background-color: color-mix(in srgb, var(--color-primary-500) 18%, transparent);
}

.message.system-message {
  text-align: center;
  font-style: italic;
  background-color: var(--message-bg-system);
  border: none;
  max-width: 85%;
  margin: var(--space-3) auto;
  color: var(--text-secondary);
  padding: var(--space-2) var(--space-4);
  font-size: var(--font-size-xs);
  border-radius: var(--radius-md);
}

.message-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
  font-size: var(--font-size-xs);
  color: var(--text-tertiary);
}

.message-header .username {
  color: var(--color-primary-600);
  font-weight: var(--font-weight-semibold);
  letter-spacing: 0.02em;
}

.message-content {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-relaxed);
  color: var(--text-primary);
  letter-spacing: 0.01em;
  word-spacing: 0.05em;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.message-text {
    width: 100%;
}

/* Message dark mode */
.dark-mode .message {
  background-color: var(--message-bg-other);
  border-color: var(--border-primary);
}

.dark-mode .message.own-message {
  background-color: var(--message-bg-self);
  border-left: 4px solid var(--message-border-self);
}

.dark-mode .message.system-message {
  background-color: var(--message-bg-system);
  color: var(--text-secondary);
}

.dark-mode .message-header {
  color: var(--text-tertiary);
}

.dark-mode .message-header .username {
  color: var(--color-primary-500);
}

.dark-mode .message-content {
  color: var(--text-primary);
}

.reply-container {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-1);
    margin-bottom: var(--space-1);
}

/* Chat Form */
#chat-form {
  display: flex;
  gap: clamp(var(--space-2), 2vw, var(--space-3));
  align-items: stretch; /* Changed from align-items: flex-end to align-items: stretch */
  position: relative;
  background: color-mix(in srgb, var(--surface-secondary) 90%, transparent);
  padding: clamp(var(--space-3), 3vw, var(--space-5));
  border-radius: var(--radius-xl);
  backdrop-filter: blur(8px);
  border: 1px solid var(--border-primary);
  box-shadow: var(--shadow-inner);
  padding-bottom: var(--space-5);
}

.dark-mode #chat-form {
  background: color-mix(in srgb, var(--color-dark-bg-secondary) 90%, transparent);
  border-color: var(--border-primary);
}

#message {
  flex: 1;
  min-height: 3rem;
  font-size: var(--font-size-base);
  padding: clamp(var(--space-3), 3vw, var(--space-4));
  line-height: 1.4;
  -webkit-appearance: none;
  border: 1px solid var(--border-primary);
  border-radius: var(--radius-lg);
  background-color: var(--surface-elevated);
  color: var(--text-primary);
  resize: vertical;
  font-family: inherit;
  transition: all var(--animation-fast);
  position: relative;
  box-shadow: var(--shadow-inner);
  backdrop-filter: blur(4px);
  padding-right: 3.5rem;
}

#message:focus {
  border-color: var(--border-focus);
  box-shadow: 0 0 0 var(--ring-width) var(--ring-color),
              0 4px 12px rgba(0, 0, 0, 0.08);
  outline: none;
  background-color: var(--surface-elevated);
  transform: scale(1.01);
  transform-origin: center;
}

#message::placeholder {
  color: var(--text-disabled);
  opacity: 0.8;
}

#message::placeholder {
  color: var(--text-disabled);
  opacity: 0.8;
}

.message-actions {
  display: flex;
  gap: var(--space-2);
  opacity: 0;
  transition: opacity var(--animation-normal);
  margin-top: var(--space-2);
  position: absolute;
  right: var(--space-4);
  bottom: -1rem;
  background: var(--surface-elevated);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-full);
  border: 1px solid var(--border-primary);
  box-shadow: var(--shadow-sm);
  z-index: 10;
}

.message:hover .message-actions {
  opacity: 1;
}

.action-btn {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: var(--space-1);
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
  transition: background-color var(--animation-fast), transform var(--animation-fast);
}

.action-btn:hover {
  background-color: color-mix(in srgb, var(--color-primary-500) 10%, transparent);
  transform: scale(1.05);
}

.edited-indicator {
  font-size: var(--font-size-xs);
  color: var(--text-tertiary);
  font-style: italic;
}

/* Message being edited styling */
.message.editing .message-content {
  padding: var(--space-2);
}

#send-btn {
  display: flex;
  justify-content: center;
  align-items: center;
  color: #fff;
  background: linear-gradient(135deg, var(--color-primary-500), var(--color-primary-700));
  border-radius: var(--radius-lg);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  cursor: pointer;
  transition: all var(--animation-fast);
  min-width: clamp(3rem, 15vw, 5.5rem);
  min-height: 3rem;
  height: auto; /* Changed from min-height to height:100% to match the input */
  position: relative;
  letter-spacing: 0.01em;
  padding: 0 var(--space-5);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  overflow: hidden;
  border: none;
  -webkit-tap-highlight-color: transparent;
}

@media (max-width: 480px) {
  #message:focus {
    transform: none;
  }
}

#send-btn::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
  transition: left var(--animation-normal);
}

#send-btn::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
  opacity: 0;
  transition: opacity var(--animation-normal);
}

#send-btn:hover::after {
  opacity: 1;
}

#send-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

#send-btn:hover:not(:disabled) {
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
}

#send-btn:active:not(:disabled) {
  transform: scale(0.98) translateY(1px);
}

#rate-info {
  position: absolute;
  right: 0;
  bottom: -1.5rem;
  font-size: var(--font-size-xs);
  color: var(--text-tertiary);
}

#rate-info.warning {
  color: var(--error);
  font-weight: var(--font-weight-semibold);
}

/* Mode Toggle Button */
#mode-toggle {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-5);
  cursor: pointer;
  border: 1px solid var(--border-primary);
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg,
              var(--surface-elevated),
              color-mix(in srgb, var(--surface-secondary) 90%, var(--color-primary-50)));
  transition: all var(--animation-normal);
  /* centered */
  margin-left: auto;
  margin-right: auto;
  margin-top: var(--space-4);
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  position: relative;
  overflow: hidden;
  backdrop-filter: blur(4px);
  margin-top: var(--space-4);
  margin-bottom: var(--space-2);
}

#mode-toggle::before {
  content: '🌙';
  font-size: var(--font-size-lg);
  transition: transform var(--animation-normal);
}

#mode-toggle:hover {
  background: linear-gradient(135deg,
              color-mix(in srgb, var(--color-primary-500) 10%, var(--surface-elevated)),
              color-mix(in srgb, var(--color-primary-500) 5%, var(--surface-secondary)));
  border-color: var(--color-primary-500);
  color: var(--color-primary-600);
  box-shadow: var(--shadow-md);
  transform: scale(1.02);
}

#mode-toggle:hover::before {
  transform: rotate(20deg);
}

.dark-mode #mode-toggle {
  background: linear-gradient(135deg,
              var(--color-dark-bg-tertiary),
              color-mix(in srgb, var(--color-dark-bg-secondary) 90%, var(--color-primary-900)));
}

.dark-mode #mode-toggle::before {
  content: '☀️';
}

.dark-mode #mode-toggle:hover {
  background: linear-gradient(135deg,
              color-mix(in srgb, var(--color-primary-700) 20%, var(--color-dark-bg-tertiary)),
              color-mix(in srgb, var(--color-primary-700) 10%, var(--color-dark-bg-secondary)));
  border-color: var(--color-primary-400);
  color: var(--color-primary-400);
}

/* Button Styles */
.btn {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  min-height: 2.5rem;
  padding: var(--space-2) var(--space-4);
  font-family: inherit;
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-normal);
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  background-color: transparent;
  color: inherit;
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
  transition: background-color var(--animation-fast),
              border-color var(--animation-fast),
              color var(--animation-fast),
              box-shadow var(--animation-fast),
              transform var(--animation-fast);
  position: relative;
}

.btn:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  pointer-events: none;
}

.btn:not(:disabled):hover {
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1);
}

.btn:not(:disabled):active {
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* Button Variants */
.btn-primary {
  background-color: var(--color-primary-500);
  color: #fff;
  border-color: var(--color-primary-500);
}

.btn-primary:hover:not(:disabled) {
  background-color: var(--color-primary-600);
  border-color: var(--color-primary-600);
}

.btn-secondary {
  background-color: var(--color-gray-500);
  color: #fff;
  border-color: var(--color-gray-500);
}

.btn-secondary:hover:not(:disabled) {
  background-color: var(--color-gray-600);
  border-color: var(--color-gray-600);
}

.btn-danger {
  background-color: var(--error);
  color: #fff;
  border-color: var(--error);
}

.btn-danger:hover:not(:disabled) {
  background-color: var(--error-dark);
  border-color: var(--error-dark);
}

.btn-outline {
  background-color: transparent;
  border-color: var(--border-secondary);
  color: var(--text-secondary);
}

.btn-outline:hover:not(:disabled) {
  background-color: var(--color-gray-50);
  border-color: var(--color-gray-300);
  color: var(--text-primary);
}

.btn.secondary.small {
  min-height: 2.25rem;
  padding: var(--space-2) var(--space-4);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  background-color: transparent;
  color: var(--color-primary-600);
  border: 1.5px solid var(--color-primary-500);
  border-radius: var(--radius-md);
  transition: all var(--animation-normal);
  position: relative;
  overflow: hidden;
}

.btn.secondary.small::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
  transition: left var(--animation-normal);
}

.btn.secondary.small:hover {
  background-color: var(--color-primary-500);
  color: white;
  box-shadow: var(--shadow-md);
}

.btn.secondary.small:hover::before {
  left: 100%;
}

.dark-mode .btn-outline {
  border-color: var(--border-primary);
}

.dark-mode .btn-outline:hover:not(:disabled) {
  background-color: var(--color-gray-800);
  border-color: var(--color-gray-600);
}
/* Button Sizes */
.btn-sm {
  min-height: 2rem;
  padding: var(--space-1) var(--space-3);
  font-size: var(--font-size-xs);
}

.btn-lg {
  min-height: 3rem;
  padding: var(--space-3) var(--space-6);
  font-size: var(--font-size-base);
}

/* Form Styles */
.auth-form .chg-pwd-form .chg-usrnm-form {
  max-width: 28rem;
  width: 100%;
  margin: 0 auto;
  padding: var(--space-6);
  border-radius: var(--radius-xl);
}

.form-group {
  margin-bottom: var(--space-5);
}

.form-group label {
  display: block;
  margin-bottom: var(--space-1);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  color: var(--text-primary);
}

.form-group input {
  width: 100%;
  padding: var(--space-3);
  min-height: 3rem;
  font-size: var(--font-size-base);
  font-family: inherit;
  background-color: var(--surface-elevated);
  color: var(--text-primary);
  border: 1px solid var(--border-primary);
  border-radius: var(--radius-md);
  transition: border-color var(--animation-fast),
              box-shadow var(--animation-fast),
              background-color var(--animation-normal);
}

.form-group input:focus {
  border-color: var(--border-focus);
  box-shadow: 0 0 0 var(--ring-width) var(--ring-color),
              0 4px 8px rgba(0, 0, 0, 0.05);
  transform: translateY(-1px);
}

.form-group input::placeholder {
  color: var(--text-disabled);
}

.form-actions {
  display: flex;
  gap: var(--space-3);
  margin: var(--space-6) 0;
}

.form-actions .btn {
  flex: 1;
}

.form-footer {
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  text-align: center;
}

/* Flash Messages */
.flash-message {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  margin-bottom: var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
  border-left: 4px solid;
  text-align: center;
}

.flash-message.error {
  background: rgba(244, 67, 54, 0.1);
  color: var(--error);
  border-left-color: var(--error);
}

.flash-message.warning {
  background: rgba(255, 152, 0, 0.1);
  color: var(--warning);
  border-left-color: var(--warning);
}

.flash-message.success {
  background: rgba(76, 175, 80, 0.1);
  color: var(--success);
  border-left-color: var(--success);
}

.flash-message.info {
  background: rgba(33, 150, 243, 0.1);
  color: var(--info);
  border-left-color: var(--info);
}

.flash-messages {
  margin-bottom: var(--space-4);
}

/* Profile Card */
.profile-card {
  background-color: var(--surface-elevated);
  border-radius: var(--radius-2xl);
  padding: var(--space-6);
  max-width: 34rem;
  width: 100%;
  margin: 0 auto;
  box-shadow: var(--shadow-lg);
  transition: background-color var(--animation-normal);
}

.profile-header {
  text-align: center;
  margin-bottom: var(--space-6);
  padding-bottom: var(--space-4);
  border-bottom: 1px solid var(--border-primary);
}

.avatar {
  width: 5.5rem;
  height: 5.5rem;
  border-radius: 50%;
  background-color: var(--color-primary-500);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-2xl);
  font-weight: var(--font-weight-bold);
  margin: 0 auto var(--space-4);
  transition: background-color var(--animation-normal);
}

.profile-details {
  margin-bottom: var(--space-6);
}

.detail-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--border-primary);
  font-size: var(--font-size-sm);
}

.detail-item:last-child {
  border-bottom: none;
}

.detail-item .label {
  font-weight: var(--font-weight-semibold);
  color: var(--text-secondary);
}

.detail-item .value {
  color: var(--text-primary);
}

.profile-actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin-top: var(--space-6);
}

/* Back link style */
.back-link {
  display: block;
  text-align: center;
  margin-top: var(--space-4);
  color: var(--color-primary-600);
  font-size: var(--font-size-sm);
}

/* Form page style */
.form-page {
  max-width: 34rem;
  width: 100%;
  margin: var(--space-8) auto;
  padding: var(--space-6);
  background-color: var(--surface-elevated);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
}

.form-page h2 {
  text-align: center;
  margin-bottom: var(--space-6);
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-bold);
}

/* Flash message list */
.flash-message-list {
  list-style: none;
  padding: 0;
  margin-bottom: var(--space-4);
}

.save-btn {
  background-color: var(--color-primary-500);
  color: white;
  border-radius: var(--radius-md);
  padding: var(--space-1) var(--space-3);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
}

.cancel-btn {
  background-color: var(--color-gray-500);
  color: white;
  border-radius: var(--radius-md);
  padding: var(--space-1) var(--space-3);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
}

.char-counter {
  font-size: var(--font-size-xs);
  color: var(--text-tertiary);
}

.char-counter.near-limit {
  color: var(--warning);
  font-weight: var(--font-weight-semibold);
}

/* Connection status styling */
.connection-status {
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
  font-weight: var(--font-weight-semibold);
  transition: background-color var(--animation-normal), color var(--animation-normal);
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-xs);
}

.connection-status::before {
  content: '';
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.connection-status.connected::before {
  background-color: var(--success);
  box-shadow: 0 0 8px var(--success);
}

.connection-status.connecting::before {
  background-color: var(--warning);
  box-shadow: 0 0 8px var(--warning);
  animation: pulse 1s infinite;
}

.connection-status.disconnected::before {
  background-color: var(--error);
  box-shadow: 0 0 8px var(--error);
}


/* Animation for message updates */
.message-updated {
  animation: highlight-update 1s ease-in-out;
}

@keyframes highlight-update {
  0%, 100% {
    background-color: var(--message-bg-other);
  }
  50% {
    background-color: color-mix(in srgb, var(--color-primary-500) 20%, var(--message-bg-other));
  }
}

@keyframes subtle-glow {
  0% {
    box-shadow: 0 0 5px 0 rgba(90, 102, 248, 0.2);
  }
  50% {
    box-shadow: 0 0 15px 2px rgba(90, 102, 248, 0.4);
  }
  100% {
    box-shadow: 0 0 5px 0 rgba(90, 102, 248, 0.2);
  }
}

/* New message indicator */
.new-message-indicator {
  position: fixed;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%);
  background-color: var(--color-primary-600);
  color: white;
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-full);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-semibold);
  box-shadow: var(--shadow-md);
  cursor: pointer;
  opacity: 0;
  animation: fade-in var(--animation-normal) forwards;
  z-index: 50;
}

/* Message deletion animation */
.fade-out {
  animation: fade-out var(--animation-normal) forwards;
}

@keyframes fade-out {
  from {
    opacity: 1;
    transform: scale(1);
  }
  to {
    opacity: 0;
    transform: scale(0.95);
    height: 0;
    margin: 0;
    padding: 0;
    border: 0;
  }
}

/* Loading state */
.loading {
  position: relative;
  pointer-events: none;
  opacity: 0.6;
}

.loading::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 1.5rem;
  height: 1.5rem;
  margin: -0.75rem 0 0 -0.75rem;
  border: 3px solid var(--color-gray-300);
  border-radius: 50%;
  border-top-color: var(--color-primary-500);
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* Disconnected state styling */
#container.disconnected {
  opacity: 0.8;
  position: relative;
}

#container.disconnected::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.1);
  pointer-events: none;
  z-index: 5;
  border-radius: var(--radius-2xl);
}

/* Notification styling */
.notification {
  position: fixed;
  top: 1.5rem;
  right: 1.5rem;
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  color: white;
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-notification);
  opacity: 0;
  transform: translateY(-20px);
  transition: opacity var(--animation-normal), transform var(--animation-normal);
}

.notification.show {
  opacity: 1;
  transform: translateY(0);
}

.notification.error {
  background-color: var(--error);
}

.notification.success {
  background-color: var(--success);
}

.notification.info {
  background-color: var(--info);
}

.notification.warning {
  background-color: var(--warning);
}


/* Animations */
@keyframes message-enter {
  from {
    opacity: 0;
    transform: translateY(15px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pulse {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes float {
  0%, 100% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-5px);
  }
}

@keyframes pulse-glow {
  0% {
    box-shadow: 0 0 0 0 rgba(90, 102, 248, 0.4);
  }
  50% {
    box-shadow: 0 0 0 10px rgba(90, 102, 248, 0.1);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(90, 102, 248, 0);
  }
}

/* Utility classes */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.hidden {
  display: none;
}

.flex {
  display: flex;
}

.items-center {
  align-items: center;
}

.justify-between {
  justify-content: space-between;
}

.gap-2 {
  gap: var(--space-2);
}

.gap-4 {
  gap: var(--space-4);
}

.m-auto {
  margin: auto;
}

.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

.mb-4 {
  margin-bottom: var(--space-4);
}

.mt-4 {
  margin-top: var(--space-4);
}

/* Standardized focus states */
:focus-visible,
body.using-keyboard :focus-visible {
  outline: var(--ring-width) solid var(--ring-color);
  outline-offset: var(--ring-offset-width);
}

/* Standardized form inputs */
.form-group input,
#message,
.edit-input {
  font-family: inherit;
  color: var(--text-primary);
  background-color: var(--surface-elevated);
  border: 1px solid var(--border-primary);
  transition: border-color var(--animation-fast),
              box-shadow var(--animation-fast),
              background-color var(--animation-normal);
}

.form-group input:focus,
#message:focus,
.edit-input:focus {
  border-color: var(--border-focus);
  box-shadow: 0 0 0 var(--ring-width) var(--ring-color);
  outline: 0;
}

/* Consistent button styles */
.btn,
#send-btn,
.btn.secondary.small,
#mode-toggle {
  position: relative;
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-sm);
  cursor: pointer;
  transition: background-color var(--animation-fast),
              border-color var(--animation-fast),
              color var(--animation-fast),
              box-shadow var(--animation-fast),
              transform var(--animation-fast);
}

/* Standardized animations */
@keyframes message-enter {
  from {
    opacity: 0;
    transform: translateY(15px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
}

@keyframes pulse-warning {
  0%, 100% {
    transform: scaleX(1) scaleY(1);
  }
  50% {
    transform: scaleX(1.05) scaleY(1.05);
    transform-origin: center;
  }
}

/* Consistent card styling */
#container,
.profile-card,
.form-page {
  background-color: var(--surface-elevated);
  border-radius: var(--radius-2xl);
  box-shadow: var(--shadow-lg);
  transition: all var(--animation-normal);
}

/* Consistent scrollbar styling */
#chat-log::-webkit-scrollbar {
  width: 10px;
  background-color: transparent;
}

#chat-log::-webkit-scrollbar-track {
  background-color: color-mix(in srgb, var(--surface-tertiary) 80%, transparent);
  border-radius: var(--radius-full);
  margin: 4px 0;
}

#chat-log::-webkit-scrollbar-thumb {
  background-color: color-mix(in srgb, var(--color-primary-500) 40%, var(--color-gray-400));
  border-radius: var(--radius-full);
  border: 2px solid transparent;
  background-clip: padding-box;
  transition: background-color var(--animation-fast);
}

/* Standardized status indicators */
.connection-status,
#char-count.near-limit,
.char-counter.near-limit {
  font-weight: var(--font-weight-semibold);
}

/* Consistent notification styling */
.notification,
.new-message-indicator,
.flash-message {
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  border-radius: var(--radius-md);
}

body, h1 {
  color: var(--text-primary);
}

#container::before, .edit-container::before {
  height: 4px;
  background: linear-gradient(90deg, var(--color-primary-500), var(--accent-purple), var(--accent-teal));
}

/* Consolidated #chat-form, #chat-log, #message properties */

/* Removed redundant background definitions */
/* Removed:
.dark-mode .edit-container::before {
  background: linear-gradient(90deg, var(--color-primary-500), var(--accent-purple), var(--accent-teal));
}
as it's identical to the non-dark-mode version
*/

/* Consolidated content: ''; position: absolute; left: 0; width: 100%; from these selectors */
#container::after, #container::before, .edit-container::before, .user-panel::before {
  content: '';
  position: absolute;
  left: 0;
  width: 100%;
}

/* Consolidated backdrop-filter */
#chat-form, .user-panel {
  backdrop-filter: blur(8px);
}

/* Consolidated font-family: inherit */
#message, .edit-input {
  resize: vertical;
  font-family: inherit;
}

/* Consolidated box-shadow */
#chat-form, #chat-log, #message {
  box-shadow: var(--shadow-inner);
}

/* Consolidated padding */
.edit-input, .message.editing .message-content {
  padding: var(--space-2);
}

/* Consolidated transition */
#message, #send-btn {
  transition: all var(--animation-fast);
  min-height: 3rem;
}

/* Consolidated backdrop-filter */
#message, #mode-toggle {
  backdrop-filter: blur(4px);
}

/* Consolidated text-align */
.back-link, .flash-message, .form-footer, .form-page h2, .profile-header, .subtitle, h1 {
  text-align: center;
}

/* Consolidated pointer-events */
#char-count, #container::after, .btn:disabled, .loading, .user-panel::before {
  pointer-events: none;
}

/* Consolidated white-space */
.btn, .sr-only {
  white-space: nowrap;
}

/* Consolidated font-family */
#message, .btn, .edit-input, .form-group input {
  font-family: inherit;
}

/* Consolidated font-weight */
#active-users, .font-medium {
  font-weight: var(--font-weight-medium);
}

/* Consolidated font-weight */
#char-count.near-limit, .char-counter.near-limit, .connection-status, .font-semibold {
  font-weight: var(--font-weight-semibold);
}

/* Consolidated text color */
.dark-mode .message-content, .detail-item .value, .text-primary {
  color: var(--text-primary);
}

/* Consolidated text color */
#char-count, .dark-mode .message-header, .text-tertiary {
  color: var(--text-tertiary);
}

/* Standardized padding */
#chat-log, #message, .message, .user-panel {
  padding: var(--space-4) var(--space-5);
}

/* Consolidated position */
#chat-form, #chat-log, #message, .message, .user-panel, .username-display {
  position: relative;
}

/* Consolidated display/gap attributes */
#mode-toggle, .message-header {
  display: flex;
  margin-bottom: var(--space-2);
}

/* Consolidated font weights */
.message-header .username, .username-display {
  font-weight: var(--font-weight-semibold);
}

/* Consolidated color variables */
.dark-mode #chat-form, .dark-mode .btn-outline, .dark-mode .message {
  border-color: var(--border-primary);
}

/* Consolidated color */
#message, .form-group input, .form-group label {
  color: var(--text-primary);
}

/* Consolidated font size */
.btn-sm, .btn.secondary.small {
  font-size: var(--font-size-xs);
}

/* Consolidated transition */
.avatar, .profile-card {
  transition: background-color var(--animation-normal);
}

/* Consolidated font weights */
.avatar, .form-page h2 {
  font-weight: var(--font-weight-bold);
}

/* Consolidated padding/font-size */
.cancel-btn, .connection-status, .save-btn {
  padding: var(--space-1) var(--space-3);
  font-size: var(--font-size-xs);
}

/* Consolidated border-radius/font-weight */
.connection-status, .new-message-indicator {
  border-radius: var(--radius-full);
  font-weight: var(--font-weight-semibold);
}

/* Consolidated focus */
:focus-visible, body.using-keyboard :focus-visible {
  outline: var(--ring-width) solid var(--ring-color);
  outline-offset: var(--ring-offset-width);
}

/* Consolidated form input styling */
#message, .edit-input, .form-group input {
  font-family: inherit;
  color: var(--text-primary);
  background-color: var(--surface-elevated);
  border: 1px solid var(--border-primary);
  transition: border-color var(--animation-fast), box-shadow var(--animation-fast), background-color var(--animation-normal);
}

/* Consolidated focus states */
#message:focus, .edit-input:focus, .form-group input:focus {
  border-color: var(--border-focus);
  box-shadow: 0 0 0 var(--ring-width) var(--ring-color);
  outline: 0;
}

/* Consolidated button styling */
#mode-toggle, #send-btn, .btn, .btn.secondary.small {
  position: relative;
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-sm);
  cursor: pointer;
  transition: background-color var(--animation-fast), border-color var(--animation-fast), color var(--animation-fast), box-shadow var(--animation-fast), transform var(--animation-fast);
}

/* Consolidated container styles */
#container, .form-page, .profile-card {
  background-color: var(--surface-elevated);
  border-radius: var(--radius-2xl);
  box-shadow: var(--shadow-lg);
  transition: all var(--animation-normal);
}

/* Consolidated notification styling */
.flash-message, .new-message-indicator, .notification {
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  border-radius: var(--radius-md);
}

/* === Enhanced Touch Target Sizes === */
@media (max-width: 768px) {
  .btn, 
  .action-btn, 
  #mode-toggle,
  .reply-reference {
    min-height: 2.5rem;
    padding: var(--space-2) var(--space-3);
  }
  
  .message-actions {
    opacity: 1;
    background: color-mix(in srgb, var(--surface-elevated) 90%, transparent);
    backdrop-filter: blur(4px);
  }
  
  #mode-toggle {
    margin-top: var(--space-3);
    width: 100%;
    justify-content: center;
  }
}

/* === Improved Message Layout for Mobile === */
@media (max-width: 768px) {
  .message-content {
    font-size: var(--font-size-base);
    line-height: 1.5;
  }
  
  .message-header {
    flex-wrap: wrap;
    gap: var(--space-1);
  }
  
  .reply-container {
    max-width: 100%;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }
  
  .reply-container::-webkit-scrollbar {
    display: none;
  }
}

/* === Better Form Styling for Mobile === */
@media (max-width: 768px) {
  .form-group input {
    min-height: 2.75rem;
    padding: var(--space-2);
    border-radius: var(--radius-md);
    font-size: var(--font-size-base);
  }
  
  .form-actions {
    flex-direction: column;
    gap: var(--space-2);
  }
  
  .form-page {
    width: calc(100% - var(--space-4));
    padding: var(--space-4);
    border-radius: var(--radius-xl);
  }
}

/* === Safe Area Insets for Modern Mobile Browsers === */
@supports (padding: max(0px)) {
  body {
    padding-left: max(var(--space-0), env(safe-area-inset-left));
    padding-right: max(var(--space-0), env(safe-area-inset-right));
    padding-bottom: max(var(--space-0), env(safe-area-inset-bottom));
  }
  
  .notification {
    right: max(1.5rem, env(safe-area-inset-right));
  }
}

/* === Fixed Position Elements for Mobile === */
@media (max-width: 768px) {
  #char-count {
    position: absolute;
    bottom: calc(100% + var(--space-2));
    right: var(--space-0);
    z-index: 5;
    transform-origin: bottom right;
    font-size: var(--font-size-xs);
    padding: var(--space-1);
  }
  
  #chat-form {
    position: sticky;
    bottom: 0;
    z-index: 10;
    margin: var(--space-2) 0 0 0;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  }
}

/* === Fix Dark Mode on Mobile === */
@media (max-width: 768px) {
  .dark-mode #chat-form,
  .dark-mode .message-actions {
    background: color-mix(in srgb, var(--color-dark-bg-secondary) 95%, transparent);
  }
  
  .dark-mode #message {
    background-color: color-mix(in srgb, var(--color-dark-bg-elevated) 98%, transparent);
  }
}

/* === Better Scrollbar for Touch Devices === */
@media (hover: none) {
  #chat-log::-webkit-scrollbar {
    width: 6px;
  }
  
  #chat-log::-webkit-scrollbar-thumb {
    border-width: 1px;
  }
}

/* === Improved Focus States for Touch === */
@media (hover: none) {
  :focus-visible {
    outline-width: 2px;
  }
  
  input:focus, 
  #message:focus,
  .btn:focus {
    outline: none;
    box-shadow: 0 0 0 2px var(--ring-color);
  }
}

/* === Fix Viewport Height Issues on Mobile === */
@media (max-width: 768px) {
  :root {
    --vh: 1vh;
  }
  
  #chat-log {
    max-height: calc(var(--vh, 1vh) * 65);
  }
}

/* Execute this in JavaScript to fix mobile viewport issues:
document.documentElement.style.setProperty('--vh', `${window.innerHeight * 0.01}px`);
window.addEventListener('resize', () => {
  document.documentElement.style.setProperty('--vh', `${window.innerHeight * 0.01}px`);
});
*/

/* === Add better tap states === */
@media (hover: none) {
  .btn:active,
  .action-btn:active,
  #send-btn:active {
    transform: scale(0.96);
  }
}