#mm-root{--mm-blue:#0876ed;--mm-ink:#143659;font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;color:var(--mm-ink);position:relative;z-index:2147483000}#mm-root *{box-sizing:border-box}#mm-root [hidden]{display:none!important}#mm-root button,#mm-root input,#mm-root select{font:inherit}#mm-root button{cursor:pointer}#mm-root button:disabled{cursor:wait;opacity:.6}#mm-root button:focus-visible,#mm-root a:focus-visible,#mm-root input:focus-visible,#mm-root select:focus-visible{outline:3px solid #f3bb2c;outline-offset:3px}#mm-root .mm-launch{position:fixed;right:23px;bottom:27px;border:0;background:transparent;display:flex;align-items:center;gap:8px;color:#075cb5;filter:drop-shadow(0 5px 10px #12427025);padding:0;min-height:100px}#mm-root .mm-launch img{width:97px;height:108px;object-fit:contain;animation:mm-float 4s ease-in-out infinite}#mm-root .mm-launch span{background:white;border:1px solid #d3e6ff;border-radius:18px 18px 4px 18px;padding:10px 16px;font-size:13px;text-align:left}#mm-root .mm-launch b{display:block;font-size:15px}#mm-root .mm-launch i{position:absolute;left:65px;bottom:2px;background:#0876ed;color:white;font-size:10px;font-weight:700;border-radius:10px;padding:2px 6px;font-style:normal}#mm-root .mm-panel{position:fixed;bottom:25px;right:24px;width:410px;height:min(735px,calc(100dvh - 45px));background:#fff;border:1px solid #c7dcf8;border-radius:25px;box-shadow:0 18px 65px #123a6d40;display:flex;flex-direction:column;overflow:hidden;animation:mm-open .22s ease-out}#mm-root .mm-header{display:flex;align-items:center;gap:11px;padding:13px 17px;background:linear-gradient(115deg,#0875ec,#0757c3);color:white;flex-shrink:0}#mm-root .mm-header>img{width:52px;height:58px;object-fit:contain;background:#ffffff15;border-radius:18px}#mm-root .mm-header strong{font-size:19px;display:block;color:white}#mm-root .mm-header strong span{font-size:10px;vertical-align:middle;background:#ffffff30;padding:3px 6px;border-radius:6px}#mm-root .mm-header small{font-size:11px;display:block;color:#e6f3ff}#mm-root .mm-close{margin-left:auto;font-size:27px;width:38px;height:38px;background:#ffffff20;color:white;border:0;border-radius:50%}#mm-root .mm-scroll{overflow:auto;overscroll-behavior:contain;flex:1;min-height:0;padding:16px 19px;background:linear-gradient(#f7fbff,#fff 50%)}#mm-root .mm-welcome{text-align:center;margin-bottom:17px}#mm-root .mm-welcome img{width:85px;height:93px;object-fit:contain;animation:mm-float 5s ease-in-out infinite}#mm-root .mm-welcome h2{font-size:20px;font-weight:750;line-height:1.3;margin:5px 0;color:#0a4fa3}#mm-root .mm-welcome p{font-size:12px;margin:6px 0;color:#647d97}#mm-root .mm-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}#mm-root .mm-actions button{display:flex;align-items:center;gap:8px;text-align:left;border:1px solid transparent;border-radius:14px;padding:14px 10px;background:#e8f4ff;color:#174c8b;font-size:20px;transition:transform .15s,box-shadow .15s}#mm-root .mm-actions button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #235da51a}#mm-root .mm-actions span{font-size:12px;font-weight:650}#mm-root .mm-actions button:nth-child(2){background:#fff4d6;color:#765800}#mm-root .mm-actions button:nth-child(3){background:#e2f6ec;color:#146747}#mm-root .mm-actions button:nth-child(4){background:#ffeaf0;color:#934562}#mm-root .mm-notices{display:block;margin:12px auto 15px;border:1px solid #c7dcf8;border-radius:20px;background:white;color:#075dbb;padding:6px 18px;font-size:12px}#mm-root .mm-period{display:flex;justify-content:center;gap:15px;margin-bottom:15px;font-size:12px;color:#5e7591}#mm-root .mm-period select,#mm-root .mm-period input{font-size:12px;border:1px solid #d7e3f2;border-radius:8px;padding:4px 6px;width:75px;color:#245582;background:white}#mm-root .mm-messages{display:flex;flex-direction:column;gap:10px}#mm-root .mm-msg{white-space:pre-wrap;overflow-wrap:anywhere;padding:12px 14px;border-radius:17px 17px 17px 4px;background:#eef3f9;font-size:13px;max-width:94%;align-self:flex-start;color:#193c60}#mm-root .mm-user{align-self:flex-end;background:#0876ed;color:white;border-radius:17px 17px 4px 17px}#mm-root .mm-typing{color:#617b96;animation:mm-pulse 1.2s ease-in-out infinite}#mm-root.mm-thinking .mm-header>img{animation:mm-think .8s ease-in-out infinite alternate}#mm-root .mm-auth{border:1px solid #d5e3f6;border-radius:17px;padding:16px;margin-top:15px;background:white}#mm-root .mm-auth b{font-size:14px}#mm-root .mm-auth p{font-size:12px;color:#647c95;margin:6px 0 10px}#mm-root .mm-auth label{display:block;font-size:12px;margin-top:8px}#mm-root .mm-auth input{display:block;width:100%;border:1px solid #ccdbef;border-radius:9px;padding:9px;margin-top:3px}#mm-root .mm-auth button{width:100%;border:0;background:#0876ed;color:white;border-radius:10px;padding:10px;margin-top:12px;font-size:13px}#mm-root .mm-footer{flex-shrink:0;border-top:1px solid #e4edf8;padding:12px 14px max(12px,env(safe-area-inset-bottom));background:white}#mm-root .mm-compose{border:1px solid #d6e4f5;border-radius:25px;display:flex;align-items:center;padding:5px;gap:5px;margin:0}#mm-root .mm-compose input{flex:1;width:0;min-width:0;border:0;padding:8px;background:transparent;color:#183d65;font-size:13px}#mm-root .mm-compose input::placeholder{color:#7c91ab}#mm-root .mm-compose button{border:0;border-radius:50%;width:38px;height:38px;background:#0876ed;color:white;font-size:20px}#mm-root .mm-footnote{font-size:10px;display:flex;gap:7px;flex-wrap:wrap;justify-content:center;color:#768ca4;margin-top:8px}#mm-root .mm-footnote button{font-size:10px;color:#075dbb;border:0;background:none;padding:0}#mm-root .mm-footnote a,#mm-root .mm-portal-link{color:#075dbb}#mm-root .mm-portal-link{font-size:13px;padding:6px} @keyframes mm-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}@keyframes mm-open{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}@keyframes mm-pulse{50%{opacity:.5}}@keyframes mm-think{to{transform:rotate(7deg)}}@media(max-width:600px){#mm-root .mm-panel{right:8px;bottom:8px;width:calc(100% - 16px);height:min(760px,calc(100dvh - 16px));border-radius:21px}#mm-root .mm-launch{right:12px;bottom:max(15px,env(safe-area-inset-bottom))}body[data-portal="admin"] #mm-root .mm-launch,body[data-portal="teacher"] #mm-root .mm-launch{bottom:85px}#mm-root .mm-launch img{width:76px;height:84px}#mm-root .mm-launch span{font-size:11px;padding:8px 12px}#mm-root .mm-launch b{font-size:13px}#mm-root .mm-scroll{padding:14px}#mm-root .mm-welcome img{height:76px;width:70px}#mm-root .mm-welcome h2{font-size:18px}}@media(prefers-reduced-motion:reduce){#mm-root *,#mm-root *::before,#mm-root *::after{animation:none!important;transition:none!important}}

