*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:#071022;color:#eef5ff}a{color:#79b8ff;text-decoration:none}button{border:0;border-radius:12px;padding:12px 18px;background:#397cff;color:white;font-weight:700;cursor:pointer}input,textarea,select{width:100%;padding:13px;border:1px solid #2b3c5f;border-radius:12px;background:#0d1930;color:white;outline:none}.center{min-height:100vh;display:grid;place-items:center;padding:20px}.card{background:#0e1a31;border:1px solid #21365b;border-radius:20px;padding:22px;box-shadow:0 18px 60px #0006}.login,.install{width:min(520px,95vw);text-align:center}.wide{width:min(760px,95vw)}.card input,.card textarea,.card select{margin:7px 0}.avatar-sm{width:130px;height:130px;object-fit:cover;border-radius:50%;border:3px solid #4c8cff}.ok{background:#103d2b;padding:10px;border-radius:10px}.err{background:#4b1821;padding:10px;border-radius:10px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.app{min-height:100vh;background:radial-gradient(circle at 50% 10%,#173d7d,#071022 50%);padding-bottom:30px}.app header{height:70px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff18}.app header small{display:block;color:#86a3c8}.stage{text-align:center;padding:25px 15px 10px}.portrait{width:min(330px,75vw);height:min(330px,75vw);margin:auto;border-radius:50%;position:relative;overflow:hidden;border:4px solid #5799ff;box-shadow:0 0 70px #307cff66}.portrait img{width:100%;height:100%;object-fit:cover;transition:.3s}.portrait.thinking img{transform:scale(1.015)}.portrait.talking{animation:talkglow .65s infinite alternate}.pulse{position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 45px #4f9cff44}.chat{width:min(850px,94vw);margin:auto}.messages{height:260px;overflow:auto;padding:15px;background:#07101dcc;border:1px solid #ffffff18;border-radius:20px}.bubble{max-width:78%;padding:12px 15px;border-radius:16px;margin:9px}.bubble.ai{background:#132744}.bubble.me{background:#2d6de0;margin-left:auto}.composer{display:grid;grid-template-columns:auto 1fr auto;gap:8px;margin-top:10px}.admin{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.admin nav{background:#0b172b;padding:25px;display:flex;flex-direction:column;gap:18px}.admin main,.panel{padding:35px;max-width:1200px;width:100%;margin:auto}.stats,.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:20px 0}.stats div{background:#0e1a31;border:1px solid #21365b;border-radius:18px;padding:25px}.stats b{display:block;font-size:34px}.stats span{color:#9ab0ce}.row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;align-items:center}.cards .card{display:flex;flex-direction:column;gap:5px}table{width:100%;border-collapse:collapse}td,th{padding:12px;border-bottom:1px solid #ffffff18;text-align:left}.back{display:block;margin-top:14px}@keyframes talkglow{to{box-shadow:0 0 100px #56a1ff}}@media(max-width:750px){.grid2,.stats,.cards,.row{grid-template-columns:1fr}.admin{grid-template-columns:1fr}.admin nav{flex-direction:row;overflow:auto}.admin main,.panel{padding:18px}.app header{font-size:13px}}

