/* Moki, the site helper: a floating parrot button and a small chat panel. Self-contained so it works on
   both the hub and the platform stylesheets; dark mode is handled by the tokens below. */
.moki{--mk-bg:#fff;--mk-ink:#161618;--mk-muted:#6b6d72;--mk-soft:#f2f2f0;--mk-line:#e6e6e3;--mk-accent:#2f8fe0;
  position:fixed;right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));z-index:150;font:15px/1.55 -apple-system,BlinkMacSystemFont,"PingFang HK","Microsoft JhengHei",sans-serif;color:var(--mk-ink)}
:root[data-theme=dark] .moki.moki{--mk-bg:#1d1d20;--mk-ink:#f0f0f2;--mk-muted:#a3a5ab;--mk-soft:#2a2a2e;--mk-line:#38383d;--mk-accent:#5cb6ff}
.moki .moki-fab{--theme:keep;width:4.2rem;height:4.2rem;padding:0;border:0;border-radius:50%;background:#fff;box-shadow:0 10px 30px #0000003a,0 0 0 3px #fff;cursor:pointer;overflow:hidden;display:grid;place-items:center;animation:moki-bob 3.6s ease-in-out infinite;transition:transform .25s cubic-bezier(.2,.9,.25,1.4)}
.moki .moki-fab img{width:118%;height:118%;object-fit:cover;--theme:keep}
.moki .moki-fab:hover{transform:scale(1.08) rotate(-6deg);animation-play-state:paused}
.moki .moki-fab:active{transform:scale(.94)}
.moki .moki-fab[aria-expanded=true]{animation:none;transform:scale(.9)}
@keyframes moki-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.moki .moki-teaser{position:absolute;right:4.9rem;bottom:1.1rem;margin:0;padding:.55rem .85rem;border-radius:1rem 1rem .3rem 1rem;background:var(--mk-bg);color:var(--mk-ink);box-shadow:0 8px 24px #00000026;white-space:nowrap;font-weight:650;font-size:.88rem;animation:moki-pop .5s cubic-bezier(.2,.9,.25,1.3) both;cursor:pointer}
.moki .moki-panel{position:absolute;right:0;bottom:5.2rem;width:min(23.5rem,calc(100vw - 2rem));height:min(34rem,calc(100vh - 7.5rem));display:flex;flex-direction:column;background:var(--mk-bg);border-radius:1.4rem;box-shadow:0 30px 80px #0000003d,0 0 0 1px var(--mk-line);overflow:hidden;transform-origin:bottom right;animation:moki-open .35s cubic-bezier(.2,.9,.25,1.15) both}
.moki .moki-panel[hidden]{display:none}
@keyframes moki-open{from{opacity:0;transform:translateY(16px) scale(.92)}}
@keyframes moki-pop{from{opacity:0;transform:translateY(8px) scale(.85)}}
.moki .moki-head{display:flex;align-items:center;gap:.65rem;padding:.8rem .9rem;border-bottom:1px solid var(--mk-line)}
.moki .moki-face{--theme:keep;width:2.75rem;height:2.75rem;border-radius:50%;object-fit:cover;background:#fff;box-shadow:0 0 0 2px var(--mk-line);transition:transform .3s cubic-bezier(.2,.9,.25,1.4)}
.moki .moki-face.is-swap{transform:scale(1.12) rotate(-6deg)}
.moki .moki-head div{flex:1;min-width:0;display:grid}
.moki .moki-head b{font-size:1rem}
.moki .moki-head small{font-size:.72rem;color:var(--mk-muted)}
.moki .moki-close{border:0;background:var(--mk-soft);color:var(--mk-ink);width:2rem;height:2rem;border-radius:50%;font-size:1.2rem;line-height:1;cursor:pointer}
.moki .moki-log{flex:1;overflow-y:auto;padding:.9rem;display:flex;flex-direction:column;gap:.6rem;scroll-behavior:smooth}
.moki .moki-msg{max-width:86%;padding:.55rem .8rem;border-radius:1.1rem;white-space:pre-wrap;word-break:break-word;animation:moki-pop .35s cubic-bezier(.2,.9,.25,1.2) both;font-size:.92rem}
.moki .moki-msg.from-moki{align-self:flex-start;background:var(--mk-soft);border-bottom-left-radius:.3rem}
.moki .moki-msg.from-user{align-self:flex-end;background:var(--mk-ink);color:var(--mk-bg);border-bottom-right-radius:.3rem}
.moki .moki-links{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}
.moki .moki-links a{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .65rem;border-radius:999px;background:var(--mk-bg);color:var(--mk-accent);font-weight:700;font-size:.8rem;text-decoration:none;box-shadow:inset 0 0 0 1px var(--mk-line)}
.moki .moki-links a:hover{box-shadow:inset 0 0 0 1px var(--mk-accent)}
.moki .moki-typing{align-self:flex-start;display:flex;gap:.25rem;padding:.7rem .85rem;border-radius:1.1rem;background:var(--mk-soft)}
.moki .moki-typing i{width:.45rem;height:.45rem;border-radius:50%;background:var(--mk-muted);animation:moki-dot 1s ease-in-out infinite}
.moki .moki-typing i:nth-child(2){animation-delay:.15s}.moki-typing i:nth-child(3){animation-delay:.3s}
@keyframes moki-dot{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}
.moki .moki-chips{display:flex;gap:.35rem;overflow-x:auto;padding:0 .9rem .6rem;scrollbar-width:none}
.moki .moki-chips button{flex:none;border:0;border-radius:999px;padding:.35rem .75rem;background:var(--mk-soft);color:var(--mk-ink);font:inherit;font-size:.8rem;font-weight:650;cursor:pointer;transition:transform .2s cubic-bezier(.2,.9,.25,1.3)}
.moki .moki-chips button:hover{transform:translateY(-2px)}
.moki .moki-form{display:flex;gap:.45rem;padding:.7rem .8rem .8rem;border-top:1px solid var(--mk-line)}
.moki .moki-form input{flex:1;min-width:0;min-height:2.6rem;padding:.5rem .85rem;border-radius:999px;border:1px solid var(--mk-line);background:var(--mk-soft);color:var(--mk-ink);font:inherit;font-size:.92rem;box-shadow:none}
.moki .moki-form input:focus{outline:none;border-color:var(--mk-accent)}
.moki .moki-form button{width:2.6rem;height:2.6rem;flex:none;border:0;border-radius:50%;background:var(--mk-ink);color:var(--mk-bg);font-size:1rem;cursor:pointer;transition:transform .2s cubic-bezier(.2,.9,.25,1.3)}
.moki .moki-form button:active{transform:scale(.9)}
.moki .moki-form button:disabled{opacity:.5}
@media (max-width:520px){.moki-fab{width:3.6rem;height:3.6rem}.moki-panel{bottom:4.6rem;height:min(32rem,calc(100vh - 6.5rem))}.moki-teaser{right:4.2rem;bottom:.8rem}}
@media print{.moki{display:none}}
@media (prefers-reduced-motion:reduce){.moki *{animation:none!important}}