/* Mèo Mai v4: animate the existing illustration without changing chat/API. */
#mm-root .mm-cat{display:block;overflow:visible;flex-shrink:0;transform-origin:50% 90%;animation:mm-breathe 4.5s ease-in-out infinite}
#mm-root .mm-launch .mm-cat{width:97px;height:108px;transition:filter .2s}
#mm-root .mm-launch:hover .mm-cat{animation:mm-hello 1s ease-in-out infinite;filter:drop-shadow(0 4px 7px #2277dd40)}
#mm-root .mm-header>.mm-cat{width:52px;height:58px;background:#ffffff15;border-radius:18px}
#mm-root .mm-welcome .mm-cat{width:85px;height:93px;margin:auto}
#mm-root .mm-blink{transform-box:fill-box;transform-origin:center;transform:scaleY(0);animation:mm-blink 6.8s infinite}
#mm-root .mm-sparkles{opacity:0;transform-origin:center}
#mm-root.mm-thinking .mm-header>.mm-cat{animation:mm-listen 1.4s ease-in-out infinite}
#mm-root.mm-happy:not(.mm-thinking) .mm-header>.mm-cat,#mm-root.mm-happy .mm-welcome .mm-cat{animation:mm-hello .75s ease-in-out 2}
#mm-root.mm-happy .mm-sparkles{animation:mm-stars .8s ease-in-out 2}
#mm-root.mm-paused *,#mm-root.mm-paused *::before,#mm-root.mm-paused *::after{animation-play-state:paused!important}
@keyframes mm-breathe{0%,100%{transform:translateY(0) rotate(-1deg) scale(1)}50%{transform:translateY(-4px) rotate(1deg) scale(1.025,1.015)}}
@keyframes mm-blink{0%,43%,47%,100%{transform:scaleY(0)}44.5%,45.5%{transform:scaleY(1)}}
@keyframes mm-hello{0%,100%{transform:rotate(0) translateY(0)}25%{transform:rotate(-7deg) translateY(-6px)}65%{transform:rotate(6deg) translateY(-3px)}}
@keyframes mm-listen{0%,100%{transform:rotate(-5deg) translateY(0)}50%{transform:rotate(5deg) translateY(-3px)}}
@keyframes mm-stars{0%,100%{opacity:0;transform:scale(.8)}40%,60%{opacity:1;transform:scale(1)}}
@media(max-width:600px){#mm-root .mm-launch .mm-cat{width:76px;height:84px}#mm-root .mm-welcome .mm-cat{width:70px;height:76px}}
@media(prefers-reduced-motion:reduce){#mm-root .mm-cat,#mm-root .mm-blink,#mm-root .mm-sparkles{animation:none!important;transition:none!important}}

/* Mèo Mai: lively accents, kept outside message text. */
#mm-root .mm-launch{isolation:isolate}
#mm-root .mm-launch::before{content:"";position:absolute;left:8px;bottom:6px;width:80px;height:80px;border-radius:50%;z-index:-1;background:radial-gradient(circle,#b8e1ff99,transparent 70%);animation:mm-aura 4s ease-in-out infinite;pointer-events:none}
#mm-root .mm-launch::after{content:"✦";position:absolute;left:6px;top:2px;color:#f1b72b;font-size:19px;animation:mm-twinkle 3.6s ease-in-out infinite;pointer-events:none}
#mm-root .mm-launch>span{animation:mm-invite 7s ease-in-out infinite;transition:box-shadow .2s,border-color .2s}
#mm-root .mm-launch:hover>span{border-color:#83bcf7;box-shadow:0 5px 18px #0876ed20}
#mm-root .mm-launch .mm-cat{rotate:var(--mm-look,0deg);transition:rotate .3s ease}
#mm-root .mm-launch .mm-sparkles{animation:mm-stars 3.4s ease-in-out infinite}
#mm-root .mm-header{position:relative;isolation:isolate}
#mm-root .mm-header::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(110deg,transparent 25%,#ffffff14 45%,transparent 65%);background-size:250% 100%;animation:mm-shimmer 8s ease-in-out infinite}
#mm-root .mm-msg{animation:mm-message-in .25s ease-out}
#mm-root .mm-typing{display:flex;gap:4px;align-items:center;animation:none}
#mm-root .mm-typing::after{content:"";width:5px;height:5px;margin:0 15px 0 7px;border-radius:50%;background:#4b86bd;box-shadow:8px 0 #4b86bd,16px 0 #4b86bd;animation:mm-dots 1.2s ease-in-out infinite}
#mm-root .mm-compose button{transition:transform .18s,box-shadow .18s}
#mm-root .mm-compose button:hover:not(:disabled){transform:scale(1.08);box-shadow:0 0 0 5px #0876ed16}
#mm-root .mm-compose button:active:not(:disabled){transform:scale(.92)}
#mm-root .mm-actions button:active{transform:scale(.97)}
#mm-root.mm-happy .mm-welcome{position:relative}
#mm-root.mm-happy .mm-welcome::after{content:"✦  ✧  ✦";position:absolute;left:50%;top:22px;color:#f0b32d;pointer-events:none;font-size:21px;white-space:nowrap;animation:mm-celebrate 1.4s ease-out forwards}
@keyframes mm-aura{0%,100%{transform:scale(.88);opacity:.6}50%{transform:scale(1.2);opacity:1}}
@keyframes mm-twinkle{0%,100%{opacity:.25;transform:scale(.6) rotate(0)}50%{opacity:1;transform:scale(1) rotate(25deg)}}
@keyframes mm-invite{0%,85%,100%{transform:translateY(0)}89%,95%{transform:translateY(-3px)}92%,98%{transform:translateY(0)}}
@keyframes mm-shimmer{0%,65%{background-position:100% 0}100%{background-position:0 0}}
@keyframes mm-message-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes mm-dots{0%,100%{opacity:.4;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}
@keyframes mm-celebrate{0%{opacity:0;transform:translate(-50%,12px) scale(.7)}30%{opacity:1}100%{opacity:0;transform:translate(-50%,-28px) scale(1.2)}}
@media(max-width:600px){#mm-root .mm-launch::before{width:65px;height:65px}}
@media(prefers-reduced-motion:reduce){#mm-root *,#mm-root *::before,#mm-root *::after{animation:none!important;transition:none!important;rotate:0deg!important}#mm-root.mm-happy .mm-welcome::after{display:none}}

/* Listening feedback and playful paw accents. */
#mm-root.mm-listening:not(.mm-thinking):not(.mm-happy) .mm-header>.mm-cat{animation:mm-nod 2.4s ease-in-out infinite}
#mm-root .mm-header small{min-height:17px}
#mm-root .mm-welcome{position:relative}
#mm-root.mm-listening:not(.mm-thinking) .mm-compose{border-color:#59aaff;box-shadow:0 0 0 3px #0876ed0d}
#mm-root.mm-happy .mm-header::before{content:"🐾";position:absolute;left:58px;top:5px;font-size:15px;pointer-events:none;animation:mm-paw-pop 1.4s ease-out forwards}
#mm-root .mm-launch:hover i{animation:mm-badge-hop .7s ease-in-out 2}
#mm-root .mm-actions button:hover span{color:inherit;text-decoration:underline;text-underline-offset:3px}
#mm-root .mm-close{transition:transform .2s,background .2s}
#mm-root .mm-close:hover{transform:rotate(12deg);background:#ffffff35}
@keyframes mm-nod{0%,70%,100%{transform:rotate(0) translateY(0)}80%{transform:rotate(4deg) translateY(2px)}90%{transform:rotate(-3deg) translateY(-2px)}}
@keyframes mm-paw-pop{0%{opacity:0;transform:translateY(10px) scale(.6)}25%,60%{opacity:1;transform:translateY(-2px) scale(1)}100%{opacity:0;transform:translateY(-16px) scale(.8)}}
@keyframes mm-badge-hop{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@media(prefers-reduced-motion:reduce){#mm-root *,#mm-root *::before,#mm-root *::after{animation:none!important;transition:none!important}#mm-root.mm-happy .mm-header::before{display:none}}

/* Mobile touch feedback and optional quiet mode. */
#mm-root .mm-paw-particle{position:fixed;z-index:2147483001;font-size:19px;color:#f1b728;pointer-events:none;line-height:1;animation:mm-paw-burst .95s ease-out forwards}
#mm-root .mm-motion-toggle{border-left:1px solid #dce7f3!important;padding-left:7px!important}
#mm-root .mm-motion-toggle[aria-pressed="true"]{color:#647c95}
#mm-root .mm-launch:active .mm-cat{scale:.94;transition:scale .12s}
#mm-root .mm-welcome .mm-cat{touch-action:manipulation;cursor:pointer}
@keyframes mm-paw-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}15%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--mm-drift)),-65px) rotate(var(--mm-turn)) scale(1.2)}}
#mm-root.mm-motion-off *,#mm-root.mm-motion-off *::before,#mm-root.mm-motion-off *::after{animation:none!important;transition:none!important;rotate:0deg!important;scale:1!important}
#mm-root.mm-motion-off .mm-blink{transform:scaleY(0)!important}
#mm-root.mm-motion-off .mm-sparkles,#mm-root.mm-motion-off .mm-paw-particle,#mm-root.mm-motion-off .mm-header::before,#mm-root.mm-motion-off .mm-welcome::after{display:none!important}
@media(prefers-reduced-motion:reduce){#mm-root .mm-paw-particle{display:none}#mm-root .mm-launch:active .mm-cat{scale:1}}

#mm-root .mm-cat{animation:none!important;transform-origin:50% 90%}

/* Gentle continuous limb movement; explicit always-on preference. */
#mm-root .mm-limb{transform-box:view-box;will-change:transform}
#mm-root .mm-cat{rotate:0deg!important;scale:1!important}
#mm-root .mm-blink{animation:mm-blink 7.5s infinite!important}
#mm-root .mm-launch .mm-sparkles{animation:mm-stars 5s ease-in-out infinite!important}
#mm-root .mm-motion-toggle{display:none!important}
