Format: text/css
⬇ Download File (4.0 KB)
   1  :root {
   2    /* Dark mode variables (default) */
   3    --bg-color: #1a1a1a;
   4    --topbar-bg: #212121;
   5    --text-color: #7ee787;
   6    --text-muted: #9e9e9e;
   7    --content-bg: #1a1a1a;
   8    --assistant-msg-bg: #262b26;
   9    --assistant-msg-color: #9ef1a0;
  10    --user-msg-bg: #15354f;
  11    --user-msg-color: #a0f1f1;
  12    --btn-send-bg: #0d6efd;
  13    --btn-send-hover-bg: #0b5ed7;
  14  }
  15  body.light-mode {
  16    /* Light mode overrides */
  17    --bg-color: #f8f9fa;
  18    --topbar-bg: #e9ecef;
  19    --text-color: #0d6efd;
  20    --text-muted: #6c757d;
  21    --content-bg: #f8f9fa;
  22    --assistant-msg-bg: #e2ffe2;
  23    --assistant-msg-color: #198754;
  24    --user-msg-bg: #cce5ff;
  25    --user-msg-color: #0d6efd;
  26    --btn-send-bg: #0d6efd;
  27    --btn-send-hover-bg: #0b5ed7;
  28  }
  29  
  30  /* reset & base */
  31  * { box-sizing: border-box; margin: 0; padding: 0; }
  32  body {
  33    font-family: -apple-system, BlinkMacSystemFont, sans-serif;
  34    background: var(--bg-color);
  35    color: var(--text-color);
  36    height: 100vh;
  37  }
  38  
  39  /* main container */
  40  .chat-app {
  41    display: flex;
  42    flex-direction: column;
  43    height: 100%;
  44    width: 100%;
  45    max-width: 100%;
  46    margin: 0;
  47    background: var(--content-bg);
  48    animation: fadeIn 0.3s ease-in;
  49  }
  50  
  51  /* header */
  52  .chat-header {
  53    background: var(--topbar-bg);
  54    color: var(--text-color);
  55    padding: 10px;
  56    display: flex;
  57    align-items: center;
  58    justify-content: space-between;
  59    animation: slideDown 0.4s ease-out;
  60  }
  61  .chat-header h1 { font-size: 1.2rem; }
  62  .chat-header button {
  63    background: transparent;
  64    border: none;
  65    color: var(--text-color);
  66    font-size: 1.2rem;
  67    cursor: pointer;
  68  }
  69  
  70  /* messages area */
  71  #chat-container {
  72    flex: 1;
  73    overflow-y: auto;
  74    padding: 10px;
  75    background: var(--content-bg);
  76    scroll-behavior: smooth;
  77  }
  78  .message {
  79    display: flex;
  80    margin: 5px 0;
  81    animation: fadeInUp 0.3s ease;
  82  }
  83  .message.user { justify-content: flex-end; }
  84  .message.assistant { justify-content: flex-start; }
  85  
  86  /* bubbles */
  87  .bubble {
  88    max-width: 80%;
  89    padding: 8px 12px;
  90    border-radius: 18px;
  91    line-height: 1.4;
  92    word-wrap: break-word;
  93    position: relative;
  94  }
  95  .message.user .bubble {
  96    background: var(--user-msg-bg);
  97    color: var(--user-msg-color);
  98    border-bottom-right-radius: 4px;
  99  }
 100  .message.assistant .bubble {
 101    background: var(--assistant-msg-bg);
 102    color: var(--assistant-msg-color);
 103    border-bottom-left-radius: 4px;
 104  }
 105  
 106  /* typing animation dots */
 107  .typing .bubble::after {
 108    content: '';
 109    display: inline-block;
 110    width: 6px;
 111    height: 6px;
 112    margin-left: 4px;
 113    border-radius: 50%;
 114    background: var(--text-muted);
 115    box-shadow: 10px 0 0 var(--text-muted), 20px 0 0 var(--text-muted);
 116    animation: blinkDots 1s infinite;
 117  }
 118  
 119  /* input form */
 120  #chat-form {
 121    display: flex;
 122    padding: 6px;
 123    background: var(--topbar-bg);
 124    border-top: 1px solid var(--text-muted);
 125    animation: slideUp 0.4s ease-out;
 126  }
 127  #message-input {
 128    flex: 1;
 129    padding: 10px 12px;
 130    border: none;
 131    border-radius: 20px;
 132    background: var(--content-bg);
 133    color: var(--text-color);
 134    outline: none;
 135    margin-right: 6px;
 136  }
 137  #chat-form button {
 138    background: var(--btn-send-bg);
 139    border: none;
 140    border-radius: 20px;
 141    padding: 10px 16px;
 142    color: #fff;
 143    cursor: pointer;
 144  }
 145  #chat-form button:hover {
 146    background: var(--btn-send-hover-bg);
 147  }
 148  
 149  /* animations */
 150  @keyframes blinkDots {
 151    0%, 20% { background: var(--text-muted); box-shadow: 10px 0 0 var(--text-muted), 20px 0 0 var(--text-muted); }
 152    40% { background: transparent; box-shadow: 10px 0 0 var(--text-muted), 20px 0 0 var(--text-muted); }
 153    60% { background: transparent; box-shadow: 10px 0 0 transparent, 20px 0 0 var(--text-muted); }
 154    80%,100% { background: var(--text-muted); box-shadow: 10px 0 0 var(--text-muted), 20px 0 0 var(--text-muted); }
 155  }
 156  @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
 157  @keyframes slideDown { from { transform: translateY(-20px); } to { transform: translateY(0); } }
 158  @keyframes slideUp { from { transform: translateY(20px); } to { transform: translateY(0); } }
 159  @keyframes fadeInUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
 160  
 161  /* responsive */
 162  @media (max-width: 600px) {
 163    .chat-app {
 164      width: 100%;
 165      max-width: 100%;
 166    }
 167    .bubble {
 168      max-width: 90%;
 169    }
 170  }