/* IO: public-site navigation and page-reading assistant. */
.io{position:fixed;right:clamp(12px,3vw,28px);bottom:16px;z-index:80;display:flex;flex-direction:column;align-items:flex-end;color:#f4f7fa;font:16px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Arial,sans-serif}
.io *{box-sizing:border-box}.io button,.io input{font:inherit}
.io-launch{position:relative;order:2;display:block;width:78px;height:83px;padding:0;border:0;background:none;color:#fff;cursor:pointer;filter:drop-shadow(0 8px 17px rgba(95,74,105,.34));animation:io-float 4s ease-in-out infinite}
.io-launch-art,.io-avatar{display:block;width:100%;height:100%}.io-avatar{object-fit:contain}
.io-launch::after{content:'✦';position:absolute;right:2px;top:0;color:#e8eaf1;text-shadow:0 0 12px #9d86c9;animation:io-twinkle 2.9s ease-in-out infinite alternate}
.io-launch-label{position:absolute;right:70px;top:28px;min-width:68px;padding:4px 9px;border:1px solid #536274;border-radius:999px;background:#202a36ef;color:#f4f7fa;font-size:13px;font-weight:750;white-space:nowrap;box-shadow:0 6px 19px #0007;transition:transform .2s ease,background .2s ease}
.io-launch:hover .io-launch-label{transform:translateX(-3px);background:#2b3746}.io-launch:hover .io-launch-art{filter:brightness(1.08)}.io-open .io-launch{animation:io-arrive .42s ease-out both}
.io-panel{order:1;width:min(390px,calc(100vw - 24px));height:min(550px,calc(100dvh - 114px));margin-bottom:7px;border:1px solid #465569;border-radius:18px;background:#0e141bf7;box-shadow:0 18px 60px #0009,0 0 30px rgba(88,70,102,.12);overflow:hidden;display:flex;flex-direction:column;backdrop-filter:blur(15px);animation:io-panel-in .24s ease-out both}
.io-panel[hidden]{display:none}
.io-head{display:flex;align-items:center;gap:9px;padding:8px 12px;border-bottom:1px solid #344150;background:linear-gradient(110deg,#253041,#33263b)}
.io-head-art{flex:none;width:45px;height:49px;animation:io-float 5s ease-in-out infinite}
.io-head-title{min-width:0;flex:1}.io-head strong{display:block;font-size:1rem;letter-spacing:.08em}.io-head small{display:block;color:#b8c2cd;font-size:12px;letter-spacing:normal}
.io-close{border:0;background:transparent;color:#e6ebef;font-size:26px;cursor:pointer;line-height:1;padding:4px 7px}
.io-chat{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:14px;display:grid;align-content:start;gap:10px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.io-bubble{max-width:98%;padding:10px 12px;border:1px solid #344150;border-radius:13px;background:#151d27;overflow-wrap:anywhere;animation:io-message-in .2s ease-out both}
.io-bubble.io-user{justify-self:end;background:#262334;border-color:#514866}
.io-bubble p{margin:0 0 8px;white-space:pre-line}.io-bubble p:last-child{margin-bottom:0}
.io-bubble a{color:#d9c5d5;text-underline-offset:3px}
.io-more{margin-top:8px;border:1px solid #536274;border-radius:8px;background:#202a36;color:#f4f7fa;padding:5px 11px;font-size:13px;font-weight:700;cursor:pointer}.io-more:hover{background:#2b3746}
.io-sources{border-top:1px solid #344150;margin-top:10px;padding-top:8px;font-size:14px}.io-sources a{display:inline-block;margin:3px 9px 0 0}
.io-ideas{display:flex;gap:7px;overflow-x:auto;padding:9px 12px;border-top:1px solid #344150}
.io-ideas button{flex:none;border:1px solid #465569;border-radius:999px;background:#111923;color:#dbe3e9;padding:6px 10px;font-size:13px;cursor:pointer}.io-ideas button:hover{background:#202a36}
.io-form{display:flex;align-items:center;gap:8px;padding:10px 12px;border-top:1px solid #344150;background:#0c131b}
.io-form label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.io-form input{min-width:0;flex:1;border:1px solid #465569;border-radius:9px;padding:9px 10px;background:#111923;color:#f4f7fa;font-size:16px}
.io-form input::placeholder{color:#8391a0}.io-form input:focus{border-color:#8c789e;box-shadow:0 0 0 3px rgba(157,134,201,.12)}
.io-send{border:1px solid #9c8297;border-radius:9px;background:linear-gradient(135deg,#b27e9a,#8f7bb8);color:#0e141b;padding:9px 12px;font-weight:800;cursor:pointer}.io-send:hover{filter:brightness(1.06)}.io-send:disabled{opacity:.55;cursor:wait}
.io-note{margin:0;padding:0 12px 9px;background:#0c131b;color:#8e9baa;font-size:12px}
.io button:focus-visible,.io input:focus-visible,.io a:focus-visible{outline:3px solid #8fd5c0;outline-offset:3px}
@keyframes io-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}
@keyframes io-twinkle{from{opacity:.28}to{opacity:.9}}
@keyframes io-arrive{0%{transform:translateY(5px) scale(.87)}65%{transform:translateY(-5px) scale(1.06)}100%{transform:translateY(0) scale(1)}}
@keyframes io-panel-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes io-message-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:480px){.io{right:10px;bottom:8px}.io-launch{width:65px;height:69px}.io-launch-label{right:58px;top:23px}.io-panel{height:min(550px,calc(100dvh - 86px))}}
@media(prefers-reduced-motion:reduce){.io-launch,.io-open .io-launch,.io-launch::after,.io-head-art,.io-panel,.io-bubble{animation:none!important}.io-launch-label{transition:none}}
