/* NEX v3. All geometry is scoped; physical dock coordinates work in RTL and LTR. */
.nex{--nx-orange:#ff692e;--nx-text:#f6f1ec;--nx-muted:#aaa8b5;--nx-line:#ffffff15;position:fixed;inset:0;z-index:2147481900;pointer-events:none;font-family:inherit;color:var(--nx-text);font-size:14px;line-height:1.7;color-scheme:dark;text-align:start}
.nex.nex-open{z-index:2147483601}
.nex *,.nex *::before,.nex *::after{box-sizing:border-box}
.nex [hidden],.nex[hidden]{display:none!important}
.nex button,.nex textarea,.nex input{font-family:inherit;letter-spacing:normal}
.nex button{cursor:pointer;margin:0;text-transform:none;box-shadow:none;line-height:1.5;min-width:0;max-width:100%}
.nex button:disabled{opacity:.5;cursor:wait}
.nex button:focus-visible,.nex a:focus-visible,.nex textarea:focus-visible,.nex label:focus-within{outline:2px solid #ffbd91;outline-offset:3px}
.nex button,.nex a{-webkit-tap-highlight-color:transparent}
.nex svg{display:block;flex-shrink:0;max-width:none}
.nex p,.nex h2,.nex h3,.nex dl{margin:0}
.nex a{color:inherit;text-decoration:none}
.nex-dock{position:fixed;left:18px;bottom:18px;width:90px;height:124px;pointer-events:auto;transition:opacity .18s ease;contain:layout style}
.nex-launch{position:relative;display:block;width:100%;height:100%;padding:0!important;background:transparent!important;border:0!important;color:#ffcbac;overflow:visible;touch-action:manipulation;appearance:none;-webkit-appearance:none}
.nex-buddy{width:100%;height:100%;overflow:visible}
.nex-launch>.nex-buddy{height:calc(100% - 10px);filter:drop-shadow(0 4px 8px #0005)}
.nex-launch__name{position:absolute;bottom:0;left:20%;right:20%;height:20px;display:flex;align-items:center;justify-content:center;gap:5px;border:1px solid #ff9d5833;border-radius:20px;background:#181820ed;color:#ffe3d1;font-family:system-ui,sans-serif;font-size:9px;line-height:1;letter-spacing:2px}
.nex-dot{display:inline-block;width:4px;height:4px;border-radius:50%;background:#ff8c50}
.nex-no-space .nex-dock,.nex-obscured .nex-dock,.nex-editing .nex-dock,.nex-keyboard .nex-dock{visibility:hidden;pointer-events:none;opacity:0}
.nex-nudge{position:absolute;bottom:calc(100% + 12px);left:0;width:270px;max-width:calc(100vw - 24px);padding:13px 12px;display:flex;align-items:flex-start;gap:7px;background:#19191ff8;border:1px solid #ff8e5152;border-radius:18px;box-shadow:0 12px 34px #0006;animation:nex-reveal .18s ease both;contain:layout paint}
.nex-nudge::after{content:"";position:absolute;left:calc(var(--nex-tail,30px) - 5px);bottom:-6px;width:10px;height:10px;background:#19191f;border-right:1px solid #ff8e5145;border-bottom:1px solid #ff8e5145;transform:rotate(45deg)}
.nex-nudge--below{bottom:auto;top:calc(100% + 14px)}
.nex-nudge--below::after{bottom:auto;top:-6px;transform:rotate(225deg)}
.nex-nudge .nex-nudge__text{flex:1;background:transparent;border:0;color:#fbe7d9;padding:0;font-size:12px;line-height:1.95;text-align:start;overflow-wrap:anywhere}
.nex-nudge [data-nex=dismiss-hint]{flex:none;display:grid;place-items:center;width:26px;height:26px;border:0;border-radius:8px;background:#ffffff08;color:#b5b1bf;padding:0;font-size:19px}
.nex-panel{pointer-events:auto;position:fixed;right:22px;bottom:22px;width:min(430px,calc(100vw - 32px));height:min(740px,calc(var(--nex-vh,100dvh) - 44px));max-width:calc(100vw - 32px);display:flex;flex-direction:column;min-height:0;overflow:hidden;background:#111216;border:1px solid #ffffff24;border-radius:26px;box-shadow:0 28px 80px #0008,0 4px 16px #0003;isolation:isolate;overscroll-behavior:none;animation:nex-reveal .18s ease;contain:layout style paint}
.nex[dir=rtl] .nex-panel{right:auto;left:22px}
.nex-header{display:flex;align-items:center;gap:12px;flex-shrink:0;padding:18px 18px 14px;border-bottom:1px solid var(--nx-line);background:radial-gradient(ellipse at top right,#ff692e16,transparent 72%),#18191e}
.nex-avatar{direction:ltr;flex:none;width:55px;height:62px;border:1px solid #ff9d5838;background:#22212a;border-radius:19px;overflow:hidden;box-shadow:0 0 var(--nex-talk-shadow,0px) rgba(255,105,46,.34);transition:box-shadow .12s linear}
.nex-avatar .nex-buddy{width:64px;height:84px;max-width:none;position:relative;left:50%;transform:translate(-50%,-1px)}
.nex-header__text{flex:1;min-width:0}
.nex-eyebrow{font-family:system-ui,sans-serif;letter-spacing:2.6px;font-size:9px;font-weight:600;color:#f2a77e;margin-bottom:3px;direction:ltr;text-align:start}
.nex-header h2{font-family:inherit!important;font-size:20px!important;line-height:1.55!important;color:#fff7ef!important;font-weight:800!important;display:flex;gap:7px;align-items:center;margin:0!important;letter-spacing:0!important}
.nex-header h2>span{font-size:16px;color:var(--nx-orange)}
.nex-header p{font-size:11px;color:#b1aab6;margin-top:2px;line-height:1.65}
.nex-icon{display:grid!important;place-items:center!important;flex:none;width:40px!important;height:40px!important;padding:0!important;border-radius:13px!important;border:1px solid #ffffff18!important;background:#ffffff04!important;color:#dad6df!important;line-height:0!important;appearance:none!important;-webkit-appearance:none!important}
.nex-icon:hover{background:#ffffff0e!important}
.nex-icon svg{width:18px;height:18px;margin:auto!important;position:static!important;transform:none!important}
.nex-mood{display:flex;align-items:center;gap:6px;min-height:28px;padding:4px 18px;background:#18191e;color:#e5b79d;font-size:10px;flex-shrink:0}
.nex-mood::before{content:"";height:5px;width:5px;background:var(--nx-orange);border-radius:50%}
.nex-quota{flex-shrink:0;margin:0 14px 3px;padding:8px 10px 7px;border:1px solid #ffffff12;border-radius:12px;background:#ffffff04;color:#bdb4c1;transition:border-color .18s ease,background .18s ease}
.nex-quota__row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:9.5px;line-height:1.5}.nex-quota__row strong{font-size:10px;color:#eee5ed;font-weight:650;white-space:nowrap}
.nex-quota__track{height:3px;margin-top:6px;border-radius:999px;background:#ffffff0d;overflow:hidden}.nex-quota__track span{display:block;width:0;height:100%;border-radius:inherit;background:#b4846d;transition:width .24s ease}
.nex-quota small{display:block;margin-top:4px;font-size:8.5px;line-height:1.5;color:#827c8b}.nex-quota--warning{border-color:#d9a25c38;background:#d9a25c09}.nex-quota--warning .nex-quota__track span{background:#d9a25c}.nex-quota--warning .nex-quota__row strong{color:#ffd59a}
.nex-quota--exhausted{border-color:#c96f6f42;background:#c96f6f0a}.nex-quota--exhausted .nex-quota__track span{background:#c96f6f}.nex-quota--exhausted .nex-quota__row strong{color:#f1b2b2}
.nex-toolbar{display:flex;flex-shrink:0;gap:6px;overflow:auto;white-space:nowrap;padding:9px 14px;border-bottom:1px solid #ffffff09;scrollbar-width:none;overscroll-behavior:contain}
.nex-toolbar::-webkit-scrollbar{display:none}
.nex-toolbar button{flex:none;min-height:34px;padding:6px 9px;border:1px solid #ffffff13;border-radius:10px;background:#ffffff03;color:#bbb6c4;font-size:10px}
.nex-toolbar button[aria-pressed=true]{color:#ffd1b4;border-color:#ff94634d;background:#ff692e0c}
.nex-messages{flex:1 1 0;min-height:0;overflow:auto;overflow-x:hidden;padding:18px 16px 8px;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:#4a4650 transparent;overflow-anchor:none}
.nex-message{margin:0 0 20px;max-width:100%;min-width:0;animation:nex-reveal .18s ease}
.nex-message__label{font-size:9px;letter-spacing:.7px;color:#b89885;font-weight:600;margin-bottom:5px;line-height:1.5}
.nex-message__body{color:#e4dfe7;font-size:13px;line-height:2.05;white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal;unicode-bidi:plaintext}
.nex-message--user{margin-inline-start:30px;padding:11px 14px;background:linear-gradient(120deg,#31231e,#292027);border:1px solid #ffb68021;border-radius:17px 17px 5px 17px}
.nex-message--user .nex-message__label{color:#e3aa89}
.nex-cards{display:grid;gap:8px;margin-top:12px}
.nex-card{display:block!important;padding:12px 13px;border:1px solid #ffffff18;border-radius:14px;background:#1b1c22;color:#e7e3ec;transition:border-color .16s,background .16s;overflow-wrap:anywhere}
.nex-card:hover{background:#232129;border-color:#ff8e5145}
.nex-card strong{display:block;font-size:12px;line-height:1.8}
.nex-card small{display:block;color:#a6a5b3;line-height:1.9;font-size:11px;margin-top:5px}
.nex-card em{display:block;font-size:12px;font-weight:600;font-style:normal;color:#ffb888;margin-top:7px}
.nex-card dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:11px;margin-top:8px}
.nex-card dt{color:#9c99a8}.nex-card dd{margin:0;color:#e2dce8}
.nex-card ol{padding-inline-start:18px;margin:10px 0 0;font-size:11px}
.nex-sources-more{margin-top:8px;color:#b7afbd;font-size:11px}
.nex-sources-more summary{cursor:pointer;padding:7px 0}
.nex-feedback{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px;min-height:32px}
.nex-feedback button{min-width:34px;min-height:32px;padding:3px 8px;border:1px solid #ffffff12;border-radius:10px;background:#ffffff04;color:#bbb5c3;font-size:14px;transition:transform .14s ease,border-color .14s ease,background .14s ease}
.nex-feedback button:hover{border-color:#ff9d585c;background:#ff692e0b}.nex-feedback button:active{transform:scale(.9)}
.nex-feedback button[aria-pressed=true]{border-color:#ff9d5890;background:#ff692e18;color:#fff}.nex-feedback button[data-feedback=up][aria-pressed=true]{background:#2d7d511c;border-color:#72cf9b66}.nex-feedback button[data-feedback=down][aria-pressed=true]{background:#a84f4f18;border-color:#e48b8b55}
.nex-feedback__status{font-size:10px;color:#c8b9c7;line-height:1.6;min-height:16px;margin-inline-start:2px;animation:nex-reveal .18s ease}
.nex-chip{padding:7px 11px;min-height:34px;background:#202127;border:1px solid #ffffff13;border-radius:12px;color:#cfccd8;font-size:11px;line-height:1.5}
.nex-message>.nex-chip{margin:9px 0 0;margin-inline-end:5px}
.nex-chip:hover{border-color:#ff996c55;color:#ffe7d4}
.nex-activity{display:flex;align-items:center;gap:5px;padding:5px 18px;flex-shrink:0;color:#c9baa9}
.nex-activity>span{width:4px;height:4px;border-radius:50%;background:#ff9863;animation:nex-dot 1s ease-in-out infinite alternate}
.nex-activity>span:nth-child(2){animation-delay:.2s}.nex-activity>span:nth-child(3){animation-delay:.4s}
.nex-activity small{margin-inline-start:5px;font-size:10px;line-height:1.6}
.nex-compose{display:flex;align-items:flex-end;gap:6px;flex-shrink:0;min-width:0;margin:3px 12px 0!important;padding:7px!important;background:#1b1c22!important;border:1px solid #ffffff21!important;border-radius:17px!important;box-shadow:0 0 0 1px #0002}
.nex-compose:focus-within{border-color:#ff956b80!important;box-shadow:0 0 0 3px #ff692e09}
.nex-compose textarea{display:block!important;flex:1;min-width:0!important;width:100%;min-height:42px!important;height:42px;max-height:105px;background:transparent!important;border:0!important;box-shadow:none!important;color:#fff6ef!important;font-family:inherit!important;font-size:16px!important;line-height:1.7!important;padding:7px 6px!important;resize:none;border-radius:0!important;outline:none!important;overscroll-behavior:contain;overflow-y:auto;scrollbar-width:thin}
.nex-compose textarea::placeholder{font-size:13px;color:#908b9c;opacity:1}
.nex-send,.nex-image-button{display:grid;place-items:center;flex:none;width:40px;height:42px;min-height:42px;padding:0!important;border:0!important;border-radius:12px!important;line-height:1!important;cursor:pointer}
.nex-send{background:#ff783d!important;color:#25160f!important;transition:background .16s,transform .16s}
.nex-send:hover{background:#ff9863!important}.nex-send:active{transform:scale(.94)}
.nex-image-button{background:transparent!important;color:#c4bccb!important;margin:0!important}
.nex-image-button:hover{background:#ffffff0a!important;color:#ffbb91!important}
.nex-image-button input{position:absolute;width:1px;height:1px;padding:0;opacity:0;overflow:hidden}
.nex-image-button svg{width:21px;height:21px}
.nex-attachment{display:flex;align-items:center;gap:10px;padding:8px 12px;margin:0 12px 4px;background:#211e24;border:1px solid #ff692e25;border-radius:14px;flex-shrink:0}
.nex-attachment img{width:46px;height:46px;object-fit:cover;border-radius:9px;flex:none}
.nex-attachment span{flex:1;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#dbbfaf}
.nex-attachment button{width:34px;height:34px;padding:0;border-radius:9px;border:1px solid #ffffff12;background:transparent;color:#e0c6b6;font-size:22px;display:grid;place-items:center}
.nex-voice-status{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 17px;background:#ff692e09;color:#e2bda8;font-size:11px;flex-shrink:0}
.nex-voice-status button{background:transparent;border:0;min-height:32px;color:#ffcaa8;font-size:11px;padding:0 5px}
.nex-footer{display:flex;align-items:center;gap:10px;padding:10px 16px 13px;flex-shrink:0;line-height:1.5;min-width:0}
.nex-footer a,.nex-footer button{font-size:10px;color:#aaa1b1;background:none;border:0;padding:2px 0;white-space:nowrap}
.nex-footer a{color:#e0bba3}.nex-footer a span{margin-inline-start:5px}
.nex-brand{margin-inline-start:auto;color:#807786;font-family:system-ui,sans-serif;font-size:9px;letter-spacing:1px;white-space:nowrap}
.nex-notice{font-size:11px;color:#dab48e;margin-top:9px;border-inline-start:2px solid #ff692e66;padding-inline-start:8px}
.nex-draft{border:1px solid #ffb68033;background:#231e20;border-radius:12px;padding:12px;margin-top:12px;font-size:12px}
.nex-draft summary{cursor:pointer;color:#f0bf9f}.nex-draft dt{color:#b99582;margin-top:9px;font-size:11px}.nex-draft dd{margin:3px 0 12px;white-space:pre-wrap;overflow-wrap:anywhere;color:#e4d9df}
.nex-action{background:#ff995f!important;color:#291a12!important;border:0!important;padding:9px 13px!important;border-radius:10px!important;font-size:11px!important;min-height:38px}
.nex-action--subtle{background:#343039!important;color:#e0d4df!important;margin-inline-start:6px!important}
.nex-confirm{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;justify-content:flex-start;gap:16px;padding:40px 24px 24px;overflow:auto;background:#15151bf7;overscroll-behavior:contain}
.nex-confirm h3{color:#fff2e9!important;font-size:19px!important;line-height:1.8;margin:0!important}
.nex-confirm p{font-size:13px;line-height:2;color:#c5bacb;white-space:pre-wrap;flex-shrink:0}
.nex-confirm>div{display:flex;gap:10px}.nex-confirm button{min-height:42px}
.nex-confirm button:not(.nex-action){background:#26232c;border:1px solid #ffffff24;color:#ded0dc;border-radius:10px;padding:8px 16px}
.nex-memory-options{display:grid;gap:8px;max-height:250px;overflow:auto;margin:10px 0}
.nex-memory-options label{display:flex;gap:9px;align-items:center;font-size:12px}
.nex-memory-options input{width:18px;height:18px;accent-color:#ff692e}
.nex-form-entry{display:inline-flex;align-items:center;gap:7px;margin:0 0 14px;padding:9px 14px;border:1px solid #ff995f55;border-radius:12px;background:#31231f;color:#ffd3b8;font:inherit;font-size:12px;cursor:pointer}
.nex-ready .support-launcher{display:none!important}
/* Desktop pointer micro-reaction: event-driven and GPU-friendly; never runs on touch-only devices. */
@media (hover:hover) and (pointer:fine){
 .nex-hover-react:not(.nex-no-animation) .nex-launch>.nex-buddy{transform-origin:50% 82%;animation:nex-hover-pop .68s cubic-bezier(.2,.8,.25,1) 1}
 .nex-hover-react:not(.nex-no-animation) .nex-launch__name{transform:translateY(-1px);border-color:#ffad756e;background:#1d1b22f5;transition:transform .16s ease,border-color .16s ease,background .16s ease}
}
@keyframes nex-hover-pop{0%{transform:translateY(0) rotate(0) scale(1)}38%{transform:translateY(-4px) rotate(-3deg) scale(1.035)}68%{transform:translateY(-1px) rotate(2deg) scale(1.015)}100%{transform:translateY(0) rotate(0) scale(1)}}

/* NEX emotional life system: broad expressions without continuous JS animation. */
.nex-buddy__blink{display:none}.nex-blink .nex-buddy__blink{display:block}
.nex-face{display:none}.nex-face--neutral{display:block}
.nex-buddy__head{transform-origin:60px 82px;animation:nex-breathe 5s ease-in-out infinite}
.nex-buddy__body{transform-origin:60px 132px}.nex-buddy__arm-a{transform-origin:35px 86px}.nex-buddy__arm-b{transform-origin:84px 86px}.nex-buddy__leg-a{transform-origin:48px 115px}.nex-buddy__leg-b{transform-origin:73px 115px}
.nex-buddy__sleep,.nex-buddy__alert,.nex-buddy__spark,.nex-buddy__talk{display:none}
.nex:not([data-emotion=idle],[data-emotion=relaxed]) .nex-face--neutral{display:none}
.nex:is([data-emotion=happy],[data-emotion=pleased],[data-emotion=delighted],[data-emotion=excited],[data-emotion=success],[data-emotion=relieved],[data-emotion=celebrating],[data-emotion=playful],[data-emotion=proud]) .nex-face--smile{display:block}
.nex:is([data-emotion=amused],[data-emotion=laughing]) .nex-face--laughing{display:block}
.nex:is([data-emotion=curious],[data-emotion=thinking],[data-emotion=listening],[data-emotion=confused],[data-emotion=attention],[data-emotion=surprised],[data-emotion=waking]) .nex-face--wonder{display:block}
.nex:is([data-emotion=concerned],[data-emotion=worried],[data-emotion=warning],[data-emotion=error],[data-emotion=empathetic],[data-emotion=nervous]) .nex-face--worried{display:block}
.nex:is([data-emotion=sad],[data-emotion=disappointed]) .nex-face--sad{display:block}
.nex[data-emotion=focused] .nex-face--focused{display:block}
.nex:is([data-emotion=frustrated],[data-emotion=annoyed]) .nex-face--frustrated{display:block}
.nex[data-emotion=angry] .nex-face--angry{display:block}
.nex[data-emotion=shy] .nex-face--wink{display:block}
.nex:is([data-emotion=tired],[data-emotion=sleepy]) .nex-face--tired{display:block}
.nex[data-emotion=yawning] .nex-face--yawn{display:block}
.nex[data-emotion=sleeping] .nex-face--sleep{display:block}
.nex[data-emotion=bored] .nex-face--bored{display:block}
.nex:is([data-emotion=happy],[data-emotion=pleased],[data-emotion=delighted],[data-emotion=success],[data-emotion=shy],[data-emotion=playful]) .nex-buddy__arm-b{animation:nex-wave 1.15s ease-in-out 2}
.nex:is([data-emotion=happy],[data-emotion=delighted],[data-emotion=excited],[data-emotion=celebrating],[data-emotion=proud]) .nex-buddy__spark{display:block;animation:nex-spark 1.5s ease-in-out 3}
.nex:is([data-emotion=excited],[data-emotion=celebrating]) .nex-buddy__body{animation:nex-celebrate .85s ease-in-out 3}
.nex:is([data-emotion=excited],[data-emotion=celebrating]) .nex-buddy__arm-a{transform:rotate(130deg)}
.nex:is([data-emotion=excited],[data-emotion=celebrating]) .nex-buddy__arm-b{transform:rotate(-130deg)}
.nex:is([data-emotion=amused],[data-emotion=laughing]) .nex-buddy__body{animation:nex-laugh .36s ease-in-out 5}
.nex[data-emotion=thinking] .nex-buddy__head{animation:nex-think 3.5s ease-in-out infinite}
.nex[data-emotion=thinking] .nex-buddy__arm-b{transform:rotate(-47deg)}
.nex:is([data-emotion=curious],[data-emotion=listening],[data-emotion=surprised]) .nex-buddy__head{animation:none;transform:rotate(-8deg)}
.nex[data-emotion=focused] .nex-buddy__head{animation:none;transform:translateY(1px)}
.nex:is([data-emotion=frustrated],[data-emotion=annoyed]) .nex-buddy__head{animation:nex-shake .42s ease-in-out 1}
.nex[data-emotion=angry] .nex-buddy__head{animation:nex-angry .34s ease-in-out 2}
.nex[data-emotion=angry] .nex-buddy__arm-a{transform:rotate(34deg)}.nex[data-emotion=angry] .nex-buddy__arm-b{transform:rotate(-34deg)}
.nex[data-emotion=empathetic] .nex-buddy__head{animation:none;transform:translateY(2px) rotate(-3deg)}
.nex[data-emotion=listening] .nex-buddy__arm-b{transform:rotate(-120deg)}
.nex[data-emotion=confused] .nex-buddy__head{animation:none;transform:rotate(10deg)}
.nex:is([data-emotion=concerned],[data-emotion=worried],[data-emotion=nervous]) .nex-buddy__head{animation:none;transform:translateY(3px) rotate(-4deg)}
.nex:is([data-emotion=sad],[data-emotion=disappointed]) .nex-buddy__head{animation:none;transform:translateY(4px) rotate(3deg)}
.nex[data-emotion=shy] .nex-buddy__head{animation:none;transform:rotate(6deg)}
.nex[data-emotion=proud] .nex-buddy__body{transform:translateY(-2px)}
.nex:is([data-emotion=warning],[data-emotion=attention],[data-emotion=confused]) .nex-buddy__alert{display:block}
.nex[data-emotion=error] .nex-buddy__head{animation:nex-shake .4s ease-in-out 2}
.nex[data-emotion=bored] .nex-buddy__head{animation:nex-bored 4.5s ease-in-out infinite}
.nex[data-emotion=tired] .nex-buddy__head{animation:nex-tired 3.8s ease-in-out infinite}
.nex[data-emotion=yawning] .nex-buddy__head{animation:nex-yawn 4.1s ease-in-out 1}
.nex[data-emotion=yawning] .nex-buddy__arm-b{animation:nex-yawn-arm 4.1s ease-in-out 1}
.nex[data-emotion=sleeping] .nex-buddy__sleep{display:block;animation:nex-spark 3s ease-in-out infinite}
.nex[data-emotion=sleeping] .nex-buddy__head{animation:nex-sleep 4s ease-in-out infinite}
.nex[data-emotion=waking] .nex-buddy__body{animation:nex-wake .75s ease-in-out 1}
.nex[data-emotion=waking] .nex-buddy__arm-a,.nex[data-emotion=waking] .nex-buddy__arm-b{animation:nex-stretch .8s ease-in-out 1}
.nex[data-emotion=speaking] .nex-buddy__talk{display:block;transform-origin:60px 81px;animation:nex-talk .5s ease-in-out infinite}
.nex[data-emotion=speaking] .nex-buddy__arm-a{animation:nex-gesture 1.7s ease-in-out infinite}
.nex-buddy__heart,.nex-buddy__question,.nex-buddy__sweat{display:none}
.nex:is([data-emotion=happy],[data-emotion=pleased],[data-emotion=delighted],[data-emotion=success],[data-emotion=relieved]) .nex-buddy__heart{display:block;animation:nex-float 1.5s ease-in-out 3}
.nex:is([data-emotion=curious],[data-emotion=confused],[data-emotion=attention]) .nex-buddy__question{display:block;animation:nex-float 1.8s ease-in-out 3}
.nex:is([data-emotion=concerned],[data-emotion=worried],[data-emotion=error],[data-emotion=warning],[data-emotion=frustrated],[data-emotion=nervous]) .nex-buddy__sweat{display:block;animation:nex-sweat 1.8s ease-in-out 3}
.nex[data-emotion=empathetic] .nex-buddy__heart{display:block;animation:nex-float 1.8s ease-in-out 2}
.nex-hint-unread .nex-dot{box-shadow:0 0 0 4px #ff8c5024,0 0 10px #ff8c5080}
/* NEX no longer roams around the page. Expressions and arm gestures carry personality without layout work. */
.nex[data-moving=true] .nex-buddy__arm-b{animation:nex-wave 1.05s ease-in-out 2}
.nex[data-moving=true] .nex-buddy__body{animation:none}
.nex[data-moving=true] .nex-buddy__leg-a,.nex[data-moving=true] .nex-buddy__leg-b{animation:none}
.nex-mascot-off .nex-buddy{display:none}.nex-mascot-off .nex-launch__name{inset:25px 7px 25px;border-radius:18px;letter-spacing:1px}
@keyframes nex-step{0%{transform:translate3d(-3px,0,0) rotate(-7deg)}12%{transform:translate3d(-2px,-1px,0) rotate(-5deg)}28%{transform:translate3d(2px,-4px,0) rotate(3deg)}42%{transform:translate3d(5px,-7px,0) rotate(9deg)}50%{transform:translate3d(3px,-2px,0) rotate(4deg)}64%{transform:translate3d(-1px,0,0) rotate(-3deg)}80%{transform:translate3d(-4px,-3px,0) rotate(-9deg)}100%{transform:translate3d(-3px,0,0) rotate(-7deg)}}
@keyframes nex-arm{0%,100%{transform:rotate(-14deg)}25%{transform:rotate(-5deg)}50%{transform:rotate(15deg)}75%{transform:rotate(5deg)}}
@keyframes nex-weight{0%,100%{transform:translate3d(0,0,0) rotate(-.7deg)}25%{transform:translate3d(0,-.8px,0) rotate(.3deg)}50%{transform:translate3d(0,-2px,0) rotate(.7deg)}75%{transform:translate3d(0,-.8px,0) rotate(-.3deg)}}
@keyframes nex-wave{0%,100%{transform:rotate(-12deg)}20%,60%{transform:rotate(-142deg)}40%,80%{transform:rotate(-114deg)}}
@keyframes nex-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}
@keyframes nex-laugh{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-2px) rotate(-1.5deg)}}
@keyframes nex-angry{0%,100%{transform:translateX(0)}35%{transform:translateX(-2px) rotate(-3deg)}70%{transform:translateX(2px) rotate(3deg)}}
@keyframes nex-bored{0%,100%{transform:translateY(1px) rotate(0)}45%{transform:translateY(2px) rotate(5deg)}70%{transform:translateY(2px) rotate(5deg)}}
@keyframes nex-tired{0%,100%{transform:translateY(2px) rotate(1deg)}50%{transform:translateY(4px) rotate(4deg)}}
@keyframes nex-yawn{0%,100%{transform:translateY(2px) rotate(0)}35%,75%{transform:translateY(4px) rotate(5deg)}}
@keyframes nex-yawn-arm{0%,100%{transform:rotate(0)}35%,70%{transform:rotate(-118deg)}}
@keyframes nex-wake{0%{transform:translateY(3px) scaleY(.97)}60%{transform:translateY(-4px) scaleY(1.02)}100%{transform:translateY(0) scaleY(1)}}
@keyframes nex-stretch{0%,100%{transform:rotate(0)}55%{transform:rotate(-105deg)}}
@keyframes nex-think{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(8deg)}}
@keyframes nex-celebrate{0%,100%{transform:translateY(0)}40%{transform:translateY(-6px) rotate(-3deg)}70%{transform:translateY(-3px) rotate(3deg)}}
@keyframes nex-sleep{50%{transform:translateY(3px) rotate(4deg)}}
@keyframes nex-shake{25%{transform:rotate(-6deg)}75%{transform:rotate(6deg)}}
@keyframes nex-spark{50%{opacity:.3;transform:translateY(-2px)}}
@keyframes nex-talk{50%{transform:scaleY(.45)}}
@keyframes nex-gesture{50%{transform:rotate(22deg)}}
@keyframes nex-float{50%{transform:translateY(-3px) scale(1.08)}}
@keyframes nex-sweat{50%{transform:translateY(3px);opacity:.45}}
@keyframes nex-dot{to{opacity:.25;transform:translateY(-2px)}}
@keyframes nex-reveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:767px){
 .nex-dock{left:10px;bottom:var(--nex-dock-bottom,calc(78px + env(safe-area-inset-bottom,0px)));width:68px;height:94px}.nex-launch__name{height:18px;font-size:8px;left:15%;right:15%}
 .nex .nex-panel,.nex[dir=rtl] .nex-panel{inset:auto;left:var(--nex-vleft,0px);top:var(--nex-vtop,0px);width:var(--nex-vw,100vw);height:var(--nex-vh,100dvh);max-width:none;max-height:none;border:0;border-radius:0;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);animation:none}
 .nex-header{gap:10px;padding:12px 14px 9px}.nex-header h2{font-size:19px!important}.nex-avatar{width:48px;height:53px;border-radius:16px}.nex-avatar .nex-buddy{width:57px;height:75px}.nex-eyebrow{font-size:8px}.nex-mood{padding:3px 15px;font-size:10px;min-height:24px}
 .nex-messages{padding:14px 14px 6px}.nex-message__body{font-size:14px}.nex-toolbar{padding:7px 12px}.nex-compose{margin-inline:10px!important}.nex-footer{padding:9px 14px 10px}
 .nex-keyboard .nex-toolbar,.nex-keyboard .nex-mood,.nex-keyboard .nex-quota{display:none}.nex-keyboard .nex-header{padding-block:7px}.nex-keyboard .nex-avatar{height:43px}
 html.nex-mobile-open .mobile-store-nav{transition:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}
}
@media(max-height:480px){.nex-toolbar,.nex-mood,.nex-quota,.nex-eyebrow,.nex-header p{display:none}.nex-header{padding:6px 12px}.nex-avatar{width:36px;height:36px}.nex-avatar .nex-buddy{width:44px;height:58px}.nex-header h2{font-size:16px!important}.nex-footer{padding-block:5px}.nex-message{margin-bottom:12px}}
.nex-quiet *,.nex-no-animation *{animation:none!important;transition:none!important}.nex-paused *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.nex *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media(max-width:420px){.nex-nudge{width:min(252px,calc(100vw - 20px));font-size:11px}.nex-nudge .nex-nudge__text{font-size:11px;line-height:1.85}}
[data-performance="lite"] .nex-panel{box-shadow:0 12px 32px #0007}[data-performance="lite"] .nex-launch>.nex-buddy{filter:none}

/* NEX v9 one-shot visual guidance. No polling/loop; class is applied only to a trusted selector. */
.nex-guided-target{position:relative!important;outline:2px solid rgba(255,132,66,.92)!important;outline-offset:4px!important;z-index:4;animation:nex-guide-pulse 1.05s ease-in-out 2!important}
.nex-guided-target[data-nex-guide-label]::after{content:attr(data-nex-guide-label);position:absolute;z-index:2147483000;inset:auto 0 calc(100% + 8px) auto;max-width:min(230px,80vw);padding:6px 9px;border-radius:10px;background:#171921;color:#fff;font:700 11px/1.6 system-ui,sans-serif;white-space:normal;box-shadow:0 7px 22px #0006;pointer-events:none}
.nex-notice--verify{border-inline-start:2px solid rgba(255,183,77,.75)}
@keyframes nex-guide-pulse{50%{outline-offset:7px}}
@media(max-width:767px){.nex-guided-target[data-nex-guide-label]::after{font-size:10px;max-width:min(210px,72vw)}}
@media(prefers-reduced-motion:reduce){.nex-guided-target{animation:none!important}}
[data-performance="lite"] .nex-guided-target{animation:none!important}