/* Luna Live Face v1.4 */
.portrait{transform-style:preserve-3d;transition:transform .22s ease}
.portrait img{will-change:transform,filter}
.eye{position:absolute;top:40%;width:8%;height:3.8%;border-radius:50%;background:#f4f1ea;overflow:hidden;opacity:.0;transition:opacity .25s}
.eye i{display:block;width:42%;height:90%;border-radius:50%;background:#38291f;position:absolute;left:29%;top:5%;transform:translate(var(--px,0),var(--py,0));transition:transform .08s}
.eye-left{left:31%}.eye-right{right:31%}
.portrait.live-eyes .eye{opacity:.18}
.portrait.blink .eye{transform:scaleY(.08)}
.mouth{position:absolute;left:43%;top:61%;width:14%;height:2%;border-radius:0 0 50% 50%;background:#5c1d2a;opacity:0;transform-origin:center top}
.portrait.talking .mouth{opacity:.28;animation:lips .18s infinite alternate}
.portrait.listening{animation:breathe 2.2s ease-in-out infinite}
.portrait.thinking img{filter:saturate(.94) brightness(.98)}
.portrait.talking img{animation:headtalk 2.8s ease-in-out infinite}
@keyframes lips{to{height:6%;transform:scaleX(.82)}}
@keyframes breathe{50%{transform:scale(1.012) translateY(-2px)}}
@keyframes headtalk{0%,100%{transform:scale(1.002) translateX(0)}50%{transform:scale(1.012) translateX(1px)}}


/* Luna v1.8 — vida em silêncio */
.portrait.idle-alive{
  animation:idleBreath 5.8s ease-in-out infinite;
  transform:rotateY(var(--look-x,0deg)) rotateX(var(--look-y,0deg));
}
.portrait.idle-alive img{animation:idlePresence 8s ease-in-out infinite}
.portrait.idle-smile img{filter:brightness(1.035) saturate(1.045)}
.portrait.idle-tilt-left{transform:rotate(-1.15deg) rotateY(var(--look-x,0deg)) rotateX(var(--look-y,0deg)) scale(1.006)}
.portrait.idle-tilt-right{transform:rotate(1.05deg) rotateY(var(--look-x,0deg)) rotateX(var(--look-y,0deg)) scale(1.006)}
.portrait.idle-soft img{transform:scale(1.012) translateY(-1px)}
.portrait.listening{animation:listenLife 2.4s ease-in-out infinite}
.portrait.thinking{animation:thinkLife 3.2s ease-in-out infinite}
.portrait.talking{animation:talkLife 2.7s ease-in-out infinite}
@keyframes idleBreath{0%,100%{scale:1}50%{scale:1.008}}
@keyframes idlePresence{0%,100%{transform:scale(1.002)}50%{transform:scale(1.012) translateY(-1px)}}
@keyframes listenLife{0%,100%{transform:scale(1)}50%{transform:scale(1.012) rotate(.25deg)}}
@keyframes thinkLife{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px) rotate(-.35deg)}}
@keyframes talkLife{0%,100%{transform:translateX(0)}50%{transform:translateX(1px) rotate(.25deg)}}


/* Luna v2.0 — rosto realista em camadas (foto nova) */
.portrait{--head-x:0px;--head-y:0px;--head-r:0deg;background:#17141a}
.portrait .luna-base,.portrait .luna-head,.portrait .lip-motion img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;max-width:none}
/* a cabeça é uma segunda camada, recortada: permite micro movimento sem arrastar cenário */
.face-motion{position:absolute;inset:0;pointer-events:none;clip-path:ellipse(25% 32% at 50% 43%);transform-origin:50% 57%;transform:translate(var(--head-x),var(--head-y)) rotate(var(--head-r));transition:transform .7s ease-in-out}
.luna-head{transform:scale(1.002)}
/* pálpebras discretas, posicionadas para a nova Luna */
.lid{position:absolute;top:39.1%;width:8.7%;height:0;border-radius:55% 55% 48% 48%;background:linear-gradient(#d6a183,#bd8068);opacity:0;transform-origin:50% 0;pointer-events:none;box-shadow:0 1px 2px #5d382f33}
.lid-left{left:38.0%;transform:rotate(-2deg)}.lid-right{left:53.0%;transform:rotate(2deg)}
.portrait.blink .lid{height:3.0%;opacity:.96;animation:naturalBlink .19s ease-in-out}
@keyframes naturalBlink{0%,100%{height:0;opacity:0}42%,62%{height:3.2%;opacity:.98}}
/* recorte dos lábios: somente a boca recebe a deformação durante a fala */
.lip-motion{position:absolute;left:43.4%;top:53.4%;width:13.2%;height:7.4%;overflow:hidden;border-radius:45%;opacity:0;pointer-events:none;transform-origin:50% 20%}
.lip-motion img{left:-329%;top:-722%;width:758%;height:1351%;object-fit:fill}
.portrait.talking .lip-motion{opacity:1;animation:realLip .16s ease-in-out infinite alternate}
@keyframes realLip{0%{transform:scaleY(.82) scaleX(1.01)}45%{transform:scaleY(1.14) scaleX(.98)}100%{transform:scaleY(1.34) scaleX(.94)}}
/* neutraliza animações antigas que mexiam a foto/círculo inteiro */
.portrait.idle-alive,.portrait.listening,.portrait.thinking,.portrait.talking{animation:none!important;transform:none!important;scale:1!important}
.portrait.idle-alive img,.portrait.talking img,.portrait.thinking img{animation:none!important;transform:none}
.portrait.talking{box-shadow:0 0 85px #56a1ff77}
.portrait.neck-left .face-motion{--head-x:-1.2px;--head-y:.5px;--head-r:-.65deg}
.portrait.neck-right .face-motion{--head-x:1.2px;--head-y:.5px;--head-r:.65deg}
.portrait.neck-down .face-motion{--head-x:0px;--head-y:1.2px;--head-r:0deg}
@media(max-width:520px){.lid{top:39.2%}.lip-motion{top:53.5%}}

/* Luna v2.1 — movimentos suaves e naturais */
/* Piscada curta e discreta: evita a faixa forte sobre os olhos */
.portrait.blink .lid{height:1.55%;opacity:.48;animation:lunaBlinkSoft .135s ease-in-out}
@keyframes lunaBlinkSoft{
  0%,100%{height:0;opacity:0;transform:scaleY(.15)}
  48%,58%{height:1.55%;opacity:.48;transform:scaleY(1)}
}
/* Boca: amplitude menor para não deformar o rosto */
.portrait.talking .lip-motion{opacity:.82;animation:lunaLipSoft .21s ease-in-out infinite alternate}
@keyframes lunaLipSoft{
  0%{transform:scaleY(.96) scaleX(1.002) translateY(0)}
  50%{transform:scaleY(1.055) scaleX(.992) translateY(.15px)}
  100%{transform:scaleY(1.105) scaleX(.982) translateY(.3px)}
}
/* Cabeça/pescoço: microgestos quase imperceptíveis */
.face-motion{transition:transform 1.25s cubic-bezier(.22,.61,.36,1)}
.portrait.neck-left .face-motion{--head-x:-.42px;--head-y:.15px;--head-r:-.22deg}
.portrait.neck-right .face-motion{--head-x:.42px;--head-y:.15px;--head-r:.22deg}
.portrait.neck-down .face-motion{--head-x:0px;--head-y:.42px;--head-r:0deg}


/* Luna v2.2 — cadência mais humana */
.portrait.blink .lid{height:2.35%;opacity:.62;animation:lunaBlinkSlow .52s cubic-bezier(.37,0,.63,1)}
@keyframes lunaBlinkSlow{0%{height:0;opacity:0;transform:scaleY(.05)}38%{height:2.35%;opacity:.62;transform:scaleY(1)}62%{height:2.35%;opacity:.62;transform:scaleY(1)}100%{height:0;opacity:0;transform:scaleY(.05)}}
.portrait.talking .lip-motion{opacity:.78;animation:lunaLipSlow .36s ease-in-out infinite alternate}
@keyframes lunaLipSlow{0%{transform:scaleY(.97) scaleX(1)}50%{transform:scaleY(1.04) scaleX(.995) translateY(.12px)}100%{transform:scaleY(1.085) scaleX(.987) translateY(.22px)}}
.face-motion{transition:transform 2.2s cubic-bezier(.22,.61,.36,1)}
.portrait.neck-left .face-motion{--head-x:-.30px;--head-y:.12px;--head-r:-.15deg}
.portrait.neck-right .face-motion{--head-x:.30px;--head-y:.12px;--head-r:.15deg}
.portrait.neck-down .face-motion{--head-x:0px;--head-y:.30px;--head-r:0deg}
.status-active{color:#71e6a2;font-weight:700}.status-blocked{color:#ff7b89;font-weight:700}.actions{display:flex;gap:6px;flex-wrap:wrap}.btn-danger{background:#b83449}.btn-success{background:#187d50}.btn-muted{background:#34445f}.notice{padding:12px 14px;border-radius:12px;margin:12px 0;background:#102d25;border:1px solid #1f654e}.money{font-variant-numeric:tabular-nums}
