/* vemmi: mascot + on-page helper (v4 experiment). Transform/opacity only. */
:root{--vm-spring:cubic-bezier(.34,1.56,.64,1);--vm-soft:cubic-bezier(.22,1,.36,1);--vm-breathe:3.6s;--vm-z:60;--vm-size:60px}
.vm-avatar{display:block;overflow:visible}
.vm-avatar *{transform-box:fill-box}
.vm-body{transform-origin:50% 100%;animation:vm-breathe var(--vm-breathe) ease-in-out infinite}
.vm-roof{transform-origin:50% 100%;transition:transform 420ms var(--vm-spring)}
.vm-eyes{transition:transform 420ms var(--vm-soft)}
.vm-eye{transform-origin:50% 50%;transition:transform 140ms var(--vm-soft)}
.vm-smile{transition:opacity 240ms var(--vm-soft)}
.vm-blink .vm-eye{transform:scaleY(.08)}
@keyframes vm-breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.025,.975)}}
/* states */
.vm-avatar.is-think .vm-roof{transform:rotate(-7deg) translateY(-1px)}
.vm-avatar.is-think .vm-eyes{transform:translate(2px,-3px)!important}
.vm-avatar.is-happy .vm-eye{transform:scaleY(.38) translateY(2px)}
.vm-avatar.is-happy .vm-smile{opacity:1}
.vm-launcher:hover .vm-roof,.vm-launcher:focus-visible .vm-roof{animation:vm-roofbounce 520ms var(--vm-spring)}
@keyframes vm-roofbounce{0%{transform:none}35%{transform:translateY(-3px) scaleX(1.04)}70%{transform:translateY(.5px)}100%{transform:none}}

/* launcher */
.vm-dock{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:var(--vm-z);display:flex;align-items:center;gap:10px;transition:transform 420ms var(--vm-soft),opacity 300ms var(--vm-soft)}
.vm-dock.is-pre{transform:translateY(120%) rotate(8deg);opacity:0}
.vm-dock.is-tucked{transform:translateY(calc(100% + 24px));opacity:0;pointer-events:none}
.vm-dock.is-open{transform:scale(.85);opacity:0;pointer-events:none}
.vm-launcher{width:var(--vm-size);height:var(--vm-size);border-radius:20px;border:1px solid var(--line);background:var(--surface);box-shadow:0 1px 2px rgb(10 26 58/.08),0 14px 34px -12px rgb(10 26 58/.35);display:grid;place-items:center;cursor:pointer;padding:6px;transition:transform 320ms var(--vm-spring),box-shadow 320ms var(--vm-soft)}
.vm-launcher:hover{transform:translateY(-2px)}
.vm-launcher:active{transform:scale(.95)}
.vm-launcher:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.vm-launcher .vm-avatar{width:46px;height:46px}
.vm-pill{order:-1;font:500 .85rem/1 var(--font-sans);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:.6rem .9rem;box-shadow:var(--shadow);white-space:nowrap;cursor:pointer;transform-origin:100% 50%;transition:transform 420ms var(--vm-spring),opacity 260ms var(--vm-soft)}
.vm-pill[hidden]{display:none}
.vm-pill.is-out{transform:scale(.6) translateX(12px);opacity:0;pointer-events:none}
.vm-wave .vm-body{animation:vm-wave 1100ms var(--vm-spring) 1,vm-breathe var(--vm-breathe) ease-in-out 1100ms infinite}
@keyframes vm-wave{0%{transform:translateY(30%) rotate(10deg)}45%{transform:translateY(-6%) rotate(-6deg)}65%{transform:rotate(5deg)}82%{transform:rotate(-3deg)}100%{transform:none}}

