/* i™ live GLB character — replaces CSS mascot with real generated model. */
.buddy-world{min-height:480px;background:radial-gradient(ellipse at 52% 94%,#31d5b34a,transparent 59%),linear-gradient(143deg,#063b3b,#09232a 54%,#020d13);overflow:hidden}
.buddy-world::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(100deg,transparent 14%,#71ffe80c 48%,transparent 75%);z-index:1}
#buddyCharacter{display:none!important}
#buddy3d{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:hidden}
#buddy3d model-viewer{display:block;width:100%;height:100%;min-height:420px;background:transparent;--poster-color:transparent;pointer-events:auto;transform-origin:bottom center;filter:drop-shadow(0 0 24px #21ffcb60)}
#buddy3d model-viewer::part(default-progress-bar){background:#59ffd3}
#buddy3d img{width:min(370px,80%);height:auto;max-height:95%;object-fit:contain;filter:drop-shadow(0 0 28px #09edaa70)}
#buddy3d .buddy3d-poster{display:flex;justify-content:center;align-items:center;width:100%;height:100%}
#buddy3d.loaded .buddy3d-poster{display:none}
#buddy3d .buddy3d-model{opacity:0;position:absolute;inset:0;transition:opacity .35s ease}
#buddy3d.loaded .buddy3d-model{opacity:1}
.buddy-world[data-buddy-mode="walking"] #buddy3d{animation:buddy-model-step 1.3s ease-out}
.buddy-world[data-buddy-mode="talking"] #buddy3d{animation:buddy-model-talk .4s ease-in-out infinite alternate}
.buddy-world[data-buddy-mode="listening"] #buddy3d{filter:drop-shadow(0 0 28px #15caffbb)}
.buddy-world[data-buddy-mode="thinking"] #buddy3d{filter:drop-shadow(0 0 24px #8c80ffbb)}
#buddy3d-status{position:absolute;right:14px;top:150px;z-index:4;color:#d4fff6;background:#062e2abf;border:1px solid #75ffe15e;border-radius:12px;padding:6px 10px;font-size:12px}
.buddy-intro{z-index:5}.buddy-actions{z-index:6}
@keyframes buddy-model-step{from{transform:translateX(-28%) scale(.93);opacity:.5}60%{transform:translateX(3%) rotate(2deg)}to{transform:translateX(0) scale(1);opacity:1}}
@keyframes buddy-model-talk{from{transform:translateY(0)}to{transform:translateY(-5px)}}
@media(max-width:520px){.buddy-world{min-height:435px}#buddy3d-status{top:133px;right:9px;max-width:135px}#buddy3d img{max-height:75%}}
@media(prefers-reduced-motion:reduce){#buddy3d,.buddy-world[data-buddy-mode="talking"] #buddy3d,.buddy-world[data-buddy-mode="walking"] #buddy3d{animation:none!important}}

/* Desktop holographic dashboard composition */
body{background:radial-gradient(circle at 68% 22%,#14555c,transparent 47%),radial-gradient(circle at 12% 72%,#053b34,transparent 45%),#041519}
.wrap{max-width:1380px;width:100%;padding:18px clamp(12px,3vw,45px) 110px}
#buddy>.glass{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:16px;align-items:start;border-color:#74ffcb72;box-shadow:0 25px 80px #0007,inset 0 1px 16px #7fffd01a}
#buddy>.glass>b{grid-column:1 / -1;font-size:18px;letter-spacing:.04em}
#buddy>.glass>.buddy-world{grid-column:1;grid-row:2 / 5;min-height:610px;margin:0}
#buddy>.glass>.messages{grid-column:2;min-height:350px;max-height:450px;background:#082e3194;border:1px solid #83ffe060;border-radius:19px;padding:12px;backdrop-filter:blur(16px)}
#buddy>.glass>.compose{grid-column:2}
#buddy>.glass>p.fine{grid-column:2}
#buddy .hero{padding:10px 8px 18px}#buddy .hero .orb{display:none}
#buddy .hero h1{font-size:clamp(26px,4.5vw,52px)}#buddy3d img{width:min(495px,88%);max-height:85%}
#updateBanner.show{max-width:380px;left:auto;right:14px;bottom:85px;padding:9px 11px;gap:8px;font-size:12px;opacity:.97}
#updateBanner button{min-width:0;font-size:12px;padding:7px 9px}
@media(max-width:850px){#buddy>.glass{display:block}#buddy>.glass>.buddy-world{min-height:475px;margin:12px 0}#buddy>.glass>.messages{min-height:130px;max-height:240px}#buddy>.glass>.compose{margin-top:10px}}
@media(max-width:550px){.wrap{padding-left:9px;padding-right:9px}#buddy>.glass{padding:12px;border-radius:19px}#buddy>.glass>.buddy-world{min-height:440px}#buddy3d img{max-height:73%}#updateBanner.show{bottom:84px;max-width:min(330px,92vw)}nav{overflow-x:auto;justify-content:flex-start}nav button{flex-shrink:0}}

/* Approved-identity safety fallback: old mesh never appears; lowercase i eyes. */
.buddy-world.buddy-native-mode #buddy3d{display:none!important}
.buddy-world.buddy-native-mode #buddyCharacter{display:block!important;z-index:3;bottom:82px;left:50%;transform:translateX(-50%) scale(1.2);animation:buddy-arrive 1.1s ease-out both}
.buddy-world.buddy-native-mode .buddy-eye{position:relative;width:17px;height:25px;border-radius:4px;background:linear-gradient(#b8fff3,#45dfff);box-shadow:0 0 12px #25cfff;animation:none}
.buddy-world.buddy-native-mode .buddy-eye:before{content:"";position:absolute;width:9px;height:9px;left:4px;top:-13px;background:#65eaff;border-radius:50%;box-shadow:0 0 9px #1fcfff}
.buddy-world.buddy-native-mode .buddy-eyes{top:29px;left:19px;right:19px}
.buddy-world.buddy-native-mode .buddy-status{bottom:72px}
.buddy-world.buddy-native-mode #buddy3d-status{top:auto!important;bottom:64px;right:12px;max-width:200px;opacity:.85}
@media(max-width:550px){.buddy-world.buddy-native-mode #buddyCharacter{bottom:79px;transform:translateX(-50%) scale(.98)}.buddy-world.buddy-native-mode .buddy-status{display:none}.buddy-world.buddy-native-mode #buddy3d-status{bottom:67px}}
@media(prefers-reduced-motion:reduce){.buddy-world.buddy-native-mode #buddyCharacter{animation:none}}
