/* 全站助手面板。沿用 style.css 里的颜色和字体变量。 */
:root{--assistant-width:420px;--assistant-ok:#50825c}
.assistant-launcher{position:fixed;z-index:40;right:max(22px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));display:inline-flex;align-items:center;gap:9px;height:50px;padding:0 20px 0 8px;border-radius:999px;background:var(--ink);box-shadow:0 12px 30px rgba(41,39,32,.24);color:#fff;font:500 15px var(--serif);animation:assistant-rise .5s .3s both cubic-bezier(.2,.8,.2,1)}
.assistant-launcher:hover{background:#3a372e;transform:translateY(-2px)}
.assistant-launcher-mark,.assistant-seal{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;font-size:15px;font-weight:700}
body.assistant-open .assistant-launcher{opacity:0;pointer-events:none;transform:translateY(12px)}
.assistant-backdrop{position:fixed;z-index:45;inset:0;background:rgba(41,39,32,.36)}
.assistant-panel{position:fixed;z-index:50;top:0;right:0;bottom:0;display:flex;flex-direction:column;width:var(--assistant-width);border-left:1px solid var(--line);background:var(--paper);background-image:radial-gradient(rgba(105,84,50,.07) .65px,transparent .65px),linear-gradient(180deg,#fbf7ef,var(--paper) 40%);background-size:8px 8px,auto;box-shadow:-18px 0 50px rgba(70,51,29,.12);animation:assistant-slide .32s cubic-bezier(.2,.8,.2,1)}
.assistant-panel[hidden],.assistant-backdrop[hidden]{display:none}
@media(min-width:841px){.assistant-backdrop{display:none!important}body.assistant-open main,body.assistant-open footer,body.assistant-open .site-header{margin-right:var(--assistant-width);transition:margin .32s}}
.assistant-head{padding:16px 18px 12px;border-bottom:1px solid var(--line);background:rgba(250,247,240,.9)}
.assistant-title-row{display:flex;align-items:center;justify-content:space-between}
.assistant-head h2{display:flex;align-items:center;gap:10px;margin:0;font-size:18px;letter-spacing:.06em}
.assistant-seal{width:28px;height:28px;font-size:13px;border-radius:6px;transform:rotate(-4deg)}
.assistant-head-actions{display:flex;gap:4px}
.assistant-icon-button{width:34px;height:34px;padding:0;border-radius:50%;background:transparent;color:var(--muted);font-size:20px;line-height:1}
.assistant-icon-button:hover{background:var(--paper-deep);box-shadow:none;color:var(--accent);transform:none}
.assistant-context{display:inline-flex;align-items:center;gap:4px;max-width:100%;margin-top:10px;padding:2px 4px 2px 11px;border:1px solid #d8c3aa;border-radius:999px;background:#fbefe3;color:var(--accent-dark);font-size:12px}
.assistant-context[hidden]{display:none}
.assistant-context-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.assistant-context button{width:20px;height:20px;padding:0;border-radius:50%;background:transparent;color:var(--muted);font-size:14px;line-height:1}
.assistant-context button:hover{background:#efd1bb;box-shadow:none;transform:none}
.assistant-log{flex:1;overflow-y:auto;padding:18px 18px 8px;overscroll-behavior:contain}
.assistant-empty{padding:24px 4px}
.assistant-empty-title{margin:0;font-size:22px;font-weight:700}
.assistant-empty-lead{margin:6px 0 18px;color:var(--muted);font-size:14px}
.assistant-suggestions{display:grid;gap:8px}
.assistant-suggestions button{padding:11px 14px;border:1px solid var(--line);border-radius:10px;background:rgba(255,253,248,.9);color:var(--ink);font:14px var(--serif);text-align:left;opacity:0;animation:assistant-rise .4s both}
.assistant-suggestions button:nth-child(2){animation-delay:.06s}.assistant-suggestions button:nth-child(3){animation-delay:.12s}
.assistant-suggestions button:hover{border-color:var(--accent);background:#fff7f1;box-shadow:none;color:var(--accent);transform:translateX(3px)}
.assistant-msg{margin:0 0 14px}
/* 入场动画只给新插入的消息，流式更新内容时不会重播 */
.assistant-msg.is-entering{animation:assistant-rise .25s both}
.assistant-msg.user{display:flex;justify-content:flex-end}
.assistant-msg.user .assistant-bubble{max-width:85%;padding:9px 14px;border-radius:14px 14px 3px 14px;background:var(--ink);color:#fff}
.assistant-msg.bot .assistant-bubble{padding:2px 2px 2px 14px;border-left:2px solid var(--accent)}
.assistant-bubble{font-size:15px;line-height:1.75;overflow-wrap:anywhere}
.assistant-bubble p{margin:0 0 8px}.assistant-bubble p:last-child{margin-bottom:0}
.assistant-bubble ul,.assistant-bubble ol{margin:4px 0 8px;padding-left:20px}
.assistant-bubble a{color:var(--accent);text-decoration:underline;text-decoration-color:#e3b9a3;text-underline-offset:3px}
.assistant-msg.bot.is-streaming .assistant-bubble:after{display:inline-block;width:7px;height:15px;margin-left:3px;background:var(--accent);content:"";vertical-align:-2px;animation:assistant-blink 1s steps(2) infinite}
.assistant-status{margin:4px 0 0 14px;color:var(--muted);font-size:12px}
.assistant-status:empty{display:none}
.assistant-msg-meta{margin:6px 0 0 14px;color:var(--muted);font-size:12px}
.assistant-msg.is-error .assistant-bubble{border-left-color:#aa3922;color:#aa3922}
/* 题目卡片 */
.assistant-quiz{margin:10px 0 4px 14px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.assistant-quiz-question{margin:0 0 10px;font-size:14px;line-height:1.7}
.assistant-quiz-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.assistant-quiz-options button{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:14px var(--serif);text-align:left}
.assistant-quiz-options button b{color:var(--accent);font:700 12px var(--mono)}
.assistant-quiz-options button:hover:not(:disabled){border-color:var(--accent);background:#fff7f1;box-shadow:none;transform:none}
.assistant-quiz-options button:disabled{cursor:default;opacity:.65}
.assistant-quiz-options button.is-picked{opacity:1;border-color:var(--ink)}
.assistant-quiz-options button.is-correct{opacity:1;border-color:var(--assistant-ok);background:#e5eee1}
.assistant-quiz-options button.is-wrong{opacity:1;border-color:var(--accent);background:#f6e1d7}
/* 输入区 */
.assistant-notice{margin:0 18px 6px;padding:8px 12px;border-radius:8px;background:#fbefe3;color:var(--accent-dark);font-size:13px}
.assistant-notice[hidden]{display:none}
.assistant-form{display:flex;align-items:flex-end;gap:8px;padding:12px 14px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:rgba(250,247,240,.95)}
.assistant-form textarea{flex:1;min-height:44px;max-height:140px;padding:10px 13px;border:1px solid #cfbfaa;border-radius:12px;outline:0;background:var(--card);color:var(--ink);font:16px/1.5 var(--serif);resize:none}
.assistant-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(187,76,42,.12)}
.assistant-send,.assistant-stop{flex:none;height:44px;padding:0 16px;border-radius:12px}
.assistant-stop{background:var(--ink)}
.assistant-send[hidden],.assistant-stop[hidden]{display:none}
.assistant-send:disabled{cursor:not-allowed;opacity:.5;transform:none}
/* 页面里的“问助手”快捷按钮 */
.assistant-ask-row{margin:-12px 0 20px}
.assistant-ask{padding:5px 13px;border:1px solid #d8c3aa;border-radius:999px;background:rgba(255,253,248,.8);color:var(--accent);font:13px var(--serif)}
.assistant-ask:before{margin-right:6px;content:"问";font-weight:700}
.assistant-ask:hover{border-color:var(--accent);background:#fff7f1;box-shadow:none;color:var(--accent-dark)}
.assistant-ask:disabled{display:none}
@media(max-width:840px){
  /* 不支持 dvh 的浏览器先用 100vh 兜底，后一条声明在支持时覆盖 */
  .assistant-panel{top:auto;left:0;width:auto;height:100vh;height:min(100dvh,var(--assistant-vh,100dvh));border-left:0;border-radius:0;box-shadow:none;animation-name:assistant-up}
  /* 有 visualViewport 时按可见区域定位：iOS 弹出键盘后可见区域会上移 offsetTop */
  .assistant-vv .assistant-panel{top:var(--assistant-top,0px);bottom:auto;height:var(--assistant-vh,100vh)}
  .assistant-panel:focus{outline:0}
  body.assistant-lock{overflow:hidden}
  .assistant-launcher{height:46px;padding-right:16px}
  .assistant-launcher-text{font-size:14px}
  .assistant-head{padding-top:calc(12px + env(safe-area-inset-top))}
}
@keyframes assistant-slide{from{transform:translateX(30px);opacity:0}}
@keyframes assistant-up{from{transform:translateY(40px);opacity:0}}
@keyframes assistant-rise{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
@keyframes assistant-blink{to{visibility:hidden}}
@media(prefers-reduced-motion:reduce){.assistant-launcher,.assistant-panel,.assistant-msg.is-entering,.assistant-suggestions button{animation:none;opacity:1}.assistant-msg.bot.is-streaming .assistant-bubble:after{animation:none}}