/* panel */
.vm-panel{position:fixed;z-index:calc(var(--vm-z) + 1);right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));width:min(380px,calc(100vw - 32px));height:min(600px,calc(100dvh - 96px));display:flex;flex-direction:column;background-color:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:24px;box-shadow:0 2px 4px rgb(10 26 58/.06),0 30px 80px -24px rgb(10 26 58/.45);overflow:hidden;transform-origin:100% 100%;backdrop-filter:none;transition:transform 460ms var(--vm-spring),opacity 260ms var(--vm-soft),visibility 0s linear 460ms}
.vm-panel:not(.is-open){transform:translateY(16px) scale(.94);opacity:0;visibility:hidden;pointer-events:none}
.vm-panel.is-open{opacity:1;background-color:var(--surface);transition-delay:0s}
.vm-head{display:flex;align-items:center;gap:12px;padding:14px 14px 14px 16px;border-bottom:1px solid var(--line);background-color:var(--surface)}
.vm-head .vm-avatar{width:40px;height:40px;flex:0 0 auto}
.vm-head b{display:block;font-size:1rem;letter-spacing:-.02em}
.vm-head span{display:block;font-size:.78rem;color:var(--ink-3)}
.vm-close{margin-left:auto;width:40px;height:40px;border-radius:12px;border:1px solid transparent;background:transparent;color:var(--ink-2);cursor:pointer;display:grid;place-items:center;transition:background-color var(--dur-hover) var(--ease-hover)}
.vm-close:hover{background:var(--surface-2)}.vm-close:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.vm-log{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:16px;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth;background-color:var(--surface)}
.vm-msg{max-width:86%;padding:.7rem .9rem;border-radius:18px;font-size:.92rem;line-height:1.5;overflow-wrap:anywhere;animation:vm-in 420ms var(--vm-spring) both}
.vm-msg p{margin:0;color:inherit;max-width:none}.vm-msg p+p{margin-top:.4rem}
.vm-bot{align-self:flex-start;background:var(--surface-2);border-bottom-left-radius:6px}
.vm-user{align-self:flex-end;background:var(--primary);color:var(--primary-ink);border-bottom-right-radius:6px}
.vm-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:.6rem}
.vm-links a{font:500 .8rem/1 var(--font-sans);text-decoration:none;color:var(--accent);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:.5rem .7rem;min-height:32px;display:inline-flex;align-items:center;gap:.3rem;transition:border-color var(--dur-hover) var(--ease-hover)}
.vm-links a:hover{border-color:var(--accent)}.vm-links a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
@keyframes vm-in{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}
.vm-typing{display:inline-flex;gap:4px;padding:.85rem 1rem}
.vm-typing i{width:6px;height:6px;border-radius:50%;background:var(--ink-3);animation:vm-dot 1s var(--vm-soft) infinite}
.vm-typing i:nth-child(2){animation-delay:.15s}.vm-typing i:nth-child(3){animation-delay:.3s}
@keyframes vm-dot{0%,80%,100%{transform:translateY(0);opacity:.4}40%{transform:translateY(-4px);opacity:1}}
.vm-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 10px}
.vm-chip{font:500 .8rem/1.2 var(--font-sans);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:.5rem .75rem;min-height:34px;cursor:pointer;transition:border-color var(--dur-hover) var(--ease-hover),transform 300ms var(--vm-spring)}
.vm-chip:hover{border-color:var(--accent);transform:translateY(-1px)}.vm-chip:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.vm-chips,.vm-input{background-color:var(--surface)}
.vm-input{border-top:1px solid var(--line);padding:10px 12px calc(10px + env(safe-area-inset-bottom));display:grid;gap:6px}
.vm-row{display:flex;gap:8px;align-items:center}
.vm-row input{flex:1;min-width:0;height:44px;border-radius:14px;border:1px solid var(--line);background:var(--bg);color:var(--ink);padding:0 .9rem;font:400 .95rem var(--font-sans)}
.vm-row input:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-color:transparent}
.vm-send{width:44px;height:44px;flex:0 0 auto;border-radius:14px;border:0;background:var(--primary);color:var(--primary-ink);cursor:pointer;display:grid;place-items:center;transition:transform 300ms var(--vm-spring),opacity 200ms}
.vm-send:hover{transform:translateY(-1px)}.vm-send:active{transform:scale(.94)}.vm-send:disabled{opacity:.4;cursor:default;transform:none}
.vm-send:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.vm-note{font-size:.72rem;color:var(--ink-3);margin:0;max-width:none}
.vm-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[data-theme="dark"] .vm-launcher{box-shadow:0 1px 2px rgb(0 0 0/.4),0 14px 34px -12px rgb(0 0 0/.8)}
[data-theme="dark"] .vm-panel{box-shadow:0 30px 80px -24px rgb(0 0 0/.85)}
[data-theme="dark"] .vm-shadow ellipse{fill:#000;opacity:.35}
/* mobile bottom sheet */
@media (max-width:640px){
  :root{--vm-size:54px}
  .vm-panel{left:0;right:0;bottom:0;width:100%;height:min(82dvh,640px);border-radius:24px 24px 0 0;border-bottom:0;transform-origin:50% 100%}
  .vm-panel:not(.is-open){transform:translateY(100%)}
  .vm-panel::before{content:"";position:absolute;top:6px;left:50%;width:36px;height:4px;margin-left:-18px;border-radius:4px;background:var(--line)}
  .vm-pill{display:none}
}
@media (prefers-reduced-motion:reduce){
  .vm-body,.vm-wave .vm-body,.vm-roof,.vm-launcher:hover .vm-roof,.vm-typing i,.vm-msg{animation:none!important}
  .vm-dock,.vm-panel,.vm-roof,.vm-eyes,.vm-eye,.vm-launcher,.vm-pill,.vm-chip,.vm-send{transition:none!important}
  .vm-log{scroll-behavior:auto}
}
.vm-eye{fill:#FFFFFF}.vm-smile{stroke:#FFFFFF}/* white eyes: 8.7:1 on #1E40AF body, all states + dark mode */
