:root{--bg:#f7f7f2;--surface:#ffffff;--surface-strong:#f0f6f2;--ink:#19221d;--muted:#637067;--line:#d7ded8;--green:#16784c;--green-dark:#0f5f3b;--blue:#2266a8;--red:#b94040;--amber:#a56712;--shadow:0 10px 28px rgba(25,34,29,0.09)}*{box-sizing:border-box}body,html{min-height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{border:0;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.6}.topbar{align-items:center;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);display:flex;height:64px;justify-content:space-between;padding:0 clamp(16px,4vw,40px);position:-webkit-sticky;position:sticky;top:0;z-index:10}.brand{color:var(--green-dark);font-size:22px;font-weight:800;letter-spacing:0}.nav{display:flex;gap:8px}.nav a{border-radius:6px;color:var(--muted);font-size:14px;font-weight:700;padding:9px 12px}.nav a:hover{background:var(--surface-strong);color:var(--ink)}.page{margin:0 auto;max-width:1160px;padding:28px clamp(16px,4vw,40px) 48px}.pageHeader{align-items:flex-end;display:flex;gap:20px;justify-content:space-between;margin-bottom:22px}.eyebrow{color:var(--green);font-size:13px;font-weight:800;margin:0 0 6px;text-transform:uppercase}h1{font-size:clamp(32px,5vw,56px);line-height:1;margin:0}h2{font-size:20px;margin:0 0 14px}.statusPill{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:999px;color:var(--muted);display:inline-flex;font-size:13px;font-weight:700;gap:8px;min-height:36px;padding:8px 12px;white-space:nowrap}.statusPill[data-tone=ok]{color:var(--green-dark)}.statusPill[data-tone=warn]{color:var(--amber)}.grid{display:grid;grid-gap:18px;gap:18px}.adminGrid{grid-template-columns:minmax(280px,420px) 1fr}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:18px}.uploadBox{align-items:center;border:1px dashed #9fb3a6;border-radius:8px;display:flex;flex-direction:column;gap:14px;justify-content:center;min-height:210px;padding:22px;text-align:center}.fileInput{max-width:100%}.dangerButton,.iconButton,.primaryButton,.secondaryButton{align-items:center;border-radius:7px;display:inline-flex;font-weight:800;gap:8px;justify-content:center;min-height:42px;padding:10px 14px}.primaryButton{background:var(--green);color:white}.primaryButton:hover{background:var(--green-dark)}.secondaryButton{background:#e8f0ec;color:var(--ink)}.dangerButton{background:#fae6e6;color:var(--red)}.iconButton{aspect-ratio:1;background:#eef3ef;color:var(--ink);min-width:42px;padding:0}.documentList{display:grid;grid-gap:10px;gap:10px}.documentRow{align-items:center;border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:12px;gap:12px;grid-template-columns:minmax(0,1fr) auto;padding:12px}.documentName{align-items:center;display:flex;gap:8px;font-weight:800;overflow-wrap:anywhere}.meta{color:var(--muted);font-size:13px;margin-top:4px}.chatShell{display:grid;grid-gap:18px;gap:18px;grid-template-columns:minmax(0,1fr) 320px}.chatPanel{display:grid;grid-template-rows:minmax(340px,58vh) auto;overflow:hidden;padding:0}.messages{display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:18px}.message{border-radius:8px;line-height:1.5;max-width:min(78%,720px);padding:12px 14px;white-space:pre-wrap}.message.user{align-self:flex-end;background:#e9f2ff}.message.assistant{align-self:flex-start;background:#edf6ef}.message.system{align-self:center;background:#fff8e8;color:var(--amber);max-width:100%}.composer{align-items:flex-end;border-top:1px solid var(--line);display:grid;grid-gap:10px;gap:10px;grid-template-columns:minmax(0,1fr) auto auto;padding:14px}.composer textarea{border:1px solid var(--line);border-radius:8px;min-height:44px;padding:11px 12px;resize:vertical}.sideStack{display:grid;grid-gap:18px;gap:18px}.rainbotFace{align-items:center;background:linear-gradient(145deg,#e8f5ec,#e8f1ff);border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column;gap:14px;justify-content:center;min-height:300px;overflow:hidden;padding:22px 24px}.avatarSprite{--avatar-frame-position:0%;aspect-ratio:362/430;background-image:url(/assets/rainbot-avatar-sprite-3d.png);background-position:var(--avatar-frame-position) 0;background-repeat:no-repeat;background-size:600% 100%;filter:drop-shadow(0 14px 18px rgba(25,34,29,.14));flex:0 0 auto;max-height:220px;width:min(56vw,210px)}.avatarSprite[data-state=idle]{animation:avatarFloat 3.2s ease-in-out infinite}.avatarSprite[data-state=listening]{--avatar-frame-position:20%;animation:avatarListen 1.1s ease-in-out infinite}.avatarSprite[data-state=thinking]{--avatar-frame-position:40%;animation:avatarThink 1.6s ease-in-out infinite}.avatarSprite[data-state=answering]{--avatar-frame-position:60%;animation:avatarAnswer .72s ease-in-out infinite}.avatarSprite[data-state=matched]{--avatar-frame-position:80%;animation:avatarFloat 2.8s ease-in-out infinite}.avatarSprite[data-state=fallback]{--avatar-frame-position:80%}.avatarSprite[data-state=concerned]{--avatar-frame-position:100%}.metricGrid{display:grid;grid-gap:10px;gap:10px}.metric{border:1px solid var(--line);border-radius:8px;padding:12px}.metricValue{font-size:22px;font-weight:900}.errorText{color:var(--red);font-size:14px;font-weight:700}.emptyState{align-items:center;color:var(--muted);display:flex;justify-content:center;min-height:140px;text-align:center}.loading{align-items:center;display:inline-flex;gap:8px}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes avatarFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes avatarListen{0%,to{transform:scale(1)}50%{transform:scale(1.035)}}@keyframes avatarThink{0%,to{transform:rotate(-1deg)}50%{transform:rotate(2deg)}}@keyframes avatarAnswer{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.02)}}@media (max-width:860px){.pageHeader{align-items:flex-start;flex-direction:column}.adminGrid,.chatShell{grid-template-columns:1fr}.chatPanel{grid-template-rows:minmax(240px,44vh) auto;order:2}.sideStack{display:contents}.rainbotFace{min-height:125px;order:1;padding:0}.sideStack .panel{order:3}.avatarSprite{max-height:150px;width:min(46vw,140px)}}@media (max-width:560px){.page{padding-top:16px}.chatShell{gap:12px}.chatPanel{grid-template-rows:minmax(210px,38vh) auto}.messages{padding:12px}.composer{gap:8px;grid-template-columns:minmax(0,1fr) auto auto;padding:10px}.composer textarea{min-height:40px;padding:9px 10px}.message{max-width:94%}}