  :root { --bg:#f6f7f9; --card:#fff; --text:#1d2433; --muted:#6b7385; --line:#e3e6ec; --accent:#2f5bd3;
          --user:#e8eefc; --warn:#fff6e0; --warn-line:#f0c96a; --crisis:#fdecec; --crisis-line:#e58b8b; }
  @media (prefers-color-scheme: dark) {
    :root { --bg:#14171d; --card:#1c2029; --text:#e6e9ef; --muted:#9aa3b5; --line:#2c3240; --accent:#7ea2ff;
            --user:#243150; --warn:#3a3220; --warn-line:#8a6d2a; --crisis:#3d2224; --crisis-line:#a0484d; }
  }
  * { box-sizing: border-box; }
  body { margin:0; background:var(--bg); color:var(--text); font:16px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif; }
  header { position:sticky; top:0; background:var(--card); border-bottom:1px solid var(--line); padding:12px 16px;
           display:flex; align-items:center; gap:12px; z-index:1; }
  header h1 { font-size:18px; margin:0; flex:1; }
  header small { color:var(--muted); font-weight:400; }
  button { font:inherit; cursor:pointer; border-radius:8px; border:1px solid var(--line); background:var(--card);
           color:var(--text); padding:8px 14px; }
  button.primary { background:var(--accent); border-color:var(--accent); color:#fff; }
  button:disabled { opacity:.5; cursor:default; }
  main { max-width:820px; margin:0 auto; padding:16px 16px 140px; }
  .notice { color:var(--muted); font-size:14px; margin:8px 0 16px; }
  .msg { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:12px 16px; margin:12px 0; }
  .msg.user { background:var(--user); margin-left:15%; white-space:pre-wrap; }
  .msg h3 { font-size:16px; margin:14px 0 6px; }
  .msg h3:first-child { margin-top:0; }
  .msg ul { margin:6px 0; padding-left:22px; }
  .tag { display:inline-block; font-size:12px; color:var(--muted); border:1px solid var(--line); border-radius:999px;
         padding:1px 8px; margin-bottom:8px; }
  .box { border-radius:10px; padding:10px 14px; margin:8px 0; font-size:15px; }
  .crisis { background:var(--crisis); border:1px solid var(--crisis-line); }
  .warn { background:var(--warn); border:1px solid var(--warn-line); }
  .cites { font-size:14px; border-top:1px solid var(--line); margin-top:10px; padding-top:8px; }
  .cites ol { margin:4px 0; padding-left:22px; }
  .disclaimer { font-size:13px; color:var(--muted); margin-top:8px; }
  sup a { text-decoration:none; color:var(--accent); }
  a { color:var(--accent); }
  .rate { margin-top:8px; display:flex; gap:6px; align-items:center; font-size:14px; color:var(--muted); }
  .rate button { padding:2px 10px; }
  form { position:fixed; left:0; right:0; bottom:0; background:var(--card); border-top:1px solid var(--line); padding:12px 16px; }
  form .row { max-width:820px; margin:0 auto; display:flex; gap:8px; }
  textarea { flex:1; font:inherit; color:var(--text); background:var(--bg); border:1px solid var(--line); border-radius:10px;
             padding:10px 12px; resize:none; height:64px; }
  .typing::after { content:"▍"; animation:blink 1s steps(1) infinite; }
  @keyframes blink { 50% { opacity:0; } }
