/* Empire Desk — visible employee life states */
.campus-office .character:not(.is-walking).life-working svg{animation:lifeWork 3.4s ease-in-out infinite}
.campus-office .character:not(.is-walking).life-coffee svg{animation:lifeCoffee 1.8s ease-in-out infinite}
.campus-office .character:not(.is-walking).life-lunch svg{animation:lifeLunch 2.2s ease-in-out infinite}
.campus-office .character:not(.is-walking).life-department svg,.campus-office .character:not(.is-walking).life-meeting svg{animation:lifeDiscuss 1.55s ease-in-out infinite}
.campus-office .character:not(.is-walking).life-social svg{animation:lifeSocial 1.8s ease-in-out infinite}
.campus-office .character:not(.is-walking).life-stressed svg{animation:lifeStress 1.15s ease-in-out infinite}
.campus-office .character.life-arriving svg{animation:lifeArrive .72s cubic-bezier(.16,1,.3,1) both}
.campus-office .character.life-high-morale:not(.is-walking) svg{filter:drop-shadow(1px 2px 0 #ffffff18) saturate(1.08)}
.campus-office .character.life-high-stress:not(.is-walking){filter:drop-shadow(0 0 3px #bb6c5536)}
.campus-office .character.life-coffee:not(.is-walking)::after{content:"";position:absolute;right:-3px;top:29px;width:8px;height:7px;border:2px solid #e9dec3;border-top:0;border-radius:0 0 4px 4px;background:#9a6747;box-shadow:3px 0 0 -1px #e9dec3;pointer-events:none}
.campus-office .character.life-meeting:not(.is-walking)::after,.campus-office .character.life-department:not(.is-walking)::after{content:"";position:absolute;right:-5px;top:17px;width:7px;height:9px;background:#f6efd9;border:1px solid #766a53;transform:rotate(-8deg);pointer-events:none}
.campus-office .character.life-stressed:not(.is-walking)::after{content:"…";position:absolute;left:50%;top:-11px;transform:translateX(-50%);font:900 12px/1 system-ui;color:#815c52;background:#fff9e9;border:1px solid #baa99b;border-radius:8px;padding:1px 4px;pointer-events:none}
.campus-office .character.life-away{visibility:hidden!important;pointer-events:none!important}
@keyframes lifeWork{0%,100%{transform:translateY(0)}50%{transform:translateY(-1px)}}
@keyframes lifeCoffee{0%,100%{transform:rotate(0deg) translateY(0)}45%{transform:rotate(-2deg) translateY(-2px)}70%{transform:rotate(1deg) translateY(0)}}
@keyframes lifeLunch{0%,100%{transform:translateY(0)}45%{transform:translateY(-2px) scale(1.01)}}
@keyframes lifeDiscuss{0%,100%{transform:translateX(0)}45%{transform:translateX(2px)}70%{transform:translateX(-1px)}}
@keyframes lifeSocial{0%,100%{transform:rotate(0deg)}40%{transform:rotate(-1.5deg)}70%{transform:rotate(1.5deg)}}
@keyframes lifeStress{0%,100%{transform:translateY(0) rotate(0deg)}35%{transform:translateY(1px) rotate(-1deg)}70%{transform:translateY(0) rotate(1deg)}}
@keyframes lifeArrive{0%{opacity:.15;filter:blur(2px)}100%{opacity:1;filter:blur(0)}}
@media(prefers-reduced-motion:reduce){.campus-office .character[class*="life-"] svg{animation:none!important}}
